Merge "Improved vibration feedback completely" into nyc-mr1-dev
diff --git a/core/java/android/animation/ObjectAnimator.java b/core/java/android/animation/ObjectAnimator.java
index 5c4b979..9a2aa30 100644
--- a/core/java/android/animation/ObjectAnimator.java
+++ b/core/java/android/animation/ObjectAnimator.java
@@ -977,7 +977,7 @@
     @Override
     void animateValue(float fraction) {
         final Object target = getTarget();
-        if (mTarget != null && target == null) {
+        if (target == null) {
             // We lost the target reference, cancel and clean up.
             cancel();
             return;
diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java
index 0c7ee2c..e3f8fa4 100644
--- a/core/java/android/animation/ValueAnimator.java
+++ b/core/java/android/animation/ValueAnimator.java
@@ -982,6 +982,7 @@
         mStarted = true;
         mPaused = false;
         mRunning = false;
+        mAnimationEndRequested = false;
         // Resets mLastFrameTime when start() is called, so that if the animation was running,
         // calling start() would put the animation in the
         // started-but-not-yet-reached-the-first-frame phase.
diff --git a/core/java/android/app/BackStackRecord.java b/core/java/android/app/BackStackRecord.java
index 1e2cc26..a8d332b 100644
--- a/core/java/android/app/BackStackRecord.java
+++ b/core/java/android/app/BackStackRecord.java
@@ -17,6 +17,7 @@
 package android.app;
 
 import android.graphics.Rect;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -852,7 +853,9 @@
              * Ensure that fragments that are entering are at least at the CREATED state
              * so that they may load Transitions using TransitionInflater.
              */
-            if (fragment.mState < Fragment.CREATED && mManager.mCurState >= Fragment.CREATED) {
+            if (fragment.mState < Fragment.CREATED && mManager.mCurState >= Fragment.CREATED &&
+                    mManager.mHost.getContext().getApplicationInfo().targetSdkVersion >=
+                    Build.VERSION_CODES.N) {
                 mManager.makeActive(fragment);
                 mManager.moveToState(fragment, Fragment.CREATED, 0, 0, false);
             }
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index d54ce4b..e411e03 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -662,9 +662,11 @@
     public void setRenderThread(int tid) throws RemoteException;
 
     /**
-     * Let's activity manager know whether the calling process is currently showing "top-level" UI
+     * Lets activity manager know whether the calling process is currently showing "top-level" UI
      * that is not an activity, i.e. windows on the screen the user is currently interacting with.
      *
+     * <p>This flag can only be set for persistent processes.
+     *
      * @param hasTopUi Whether the calling process has "top-level" UI.
      */
     public void setHasTopUi(boolean hasTopUi) throws RemoteException;
diff --git a/core/java/android/app/backup/WallpaperBackupHelper.java b/core/java/android/app/backup/WallpaperBackupHelper.java
index f256a95..f987468 100644
--- a/core/java/android/app/backup/WallpaperBackupHelper.java
+++ b/core/java/android/app/backup/WallpaperBackupHelper.java
@@ -42,7 +42,7 @@
     // If 'true', then apply an acceptable-size heuristic at restore time, dropping back
     // to the factory default wallpaper if the restored one differs "too much" from the
     // device's preferred wallpaper image dimensions.
-    private static final boolean REJECT_OUTSIZED_RESTORE = true;
+    private static final boolean REJECT_OUTSIZED_RESTORE = false;
 
     // When outsized restore rejection is enabled, this is the maximum ratio between the
     // source and target image heights that will be permitted.  The ratio is checked both
@@ -60,6 +60,9 @@
     public static final String WALLPAPER_IMAGE =
             new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM),
                     "wallpaper").getAbsolutePath();
+    public static final String WALLPAPER_ORIG_IMAGE =
+            new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM),
+                    "wallpaper_orig").getAbsolutePath();
     public static final String WALLPAPER_INFO =
             new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM),
                     "wallpaper_info.xml").getAbsolutePath();
@@ -199,7 +202,7 @@
             // since it does not exist anywhere other than the private wallpaper
             // file.
             Slog.d(TAG, "Applying restored wallpaper image.");
-            f.renameTo(new File(WALLPAPER_IMAGE));
+            f.renameTo(new File(WALLPAPER_ORIG_IMAGE));
         }
     }
 }
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 29b2230..6b23da9 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -165,15 +165,15 @@
         }
 
         /**
-         * Indicates that one or more shortcuts of any kinds (dynamic, pinned, or manifest)
+         * Indicates that one or more shortcuts of any kind (dynamic, pinned, or manifest)
          * have been added, updated or removed.
          *
          * <p>Only the applications that are allowed to access the shortcut information,
          * as defined in {@link #hasShortcutHostPermission()}, will receive it.
          *
          * @param packageName The name of the package that has the shortcuts.
-         * @param shortcuts all shortcuts from the package (dynamic, manifest and/or pinned) will
-         *    be passed. Only "key" information will be provided, as defined in
+         * @param shortcuts All shortcuts from the package (dynamic, manifest and/or pinned).
+         *    Only "key" information will be provided, as defined in
          *    {@link ShortcutInfo#hasKeyFieldsOnly()}.
          * @param user The UserHandle of the profile that generated the change.
          *
@@ -224,16 +224,19 @@
         public static final int FLAG_GET_ALL_KINDS = FLAG_MATCH_ALL_KINDS;
 
         /**
-         * Requests "key" fields only.  See {@link ShortcutInfo#hasKeyFieldsOnly()} for which
-         * fields are available.  This allows quicker access to shortcut information in order to
-         * determine in-memory cache in the caller needs to be updated.
+         * Requests "key" fields only.  See {@link ShortcutInfo#hasKeyFieldsOnly()}'s javadoc to
+         * see which fields fields "key".
+         * This allows quicker access to shortcut information in order to
+         * determine whether the caller's in-memory cache needs to be updated.
          *
-         * <p>Typically, launcher applications cache all or most shortcuts' information
-         * in memory in order to show shortcuts without a delay.  When they want to update their
-         * cache (e.g. when their process restart), they can fetch all shortcuts' information with
-         * with this flag, then check {@link ShortcutInfo#getLastChangedTimestamp()} for each
-         * shortcut and issue a second call to fetch the non-key information of only updated
-         * shortcuts.
+         * <p>Typically, launcher applications cache all or most shortcut information
+         * in memory in order to show shortcuts without a delay.
+         *
+         * When a given launcher application wants to update its cache, such as when its process
+         * restarts, it can fetch shortcut information with this flag.
+         * The application can then check {@link ShortcutInfo#getLastChangedTimestamp()} for each
+         * shortcut, fetching a shortcut's non-key information only if that shortcut has been
+         * updated.
          *
          * @see ShortcutManager
          */
@@ -268,8 +271,9 @@
         }
 
         /**
-         * If non-zero, returns only shortcuts that have been added or updated since the timestamp.
-         * Units are as per {@link System#currentTimeMillis()}.
+         * If non-zero, returns only shortcuts that have been added or updated
+         * since the given timestamp, expressed in milliseconds since the Epoch&mdash;see
+         * {@link System#currentTimeMillis()}.
          */
         public ShortcutQuery setChangedSince(long changedSince) {
             mChangedSince = changedSince;
@@ -304,13 +308,15 @@
         }
 
         /**
-         * Set query options.  At least one of the {@code MATCH} flags should be set.  (Otherwise
-         * no shortcuts will be returned.)
+         * Set query options.  At least one of the {@code MATCH} flags should be set.  Otherwise,
+         * no shortcuts will be returned.
          *
-         * @see {@link #FLAG_MATCH_DYNAMIC}
-         * @see {@link #FLAG_MATCH_PINNED}
-         * @see {@link #FLAG_MATCH_MANIFEST}
-         * @see {@link #FLAG_GET_KEY_FIELDS_ONLY}
+         * <ul>
+         *     <li>{@link #FLAG_MATCH_DYNAMIC}
+         *     <li>{@link #FLAG_MATCH_PINNED}
+         *     <li>{@link #FLAG_MATCH_MANIFEST}
+         *     <li>{@link #FLAG_GET_KEY_FIELDS_ONLY}
+         * </ul>
          */
         public ShortcutQuery setQueryFlags(@QueryFlags int queryFlags) {
             mQueryFlags = queryFlags;
@@ -483,8 +489,10 @@
      * the user is trying a new launcher application.  The user may decide to change the default
      * launcher back to the calling application again, so even if a launcher application loses
      * this permission, it does <b>not</b> have to purge pinned shortcut information.
-     * Also in this situation, pinned shortcuts can still be started, even though the caller
-     * no longer has the shortcut host permission.
+     * If the calling launcher application contains pinned shortcuts, they will still work,
+     * even though the caller no longer has the shortcut host permission.
+     *
+     * @throws IllegalStateException when the user is locked.
      *
      * @see ShortcutManager
      */
@@ -506,6 +514,8 @@
      * @param user The UserHandle of the profile.
      *
      * @return the IDs of {@link ShortcutInfo}s that match the query.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
      *
      * @see ShortcutManager
      */
@@ -542,12 +552,14 @@
      * <p>This API is <b>NOT</b> cumulative; this will replace all pinned shortcuts for the package.
      * However, different launchers may have different set of pinned shortcuts.
      *
-     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
-     * #hasShortcutHostPermission()}.
+     * <p>The calling launcher application must be allowed to access the shortcut information,
+     * as defined in {@link #hasShortcutHostPermission()}.
      *
      * @param packageName The target package name.
      * @param shortcutIds The IDs of the shortcut to be pinned.
      * @param user The UserHandle of the profile.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
      *
      * @see ShortcutManager
      */
@@ -613,13 +625,15 @@
     /**
      * Returns the icon for this shortcut, without any badging for the profile.
      *
-     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
-     * #hasShortcutHostPermission()}.
+     * <p>The calling launcher application must be allowed to access the shortcut information,
+     * as defined in {@link #hasShortcutHostPermission()}.
      *
      * @param density The preferred density of the icon, zero for default density. Use
      * density DPI values from {@link DisplayMetrics}.
      *
      * @return The drawable associated with the shortcut.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
      *
      * @see ShortcutManager
      * @see #getShortcutBadgedIconDrawable(ShortcutInfo, int)
@@ -661,14 +675,16 @@
     /**
      * Returns the shortcut icon with badging appropriate for the profile.
      *
-     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
-     * #hasShortcutHostPermission()}.
+     * <p>The calling launcher application must be allowed to access the shortcut information,
+     * as defined in {@link #hasShortcutHostPermission()}.
      *
      * @param density Optional density for the icon, or 0 to use the default density. Use
      * @return A badged icon for the shortcut.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
      *
      * @see ShortcutManager
-     * @see #getShortcutBadgedIconDrawable(ShortcutInfo, int)
+     * @see #getShortcutIconDrawable(ShortcutInfo, int)
      * @see DisplayMetrics
      */
     public Drawable getShortcutBadgedIconDrawable(ShortcutInfo shortcut, int density) {
@@ -681,14 +697,16 @@
     /**
      * Starts a shortcut.
      *
-     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
-     * #hasShortcutHostPermission()}.
+     * <p>The calling launcher application must be allowed to access the shortcut information,
+     * as defined in {@link #hasShortcutHostPermission()}.
      *
      * @param packageName The target shortcut package name.
      * @param shortcutId The target shortcut ID.
      * @param sourceBounds The Rect containing the source bounds of the clicked icon.
      * @param startActivityOptions Options to pass to startActivity.
      * @param user The UserHandle of the profile.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
      *
      * @throws android.content.ActivityNotFoundException failed to start shortcut. (e.g.
      * the shortcut no longer exists, is disabled, the intent receiver activity doesn't exist, etc)
@@ -703,12 +721,14 @@
     /**
      * Launches a shortcut.
      *
-     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
-     * #hasShortcutHostPermission()}.
+     * <p>The calling launcher application must be allowed to access the shortcut information,
+     * as defined in {@link #hasShortcutHostPermission()}.
      *
      * @param shortcut The target shortcut.
      * @param sourceBounds The Rect containing the source bounds of the clicked icon.
      * @param startActivityOptions Options to pass to startActivity.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
      *
      * @throws android.content.ActivityNotFoundException failed to start shortcut. (e.g.
      * the shortcut no longer exists, is disabled, the intent receiver activity doesn't exist, etc)
diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java
index 0d6a23b..ed0ac53 100644
--- a/core/java/android/content/pm/ShortcutInfo.java
+++ b/core/java/android/content/pm/ShortcutInfo.java
@@ -770,17 +770,21 @@
          * Sets the target activity.  A shortcut will be shown along with this activity's icon
          * on the launcher.
          *
-         * <p>This is a mandatory field when publishing a new shortcut with
-         * {@link ShortcutManager#addDynamicShortcuts(List)} or
-         * {@link ShortcutManager#setDynamicShortcuts(List)}.
-         *
+         * When selecting a target activity, keep the following in mind:
          * <ul>
-         * <li>Only "main" activities (ones with an intent filter for
-         * {@link Intent#ACTION_MAIN} and {@link Intent#CATEGORY_LAUNCHER}) can be target
+         * <li>All dynamic shortcuts must have a target activity.  When a shortcut with no target
+         * activity is published using
+         * {@link ShortcutManager#addDynamicShortcuts(List)} or
+         * {@link ShortcutManager#setDynamicShortcuts(List)},
+         * the first main activity defined in the application's <code>AndroidManifest.xml</code>
+         * file is used.
+         *
+         * <li>Only "main" activities&mdash;ones that define the {@link Intent#ACTION_MAIN}
+         * and {@link Intent#CATEGORY_LAUNCHER} intent filters&mdash;can be target
          * activities.
          *
-         * <li>By default, the first main activity defined in the application manifest will be
-         * the target.
+         * <li>By default, the first main activity defined in the application manifest is
+         * the target activity.
          *
          * <li>A target activity must belong to the publisher application.
          * </ul>
@@ -806,8 +810,8 @@
          * and will be ignored.
          *
          * <p>Only icons created with {@link Icon#createWithBitmap(Bitmap)} and
-         * {@link Icon#createWithResource} are supported.  Other types such as URI based icons
-         * are not supported.
+         * {@link Icon#createWithResource} are supported.
+         * Other types, such as URI-based icons, are not supported.
          *
          * @see LauncherApps#getShortcutIconDrawable(ShortcutInfo, int)
          * @see LauncherApps#getShortcutBadgedIconDrawable(ShortcutInfo, int)
@@ -836,9 +840,9 @@
          * {@link ShortcutManager#addDynamicShortcuts(List)} or
          * {@link ShortcutManager#setDynamicShortcuts(List)}.
          *
-         * <p>This field is intended for a concise description of a shortcut.
+         * <p>This field is intended to be a concise description of a shortcut.
          *
-         * <p>The recommended max length is 10 characters.
+         * <p>The recommended maximum length is 10 characters.
          *
          * @see ShortcutInfo#getShortLabel()
          */
@@ -866,7 +870,7 @@
          * <p>This field is intended to be more descriptive than the shortcut title.  The launcher
          * shows this instead of the short title when it has enough space.
          *
-         * <p>The recommend max length is 25 characters.
+         * <p>The recommend maximum length is 25 characters.
          *
          * @see ShortcutInfo#getLongLabel()
          */
@@ -913,7 +917,8 @@
         }
 
         /**
-         * Sets the message that should be shown when a shortcut is launched when disabled.
+         * Sets the message that should be shown when the user attempts to start a shortcut that
+         * is disabled.
          *
          * @see ShortcutInfo#getDisabledMessage()
          */
@@ -948,14 +953,12 @@
          * {@link ShortcutManager#addDynamicShortcuts(List)} or
          * {@link ShortcutManager#setDynamicShortcuts(List)}.
          *
-         * <p>A shortcut can launch any intent that the publisher application has a permission to
-         * launch -- for example, a shortcut can launch an unexported activity within the publisher
-         * application.
+         * <p>A shortcut can launch any intent that the publisher application has permission to
+         * launch.  For example, a shortcut can launch an unexported activity within the publisher
+         * application.  A shortcut intent doesn't have to point at the target activity.
          *
-         * <p>A shortcut intent doesn't have to point at the target activity.
-         *
-         * <p>{@code intent} can contain extras, but only values of the primitive types are
-         * supported so the system can persist them.
+         * <p>The given {@code intent} can contain extras, but these extras must contain values
+         * of primitive types in order for the system to persist these values.
          *
          * @see ShortcutInfo#getIntent()
          * @see #setIntents(Intent[])
@@ -1003,10 +1006,10 @@
         }
 
         /**
-         * Extras that application can set to any purposes.
+         * Extras that application can set for any purpose.
          *
-         * <p>Applications can store any meta-data of
-         * shortcuts in extras, and retrieve later from {@link ShortcutInfo#getExtras()}.
+         * <p>Applications can store arbitrary shortcut metadata in extras and retrieve the
+         * metadata later using {@link ShortcutInfo#getExtras()}.
          */
         @NonNull
         public Builder setExtras(@NonNull PersistableBundle extras) {
@@ -1026,9 +1029,9 @@
     /**
      * Returns the ID of a shortcut.
      *
-     * <p>Shortcut IDs are unique within each publisher application, and must be stable across
-     * devices to that shortcuts will still be valid when restored.  See {@link ShortcutManager}
-     * for details.
+     * <p>Shortcut IDs are unique within each publisher application and must be stable across
+     * devices so that shortcuts will still be valid when restored on a different device.
+     * See {@link ShortcutManager} for details.
      */
     @NonNull
     public String getId() {
@@ -1046,8 +1049,9 @@
     /**
      * Return the target activity.
      *
-     * <p>This has nothing to do with the activity that this shortcut will launch.  Launcher
-     * applications should show a shortcut along with the launcher icon for this activity.
+     * <p>This has nothing to do with the activity that this shortcut will launch.
+     * Launcher applications should show the launcher icon for the returned activity alongside
+     * this shortcut.
      *
      * @see Builder#setActivity
      */
@@ -1128,7 +1132,8 @@
     }
 
     /**
-     * Return the message that should be shown when a shortcut in disabled state is launched.
+     * Return the message that should be shown when the user attempts to start a shortcut
+     * that is disabled.
      *
      * @see Builder#setDisabledMessage(CharSequence)
      */
@@ -1143,7 +1148,7 @@
     }
 
     /**
-     * Return the categories.
+     * Return the shortcut's categories.
      *
      * @see Builder#setCategories(Set)
      */
@@ -1153,7 +1158,8 @@
     }
 
     /**
-     * Return the intent. If setIntents() was used, then return the last intent in the array.
+     * Returns the intent that is executed when the user selects this shortcut.
+     * If setIntents() was used, then return the last intent in the array.
      *
      * <p>Launcher applications <b>cannot</b> see the intent.  If a {@link ShortcutInfo} is
      * obtained via {@link LauncherApps}, then this method will always return null.
@@ -1283,7 +1289,7 @@
     }
 
     /**
-     * {@link UserHandle} on which the publisher created a shortcut.
+     * {@link UserHandle} on which the publisher created this shortcut.
      */
     public UserHandle getUserHandle() {
         return UserHandle.of(mUserId);
@@ -1333,7 +1339,7 @@
     }
 
     /**
-     * Return whether a shortcut is published AndroidManifest.xml or not.  If {@code true},
+     * Return whether a shortcut is published from AndroidManifest.xml or not.  If {@code true},
      * it's also {@link #isImmutable()}.
      *
      * <p>When an app is upgraded and a shortcut is no longer published from AndroidManifest.xml,
@@ -1441,11 +1447,11 @@
      *     <li>{@link #getUserHandle()}
      * </ul>
      *
-     * <p>{@link ShortcutInfo}s passed to
-     * {@link LauncherApps.Callback#onShortcutsChanged(String, List, UserHandle)}
-     * as well as returned by {@link LauncherApps#getShortcuts(ShortcutQuery, UserHandle)} with
-     * the {@link ShortcutQuery#FLAG_GET_KEY_FIELDS_ONLY} option will only have key information
-     * for performance reasons.
+     * <p>For performance reasons, shortcuts passed to
+     * {@link LauncherApps.Callback#onShortcutsChanged(String, List, UserHandle)} as well as those
+     * returned from {@link LauncherApps#getShortcuts(ShortcutQuery, UserHandle)}
+     * while using the {@link ShortcutQuery#FLAG_GET_KEY_FIELDS_ONLY} option contain only key
+     * information.
      */
     public boolean hasKeyFieldsOnly() {
         return hasFlags(FLAG_KEY_FIELDS_ONLY);
diff --git a/core/java/android/content/pm/ShortcutManager.java b/core/java/android/content/pm/ShortcutManager.java
index 8130271..cd248ea 100644
--- a/core/java/android/content/pm/ShortcutManager.java
+++ b/core/java/android/content/pm/ShortcutManager.java
@@ -31,35 +31,40 @@
 import java.util.List;
 
 /**
- * ShortcutManager manages "launcher shortcuts" (or simply "shortcuts").  Shortcuts provide users
- * with quick
- * ways to access activities other than the main activity from the launcher to users.  For example,
- * an email application may publish the "compose new email" action which will directly open the
- * compose activity.  The {@link ShortcutInfo} class represents shortcuts.
+ * The ShortcutManager manages "launcher shortcuts" (or simply "shortcuts").  Shortcuts provide
+ * users
+ * with quick access to activities other than an application's main activity in the currently-active
+ * launcher.  For example,
+ * an email application may publish the "compose new email" action, which will directly open the
+ * compose activity.  The {@link ShortcutInfo} class contains information about each of the
+ * shortcuts themselves.
  *
  * <h3>Dynamic Shortcuts and Manifest Shortcuts</h3>
  *
  * There are two ways to publish shortcuts: manifest shortcuts and dynamic shortcuts.
  *
  * <ul>
- * <li>Manifest shortcuts are declared in a resource XML which is referred to from
- * AndroidManifest.xml.  Manifest shortcuts are published when an application is installed,
- * and are updated when an application is upgraded with an updated XML file.
- * Manifest shortcuts are immutable and their
- * definitions (e.g. icons and labels) can not be changed dynamically (without upgrading the
- * publisher application).
+ * <li>Manifest shortcuts are declared in a resource
+ * XML, which is referenced in the publisher application's <code>AndroidManifest.xml</code> file.
+ * Manifest shortcuts are published when an application is installed,
+ * and the details of these shortcuts change when an application is upgraded with an updated XML
+ * file.
+ * Manifest shortcuts are immutable, and their
+ * definitions, such as icons and labels, cannot be changed dynamically without upgrading the
+ * publisher application.
  *
- * <li>Dynamic shortcuts are published at runtime with {@link ShortcutManager} APIs.
- * Applications can publish, update and remove dynamic shortcuts at runtime with certain limitations
- * described below.
+ * <li>Dynamic shortcuts are published at runtime using the {@link ShortcutManager} APIs.
+ * Applications can publish, update, and remove dynamic shortcuts at runtime.
  * </ul>
  *
- * <p>Only "main" activities (i.e. activities that handle the {@code MAIN} action and the
- * {@code LAUNCHER} category) can have shortcuts.  If an application has multiple main activities,
- * they will have different set of shortcuts.
+ * <p>Only "main" activities&mdash;activities that handle the {@code MAIN} action and the
+ * {@code LAUNCHER} category&mdash;can have shortcuts.
+ * If an application has multiple main activities, these activities will have different sets
+ * of shortcuts.
  *
- * <p>Dynamic shortcuts and manifest shortcuts are shown by launcher applications when the user
- * takes a certain action (e.g. long-press) on an application launcher icon.
+ * <p>Dynamic shortcuts and manifest shortcuts are shown in the currently active launcher when
+ * the user long-presses on an application launcher icon.  The actual gesture may be different
+ * depending on the launcher application.
  *
  * <p>Each launcher icon can have at most {@link #getMaxShortcutCountPerActivity()} number of
  * dynamic and manifest shortcuts combined.
@@ -68,69 +73,162 @@
  * <h3>Pinning Shortcuts</h3>
  *
  * Launcher applications allow users to "pin" shortcuts so they're easier to access.  Both manifest
- * and dynamic shortcuts can be pinned, to avoid user's confusion.
+ * and dynamic shortcuts can be pinned.
  * Pinned shortcuts <b>cannot</b> be removed by publisher
- * applications -- they are only removed when the publisher is uninstalled. (Or the user performs
- * "clear data" on the publisher application on the Settings application.)
+ * applications; they're removed only when the user removes them,
+ * when the publisher application is uninstalled, or when the
+ * user performs the "clear data" action on the publisher application from the device's Settings
+ * application.
  *
- * <p>Publisher can however "disable" pinned shortcuts so they cannot be launched.  See below
- * for details.
+ * <p>However, the publisher application can <em>disable</em> pinned shortcuts so they cannot be
+ * started.  See the following sections for details.
  *
  *
  * <h3>Updating and Disabling Shortcuts</h3>
  *
  * <p>When a dynamic shortcut is pinned, even when the publisher removes it as a dynamic shortcut,
- * the pinned shortcut will still be available and launchable.  This allows an application to have
- * more than {@link #getMaxShortcutCountPerActivity()} number of shortcuts -- for example, suppose
- * {@link #getMaxShortcutCountPerActivity()} is 5:
+ * the pinned shortcut will still be visible and launchable.  This allows an application to have
+ * more than {@link #getMaxShortcutCountPerActivity()} number of shortcuts.
+ *
+ * <p>For example, suppose {@link #getMaxShortcutCountPerActivity()} is 5:
  * <ul>
  *     <li>A chat application publishes 5 dynamic shortcuts for the 5 most recent
  *     conversations, "c1" - "c5".
  *
- *     <li>The user pins all of the 5 shortcuts.
+ *     <li>The user pins all 5 of the shortcuts.
  *
- *     <li>Later, the user has 3 newer conversations ("c6", "c7" and "c8"), so the application
- *     re-publishes dynamic shortcuts and now it has the dynamic shortcuts "c4", "c5", "c6", "c7"
- *     and "c8".  The publisher has to remove "c1", "c2" and "c3" because it can't have more than
+ *     <li>Later, the user has started 3 additional conversations ("c6", "c7", and "c8"),
+ *     so the publisher application
+ *     re-publishes its dynamic shortcuts.  The new dynamic shortcut list is:
+ *     "c4", "c5", "c6", "c7", and "c8".
+ *     The publisher application has to remove "c1", "c2", and "c3" because it can't have more than
  *     5 dynamic shortcuts.
  *
  *     <li>However, even though "c1", "c2" and "c3" are no longer dynamic shortcuts, the pinned
- *     shortcuts for those conversations are still available and launchable.
+ *     shortcuts for these conversations are still available and launchable.
  *
- *     <li>At this point, the application has 8 shortcuts in total, including the 3 pinned
+ *     <li>At this point, the user can access a total of 8 shortcuts that link to activities in
+ *     the publisher application, including the 3 pinned
  *     shortcuts, even though it's allowed to have at most 5 dynamic shortcuts.
  *
  *     <li>The application can use {@link #updateShortcuts(List)} to update any of the existing
  *     8 shortcuts, when, for example, the chat peers' icons have changed.
  * </ul>
- * {@link #addDynamicShortcuts(List)} and {@link #setDynamicShortcuts(List)} can also be used
- * to update existing shortcuts with the same IDs, but they <b>cannot</b> be used for
- * non-dynamic pinned shortcuts because these two APIs will always try to make the passed
- * shortcuts dynamic.
+ * The {@link #addDynamicShortcuts(List)} and {@link #setDynamicShortcuts(List)} methods
+ * can also be used
+ * to update existing shortcuts with the same IDs, but they <b>cannot</b> be used
+ * for updating non-dynamic, pinned shortcuts because these two methods try to convert the given
+ * lists of shortcuts to dynamic shortcuts.
  *
  *
  * <h4>Disabling Manifest Shortcuts</h4>
+ * When an application is upgraded and the new version
+ * no longer uses a manifest shortcut that appeared in the previous version, this deprecated
+ * shortcut will no longer be published as a manifest shortcut.
+ *
+ * <p>If the deprecated shortcut is pinned, then the pinned shortcut will remain on the launcher,
+ * but it will be disabled automatically.
+ * Note that, in this case, the pinned shortcut is no longer a manifest shortcut, but it's
+ * still <b>immutable</b> and cannot be updated using the {@link ShortcutManager} APIs.
+ *
+ *
+ * <h4>Disabling Dynamic Shortcuts</h4>
  * Sometimes pinned shortcuts become obsolete and may not be usable.  For example, a pinned shortcut
- * to a group chat will be unusable when the group chat room is deleted.  In cases like this,
+ * to a group chat will be unusable when the associated group chat is deleted.  In cases like this,
  * applications should use {@link #disableShortcuts(List)}, which will remove the specified dynamic
- * shortcuts and also make the pinned shortcuts un-launchable, if any.
- * {@link #disableShortcuts(List, CharSequence)} can also be used to disable shortcuts with
- * a custom error message that will be shown when the user starts the shortcut.
+ * shortcuts and also make any specified pinned shortcuts un-launchable.
+ * The {@link #disableShortcuts(List, CharSequence)} method can also be used to disabled shortcuts
+ * and show users a custom error message when they attempt to launch the disabled shortcuts.
  *
- * <h4>Disabling Manifest Shortcuts</h4>
- * When an application is upgraded and the new version no longer has a manifest shortcut that
- * the previous version had, this shortcut will no longer be published as a manifest shortcut.
  *
- * <p>If the shortcut is pinned, then the pinned shortcut will remain on the launcher, but will be
- * disabled.  Note in this case, the pinned shortcut is no longer a manifest shortcut, but is
- * still <b>immutable</b> and cannot be updated with the {@link ShortcutManager} APIs.
+ * <h3>Publishing Manifest Shortcuts</h3>
  *
+ * In order to add manifest shortcuts to your application, first add
+ * {@code <meta-data android:name="android.app.shortcuts" />} to your main activity in
+ * AndroidManifest.xml:
+ * <pre>
+ * &lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+ *   package=&quot;com.example.myapplication&quot;&gt;
+ *   &lt;application . . .&gt;
+ *     &lt;activity android:name=&quot;Main&quot;&gt;
+ *       &lt;intent-filter&gt;
+ *         &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
+ *         &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
+ *       &lt;/intent-filter&gt;
+ *       <b>&lt;meta-data android:name=&quot;android.app.shortcuts&quot; android:resource=&quot;@xml/shortcuts&quot;/&gt;</b>
+ *     &lt;/activity&gt;
+ *   &lt;/application&gt;
+ * &lt;/manifest&gt;
+ * </pre>
+ *
+ * Then, define your application's manifest shortcuts in the <code>res/xml/shortcuts.xml</code>
+ * file:
+ * <pre>
+ * &lt;shortcuts xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; &gt;
+ *   &lt;shortcut
+ *     android:shortcutId=&quot;compose&quot;
+ *     android:enabled=&quot;true&quot;
+ *     android:icon=&quot;@drawable/compose_icon&quot;
+ *     android:shortcutShortLabel=&quot;@string/compose_shortcut_short_label1&quot;
+ *     android:shortcutLongLabel=&quot;@string/compose_shortcut_long_label1&quot;
+ *     android:shortcutDisabledMessage=&quot;@string/compose_disabled_message1&quot;
+ *     &gt;
+ *     &lt;intent
+ *       android:action=&quot;android.intent.action.VIEW&quot;
+ *       android:targetPackage=&quot;com.example.myapplication&quot;
+ *       android:targetClass=&quot;com.example.myapplication.ComposeActivity&quot; /&gt;
+ *     &lt;!-- more intents can go here; see below --&gt;
+ *     &lt;categories android:name=&quot;android.shortcut.conversation&quot; /&gt;
+ *   &lt;/shortcut&gt;
+ *   &lt;!-- more shortcuts can go here --&gt;
+ * &lt;/shortcuts&gt;
+ * </pre>
+ *
+ * The following list includes descriptions for the different attributes within a manifest shortcut:
+ * <dl>
+ *   <dt>android:shortcutId</dt>
+ *   <dd>Mandatory shortcut ID</dd>
+ *
+ *   <dt>android:enabled</dt>
+ *   <dd>Default is {@code true}.  Can be set to {@code false} in order
+ *   to disable a manifest shortcut that was published in a previous version and and set a custom
+ *   disabled message.  If a custom disabled message is not needed, then a manifest shortcut can
+ *   be simply removed from the XML file rather than keeping it with {@code enabled="false"}.</dd>
+ *
+ *   <dt>android:icon</dt>
+ *   <dd>Shortcut icon.</dd>
+ *
+ *   <dt>android:shortcutShortLabel</dt>
+ *   <dd>Mandatory shortcut short label.
+ *   See {@link ShortcutInfo.Builder#setShortLabel(CharSequence)}.</dd>
+ *
+ *   <dt>android:shortcutLongLabel</dt>
+ *   <dd>Shortcut long label.
+ *   See {@link ShortcutInfo.Builder#setLongLabel(CharSequence)}.</dd>
+ *
+ *   <dt>android:shortcutDisabledMessage</dt>
+ *   <dd>When {@code android:enabled} is set to
+ *   {@code false}, this attribute is used to display a custom disabled message.</dd>
+ *
+ *   <dt>intent</dt>
+ *   <dd>Intent to launch when the user selects the shortcut.
+ *   {@code android:action} is mandatory.
+ *   See <a href="{@docRoot}guide/topics/ui/settings.html#Intents">Using intents</a> for the
+ *   other supported tags.
+ *   You can provide multiple intents for a single shortcut so that an activity is launched
+ *   with other activities in the back stack. See {@link android.app.TaskStackBuilder} for details.
+ *   </dd>
+ *   <dt>categories</dt>
+ *   <dd>Specify shortcut categories.  Currently only
+ *   {@link ShortcutInfo#SHORTCUT_CATEGORY_CONVERSATION} is defined in the framework.
+ *   </dd>
+ * </dl>
  *
  * <h3>Publishing Dynamic Shortcuts</h3>
  *
  * Applications can publish dynamic shortcuts with {@link #setDynamicShortcuts(List)}
- * or {@link #addDynamicShortcuts(List)}.  {@link #updateShortcuts(List)} can also be used to
- * update existing (mutable) shortcuts.
+ * or {@link #addDynamicShortcuts(List)}.  The {@link #updateShortcuts(List)} method can also be
+ * used to update existing, mutable shortcuts.
  * Use {@link #removeDynamicShortcuts(List)} or {@link #removeAllDynamicShortcuts()} to remove
  * dynamic shortcuts.
  *
@@ -149,152 +247,94 @@
  * </pre>
  *
  *
- * <h3>Publishing Manifest Shortcuts</h3>
- *
- * In order to add manifest shortcuts to your application, first add
- * {@code <meta-data android:name="android.app.shortcuts" />} to your main activity in
- * AndroidManifest.xml.
- * <pre>
- * &lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
- *   package=&quot;com.example.myapplication&quot;&gt;
- *   &lt;application . . .&gt;
- *     &lt;activity android:name=&quot;Main&quot;&gt;
- *       &lt;intent-filter&gt;
- *         &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
- *         &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
- *       &lt;/intent-filter&gt;
- *       <b>&lt;meta-data android:name=&quot;android.app.shortcuts&quot; android:resource=&quot;@xml/shortcuts&quot;/&gt;</b>
- *     &lt;/activity&gt;
- *   &lt;/application&gt;
- * &lt;/manifest&gt;
- * </pre>
- *
- * Then define shortcuts in res/xml/shortcuts.xml.
- * <pre>
- * &lt;shortcuts xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; &gt;
- *   &lt;shortcut
- *     android:shortcutId=&quot;compose&quot;
- *     android:enabled=&quot;true&quot;
- *     android:icon=&quot;@drawable/compose_icon&quot;
- *     android:shortcutShortLabel=&quot;@string/compose_shortcut_short_label1&quot;
- *     android:shortcutLongLabel=&quot;@string/compose_shortcut_short_label1&quot;
- *     android:shortcutDisabledMessage=&quot;@string/compose_disabled_message1&quot;
- *     &gt;
- *     &lt;intent
- *       android:action=&quot;android.intent.action.VIEW&quot;
- *       android:targetPackage=&quot;com.example.myapplication&quot;
- *       android:targetClass=&quot;com.example.myapplication.ComposeActivity&quot; /&gt;
- *     &lt;!-- more intents can go here; see below --&gt;
- *     &lt;categories android:name=&quot;android.shortcut.conversation&quot; /&gt;
- *   &lt;/shortcut&gt;
- *   &lt;!-- more shortcut can go here --&gt;
- * &lt;/shortcuts&gt;
- * </pre>
- * <ul>
- *   <li>{@code android:shortcutId} Mandatory shortcut ID
- *
- *   <li>{@code android:enabled} Default is {@code true}.  Can be set to {@code false} in order
- *   to disable a manifest shortcut that was published on a previous version with a custom
- *   disabled message.  If a custom disabled message is not needed, then a manifest shortcut can
- *   be simply removed from the xml file rather than keeping it with {@code enabled="false"}.
- *
- *   <li>{@code android:icon} Shortcut icon.
- *
- *   <li>{@code android:shortcutShortLabel} Mandatory shortcut short label.
- *   See {@link ShortcutInfo.Builder#setShortLabel(CharSequence)}
- *
- *   <li>{@code android:shortcutLongLabel} Shortcut long label.
- *   See {@link ShortcutInfo.Builder#setLongLabel(CharSequence)}
- *
- *   <li>{@code android:shortcutDisabledMessage} When {@code android:enabled} is set to
- *   {@code false}, this can be used to set a custom disabled message.
- *
- *   <li>{@code intent} Intent to launch.  {@code android:action} is mandatory.
- *   See <a href="{@docRoot}guide/topics/ui/settings.html#Intents">Using intents</a> for the
- *   other supported tags.  Multiple intents can be provided for a single shortcut, so that
- *   an activity will be launched with other activities in the back stack.
- *   See {@link android.app.TaskStackBuilder} for details.
- * </ul>
- *
  * <h3>Shortcut Intents</h3>
- * Dynamic shortcuts can be published with any {@link Intent#addFlags Intent flags}.  Typically,
- * {@link Intent#FLAG_ACTIVITY_CLEAR_TASK} is specified possibly with other flags; otherwise,
- * if the application is already running, the application is simply brought to the foreground
- * and the target activity may not show up.
+ * Dynamic shortcuts can be published with any set of {@link Intent#addFlags Intent} flags.
+ * Typically, {@link Intent#FLAG_ACTIVITY_CLEAR_TASK} is specified, possibly along with other
+ * flags; otherwise, if the application is already running, the application is simply brought to
+ * the foreground, and the target activity may not appear.
  *
- * <p>{@link ShortcutInfo.Builder#setIntents(Intent[])} can be used (instead of
- * {@link ShortcutInfo.Builder#setIntent(Intent)}) with
- * {@link android.app.TaskStackBuilder} in order to launch an activity with other activities
- * in the back stack, so that when the user presses the back key, a "parent" activity will be shown
- * instead of the user being navigated back to the launcher.
+ * <p>The {@link ShortcutInfo.Builder#setIntents(Intent[])} method can be used instead of
+ * {@link ShortcutInfo.Builder#setIntent(Intent)} with {@link android.app.TaskStackBuilder}
+ * in order to launch an activity with other activities in the back stack.
+ * When the user selects a shortcut to load an activity with a back stack,
+ * then presses the back key, a "parent" activity will be shown instead of the user being
+ * navigated back to the launcher.
  *
- * <p>Manifest shortcuts can have multiple intents too to achieve the same effect.  In order to
- * specify multiple {@link Intent}s to a shortcut, simply list multiple &lt;intent&gt;s within
- * a single &lt;shortcut&gt;.  The last intent is what the user will see when a shortcut is
- * launched.
+ * <p>Manifest shortcuts can also have multiple intents to achieve the same effect.
+ * In order to associate multiple {@link Intent} objects with a shortcut, simply list multiple
+ * <code>&lt;intent&gt;</code> elements within a single <code>&lt;shortcut&gt;</code> element.
+ * The last intent specifies what the user will see when they launch a shortcut.
  *
- * <p>Manifest shortcuts <b>cannot</b> have custom intent flags.  The first intent of a manifest
- * shortcut will always have {@link Intent#FLAG_ACTIVITY_NEW_TASK} and
- * {@link Intent#FLAG_ACTIVITY_CLEAR_TASK} set.  This means, when the application is already
- * running, all the existing activities will be destroyed when a manifest shortcut is launched.
- * If this behavior is not desirable, one can use a "trampoline" activity (an activity
- * that starts another activity in {@link Activity#onCreate} and then calls
- * {@link Activity#finish()}) with {@code android:taskAffinity=""} in AndroidManifest.xml and point
- * at this activity in a manifest shortcut's intent.
+ * <p>Manifest shortcuts <b>cannot</b> have custom intent flags.
+ * The first intent of a manifest shortcut will always have {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+ * and {@link Intent#FLAG_ACTIVITY_CLEAR_TASK} set.
+ * This means, when the application is already running, all the existing activities will be
+ * destroyed when a manifest shortcut is launched.
+ * If this behavior is not desirable, you can use a <em>trampoline activity</em>,
+ * or an invisible activity that starts another activity in {@link Activity#onCreate},
+ * then calls {@link Activity#finish()}.
+ * The first activity should include an attribute setting
+ * of {@code android:taskAffinity=""} in the application's <code>AndroidManifest.xml</code>
+ * file, and the intent within the manifest shortcut should point at this first activity.
  *
- * <h3>Updating Shortcuts v.s. Re-publishing New One with Different ID</h3>
- * In order to avoid users' confusion, {@link #updateShortcuts(List)} should not be used to update
- * a shortcut to something that is conceptually different.
+ *
+ * <h3>Showing New Information in a Shortcut</h3>
+ * In order to avoid confusion, you should not use {@link #updateShortcuts(List)} to update
+ * a shortcut so that it contains conceptually different information.
  *
  * <p>For example, a phone application may publish the most frequently called contact as a dynamic
- * shortcut.  Over the time, this contact may change, but when it changes the application should
- * publish a new contact with a different ID with either
+ * shortcut.  Over time, this contact may change; when it does, the application should
+ * represent the changed contact with a new shortcut that contains a different ID, using either
  * {@link #setDynamicShortcuts(List)} or {@link #addDynamicShortcuts(List)}, rather than updating
  * the existing shortcut with {@link #updateShortcuts(List)}.
+ * This is because when the shortcut is pinned, changing
+ * it to reference a different contact will likely confuse the user.
  *
- * This is because when the shortcut is pinned, changing it to a different contact
- * will likely confuse the user.
- *
- * <p>On the other hand, when the contact's information (e.g. the name or picture) has changed,
- * then the application should use {@link #updateShortcuts(List)} so that the pinned shortcut
- * will be updated too.
+ * <p>On the other hand, when the
+ * contact's information has changed, such as the name or picture, the application should
+ * use {@link #updateShortcuts(List)} so that the pinned shortcut is updated too.
  *
  *
  * <h3>Shortcut Display Order</h3>
- * When the launcher show the shortcuts for a launcher icon, the showing order should be the
- * following:
+ * When the launcher displays the shortcuts that are associated with a particular launcher icon,
+ * the shortcuts should appear in the following order:
  * <ul>
  *   <li>First show manifest shortcuts
- *   ({@link ShortcutInfo#isDeclaredInManifest()} is {@code true}),
- *   and then dynamic shortcuts ({@link ShortcutInfo#isDynamic()} is {@code true}).
- *   <li>Within each category, sort by {@link ShortcutInfo#getRank()}.
+ *   (if {@link ShortcutInfo#isDeclaredInManifest()} is {@code true}),
+ *   and then show dynamic shortcuts (if {@link ShortcutInfo#isDynamic()} is {@code true}).
+ *   <li>Within each category of shortcuts (manifest and dynamic), sort the shortcuts in order
+ *   of increasing rank according to {@link ShortcutInfo#getRank()}.
  * </ul>
- * <p>Shortcut ranks are non-negative sequential integers for each target activity.  Ranks of
- * existing shortcuts can be updated with
- * {@link #updateShortcuts(List)} ({@link #addDynamicShortcuts(List)} and
- * {@link #setDynamicShortcuts(List)} may be used too).
+ * <p>Shortcut ranks are non-negative sequential integers
+ * that determine the order in which shortcuts appear, assuming that the shortcuts are all in
+ * the same category.
+ * Ranks of existing shortcuts can be updated with
+ * {@link #updateShortcuts(List)}; you can use {@link #addDynamicShortcuts(List)} and
+ * {@link #setDynamicShortcuts(List)}, too.
  *
- * <p>Ranks will be auto-adjusted so that they're unique for each target activity for each category
+ * <p>Ranks are auto-adjusted so that they're unique for each target activity in each category
  * (dynamic or manifest).  For example, if there are 3 dynamic shortcuts with ranks 0, 1 and 2,
- * adding another dynamic shortcut with rank = 1 means to place this shortcut at the second
- * position.  The third and forth shortcuts (that were originally second and third) will be adjusted
- * to 2 and 3 respectively.
+ * adding another dynamic shortcut with a rank of 1 represents a request to place this shortcut at
+ * the second position.
+ * In response, the third and fourth shortcuts move closer to the bottom of the shortcut list,
+ * with their ranks changing to 2 and 3, respectively.
  *
  * <h3>Rate Limiting</h3>
  *
- * Calls to {@link #setDynamicShortcuts(List)}, {@link #addDynamicShortcuts(List)} and
- * {@link #updateShortcuts(List)} may be rate-limited when called by background applications (i.e.
- * applications with no foreground activity or service).  When rate-limited, these APIs will return
- * {@code false}.
+ * Calls to {@link #setDynamicShortcuts(List)}, {@link #addDynamicShortcuts(List)}, and
+ * {@link #updateShortcuts(List)} may be rate-limited when called by background applications, or
+ * applications with no foreground activity or service.  When you attempt to call these methods
+ * from a background application after exceeding the rate limit, these APIs return {@code false}.
  *
- * <p>Applications with a foreground activity or service will not be rate-limited.
+ * <p>Applications with a foreground activity or service are not rate-limited.
  *
  * <p>Rate-limiting will be reset upon certain events, so that even background applications
- * will be able to call these APIs again (until they are rate-limited again).
+ * can call these APIs again until they are rate limit is reached again.
+ * These events include the following:
  * <ul>
- *   <li>When an application comes to foreground.
+ *   <li>When an application comes to the foreground.
  *   <li>When the system locale changes.
- *   <li>When the user performs "inline reply" on a notification.
+ *   <li>When the user performs an "inline reply" action on a notification.
  * </ul>
  *
  * <p>When rate-limiting is active, {@link #isRateLimitingActive()} returns {@code true}.
@@ -302,43 +342,46 @@
  * <h4>Resetting rate-limiting for testing</h4>
  *
  * If your application is rate-limited during development or testing, you can use the
- * "Reset ShortcutManager rate-limiting" development option, or the following adb command to reset
- * it.
+ * "Reset ShortcutManager rate-limiting" development option or the following adb command to reset
+ * it:
  * <pre>
  * adb shell cmd shortcut reset-throttling [ --user USER-ID ]
  * </pre>
  *
- * <h3>Handling System Locale Change</h3>
+ * <h3>Handling System Locale Changes</h3>
  *
  * Applications should update dynamic and pinned shortcuts when the system locale changes
  * using the {@link Intent#ACTION_LOCALE_CHANGED} broadcast.
  *
- * <p>When the system locale changes, rate-limiting will be reset, so even background applications
- * what were previously rate-limited will be able to call {@link #updateShortcuts(List)}.
+ * <p>When the system locale changes, rate-limiting is reset, so even background applications
+ * can set dynamic shortcuts, add dynamic shortcuts, and update shortcuts until the rate limit
+ * is reached again.
  *
  *
  * <h3>Backup and Restore</h3>
  *
- * When an application has {@code android:allowBackup="true"} in its AndroidManifest.xml, pinned
- * shortcuts will be backed up automatically and restored when the user sets up a new device.
+ * When an application has the {@code android:allowBackup="true"} attribute assignment included
+ * in its <code>AndroidManifest.xml</code> file, pinned shortcuts are
+ * backed up automatically and are restored when the user sets up a new device.
  *
- * <h4>What will be backed up and what will not be backed up</h4>
+ * <h4>Categories of Shortcuts that are Backed Up</h4>
  *
  * <ul>
- *  <li>Pinned shortcuts will be backed up.  Bitmap icons will not be backed up by the system,
- *  but launcher applications should back them up and restore them, so the user will still get
- *  icons for pinned shortcuts on the launcher.  Applications can always use
+ *  <li>Pinned shortcuts are backed up.  Bitmap icons are not backed up by the system,
+ *  but launcher applications should back them up and restore them so that the user still sees icons
+ *  for pinned shortcuts on the launcher.  Applications can always use
  *  {@link #updateShortcuts(List)} to re-publish icons.
  *
- *  <li>Manifest shortcuts will not be backed up, but when an application is re-installed on a new
- *  device, they will be re-published from AndroidManifest.xml anyway.
+ *  <li>Manifest shortcuts are not backed up, but when an application is re-installed on a new
+ *  device, they are re-published from the <code>AndroidManifest.xml</code> file, anyway.
  *
- *  <li>Dynamic shortcuts will <b>not</b> be backed up.
+ *  <li>Dynamic shortcuts are <b>not</b> backed up.
  * </ul>
  *
- * <p>Because dynamic shortcuts will not restored, it is recommended that applications check
- * currently published dynamic shortcuts with {@link #getDynamicShortcuts()} when they start,
- * and re-publish dynamic shortcuts when necessary.
+ * <p>Because dynamic shortcuts are not restored, it is recommended that applications check
+ * currently-published dynamic shortcuts using {@link #getDynamicShortcuts()}
+ * each time they are launched, and they should re-publish
+ * dynamic shortcuts when necessary.
  *
  * <pre>
  * public class MainActivity extends Activity {
@@ -351,7 +394,7 @@
  *             // Application restored; re-publish dynamic shortcuts.
  *
  *             if (shortcutManager.getPinnedShortcuts().size() > 0) {
- *                 // Pinned shortcuts have been restored.  use updateShortcuts() to make sure
+ *                 // Pinned shortcuts have been restored.  Use updateShortcuts() to make sure
  *                 // they have up-to-date information.
  *             }
  *         }
@@ -364,30 +407,39 @@
  *
  * <h4>Backup/restore and shortcut IDs</h4>
  *
- * Because pinned shortcuts will be backed up and restored on new devices, shortcut IDs should be
- * meaningful across devices; that is, IDs should be either stable constant strings, or server-side
- * identifiers, rather than identifiers generated locally that may not make sense on other devices.
+ * Because pinned shortcuts are backed up and restored on new devices, shortcut IDs should be
+ * meaningful across devices; that is, IDs should contain either stable, constant strings
+ * or server-side identifiers,
+ * rather than identifiers generated locally that might not make sense on other devices.
  *
  *
  * <h3>Report Shortcut Usage and Prediction</h3>
  *
- * Launcher applications may be capable of predicting which shortcuts will most likely be used at
- * the moment with the shortcut usage history data.
+ * Launcher applications may be capable of predicting which shortcuts will most likely be
+ * used at a given time by examining the shortcut usage history data.
  *
- * <p>In order to provide launchers with such data, publisher applications should report which
- * shortcut is used with {@link #reportShortcutUsed(String)} when a shortcut is started,
+ * <p>In order to provide launchers with such data, publisher applications should
+ * report the shortcuts that are used with {@link #reportShortcutUsed(String)}
+ * when a shortcut is selected,
  * <b>or when an action equivalent to a shortcut is taken by the user even if it wasn't started
  * with the shortcut</b>.
  *
- * <p>For example, suppose a GPS navigation application exposes "navigate to work" as a shortcut.
- * Then it should report it when the user starts this shortcut, and also when the user navigates
- * to work within the application without using the shortcut.  This helps the launcher application
- * learn that the user wants to navigate to work at a certain time every weekday, so that the
- * launcher can show this shortcut in a suggestion list.
+ * <p>For example, suppose a GPS navigation application supports "navigate to work" as a shortcut.
+ * It should then report when the user selects this shortcut <b>and</b> when the user chooses
+ * to navigate to work within the application itself.
+ * This helps the launcher application
+ * learn that the user wants to navigate to work at a certain time every
+ * weekday, and it can then show this shortcut in a suggestion list at the right time.
  *
  * <h3>Launcher API</h3>
  *
- * {@link LauncherApps} provides APIs for launcher applications to access shortcuts.
+ * The {@link LauncherApps} class provides APIs for launcher applications to access shortcuts.
+ *
+ *
+ * <h3>Direct Boot and Shortcuts</h3>
+ *
+ * All shortcut information is stored in credential encrypted storage, so no shortcuts can be
+ * accessed when the user is locked.
  */
 public class ShortcutManager {
     private static final String TAG = "ShortcutManager";
@@ -413,16 +465,18 @@
     }
 
     /**
-     * Publish a list of shortcuts.  All existing dynamic shortcuts from the caller application
-     * will be replaced.  If there's already pinned shortcuts with the same IDs, they will all be
-     * updated, unless they're immutable.
+     * Publish the list of shortcuts.  All existing dynamic shortcuts from the caller application
+     * will be replaced.  If there are already pinned shortcuts with the same IDs,
+     * the mutable pinned shortcuts are updated.
      *
      * <p>This API will be rate-limited.
      *
      * @return {@code true} if the call has succeeded. {@code false} if the call is rate-limited.
      *
      * @throws IllegalArgumentException if {@link #getMaxShortcutCountPerActivity()} is exceeded,
-     * or trying to update immutable shortcuts.
+     * or when trying to update immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public boolean setDynamicShortcuts(@NonNull List<ShortcutInfo> shortcutInfoList) {
         try {
@@ -435,6 +489,8 @@
 
     /**
      * Return all dynamic shortcuts from the caller application.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     @NonNull
     public List<ShortcutInfo> getDynamicShortcuts() {
@@ -448,6 +504,8 @@
 
     /**
      * Return all manifest shortcuts from the caller application.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     @NonNull
     public List<ShortcutInfo> getManifestShortcuts() {
@@ -460,15 +518,17 @@
     }
 
     /**
-     * Publish list of dynamic shortcuts.  If there's already dynamic or pinned shortcuts with
-     * the same IDs, they will all be updated, unless they're immutable.
+     * Publish the list of dynamic shortcuts.  If there are already dynamic or pinned shortcuts with
+     * the same IDs, each mutable shortcut is updated.
      *
      * <p>This API will be rate-limited.
      *
      * @return {@code true} if the call has succeeded. {@code false} if the call is rate-limited.
      *
      * @throws IllegalArgumentException if {@link #getMaxShortcutCountPerActivity()} is exceeded,
-     * or trying to update immutable shortcuts.
+     * or when trying to update immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public boolean addDynamicShortcuts(@NonNull List<ShortcutInfo> shortcutInfoList) {
         try {
@@ -481,6 +541,8 @@
 
     /**
      * Delete dynamic shortcuts by ID.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public void removeDynamicShortcuts(@NonNull List<String> shortcutIds) {
         try {
@@ -493,6 +555,8 @@
 
     /**
      * Delete all dynamic shortcuts from the caller application.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public void removeAllDynamicShortcuts() {
         try {
@@ -504,6 +568,8 @@
 
     /**
      * Return all pinned shortcuts from the caller application.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     @NonNull
     public List<ShortcutInfo> getPinnedShortcuts() {
@@ -517,13 +583,15 @@
 
     /**
      * Update all existing shortcuts with the same IDs.  Target shortcuts may be pinned and/or
-     * dynamic, but may not be immutable.
+     * dynamic, but they must not be immutable.
      *
      * <p>This API will be rate-limited.
      *
      * @return {@code true} if the call has succeeded. {@code false} if the call is rate-limited.
      *
-     * @throws IllegalArgumentException if trying to update immutable shortcuts.
+     * @throws IllegalArgumentException If trying to update immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public boolean updateShortcuts(List<ShortcutInfo> shortcutInfoList) {
         try {
@@ -535,7 +603,12 @@
     }
 
     /**
-     * Disable pinned shortcuts.  See {@link ShortcutManager}'s class javadoc for details.
+     * Disable pinned shortcuts.  For more details, see the Javadoc for the {@link ShortcutManager}
+     * class.
+     *
+     * @throws IllegalArgumentException If trying to disable immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public void disableShortcuts(@NonNull List<String> shortcutIds) {
         try {
@@ -568,8 +641,13 @@
     }
 
     /**
-     * Disable pinned shortcuts with a custom error message.
-     * See {@link ShortcutManager}'s class javadoc for details.
+     * Disable pinned shortcuts, showing the user a custom error message when they try to select
+     * the disabled shortcuts.
+     * For more details, see the Javadoc for the {@link ShortcutManager} class.
+     *
+     * @throws IllegalArgumentException If trying to disable immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public void disableShortcuts(@NonNull List<String> shortcutIds, CharSequence disabledMessage) {
         try {
@@ -582,7 +660,12 @@
     }
 
     /**
-     * Re-enable disabled pinned shortcuts.
+     * Re-enable pinned shortcuts that were previously disabled.  If the target shortcuts
+     * already enabled, this method does nothing.
+     *
+     * @throws IllegalArgumentException If trying to enable immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public void enableShortcuts(@NonNull List<String> shortcutIds) {
         try {
@@ -601,7 +684,7 @@
     }
 
     /**
-     * Return the max number of dynamic and manifest shortcuts that each launcher icon
+     * Return the maximum number of dynamic and manifest shortcuts that each launcher icon
      * can have at a time.
      */
     public int getMaxShortcutCountPerActivity() {
@@ -649,6 +732,8 @@
      * Return {@code true} when rate-limiting is active for the caller application.
      *
      * <p>See the class level javadoc for details.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public boolean isRateLimitingActive() {
         try {
@@ -684,13 +769,16 @@
     }
 
     /**
-     * Applications that publish shortcuts should call this method whenever a shortcut is started
-     * or an action equivalent to a shortcut is taken.  See the {@link ShortcutManager} class
-     * javadoc for details.
+     * Applications that publish shortcuts should call this method
+     * whenever the user selects the shortcut containing the given ID or when the user completes
+     * an action in the application that is equivalent to selecting the shortcut.
+     * For more details, see the Javadoc for the {@link ShortcutManager} class
      *
      * <p>The information is accessible via {@link UsageStatsManager#queryEvents}
      * Typically, launcher applications use this information to build a prediction model
      * so that they can promote the shortcuts that are likely to be used at the moment.
+     *
+     * @throws IllegalStateException when the user is locked.
      */
     public void reportShortcutUsed(String shortcutId) {
         try {
diff --git a/core/java/android/net/ConnectivityMetricsLogger.java b/core/java/android/net/ConnectivityMetricsLogger.java
index 029c5bd..9a2d4e0 100644
--- a/core/java/android/net/ConnectivityMetricsLogger.java
+++ b/core/java/android/net/ConnectivityMetricsLogger.java
@@ -46,11 +46,12 @@
 
     public static final String DATA_KEY_EVENTS_COUNT = "count";
 
-    /** {@hide} */ protected final IConnectivityMetricsLogger mService;
+    /** {@hide} */ protected IConnectivityMetricsLogger mService;
     /** {@hide} */ protected volatile long mServiceUnblockedTimestampMillis;
     private int mNumSkippedEvents;
 
     public ConnectivityMetricsLogger() {
+        // TODO: consider not initializing mService in constructor
         this(IConnectivityMetricsLogger.Stub.asInterface(
                 ServiceManager.getService(CONNECTIVITY_METRICS_LOGGER_SERVICE)));
     }
@@ -61,6 +62,18 @@
         mService = service;
     }
 
+    /** {@hide} */
+    protected boolean checkLoggerService() {
+        if (mService != null) {
+            return true;
+        }
+        // Two threads racing here will write the same pointer because getService
+        // is idempotent once MetricsLoggerService is initialized.
+        mService = IConnectivityMetricsLogger.Stub.asInterface(
+                ServiceManager.getService(CONNECTIVITY_METRICS_LOGGER_SERVICE));
+        return mService != null;
+    }
+
     /**
      * Log a ConnectivityMetricsEvent.
      *
@@ -96,6 +109,12 @@
             // Log number of skipped events
             Bundle b = new Bundle();
             b.putInt(DATA_KEY_EVENTS_COUNT, mNumSkippedEvents);
+
+            // Log the skipped event.
+            // TODO: Note that some of the clients push all states events into the server,
+            // If we lose some states logged here, we might mess up the statistics happened at the
+            // backend. One of the options is to introduce a non-skippable flag for important events
+            // that are logged.
             skippedEventsEvent = new ConnectivityMetricsEvent(mServiceUnblockedTimestampMillis,
                     componentTag, TAG_SKIPPED_EVENTS, b);
 
diff --git a/core/java/android/net/metrics/IpConnectivityLog.java b/core/java/android/net/metrics/IpConnectivityLog.java
index a7c1d40..dd7bd1b 100644
--- a/core/java/android/net/metrics/IpConnectivityLog.java
+++ b/core/java/android/net/metrics/IpConnectivityLog.java
@@ -31,7 +31,7 @@
  */
 public class IpConnectivityLog extends ConnectivityMetricsLogger {
     private static String TAG = "IpConnectivityMetricsLogger";
-    private static final boolean DBG = false;
+    private static final boolean DBG = true;
 
     public IpConnectivityLog() {
         // mService initialized in super constructor.
@@ -52,9 +52,9 @@
      * @return true if the event was successfully logged.
      */
     public boolean log(long timestamp, Parcelable data) {
-        if (mService == null) {
+        if (!checkLoggerService()) {
             if (DBG) {
-                Log.d(TAG, CONNECTIVITY_METRICS_LOGGER_SERVICE + " service not ready");
+                Log.d(TAG, CONNECTIVITY_METRICS_LOGGER_SERVICE + " service was not ready");
             }
             return false;
         }
diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java
index b58ff1f..d299672 100644
--- a/core/java/android/os/Looper.java
+++ b/core/java/android/os/Looper.java
@@ -147,7 +147,7 @@
             }
 
             final long traceTag = me.mTraceTag;
-            if (traceTag != 0) {
+            if (traceTag != 0 && Trace.isTagEnabled(traceTag)) {
                 Trace.traceBegin(traceTag, msg.target.getTraceName(msg));
             }
             try {
diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java
index d4a3582..73fa01e 100644
--- a/core/java/android/preference/PreferenceFragment.java
+++ b/core/java/android/preference/PreferenceFragment.java
@@ -27,12 +27,14 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnKeyListener;
 import android.view.ViewGroup;
 import android.widget.ListView;
+import android.widget.TextView;
 
 /**
  * Shows a hierarchy of {@link Preference} objects as
@@ -366,6 +368,20 @@
     private void bindPreferences() {
         final PreferenceScreen preferenceScreen = getPreferenceScreen();
         if (preferenceScreen != null) {
+            View root = getView();
+            if (root != null) {
+                View titleView = root.findViewById(android.R.id.title);
+                if (titleView instanceof TextView) {
+                    CharSequence title = preferenceScreen.getTitle();
+                    if (TextUtils.isEmpty(title)) {
+                        titleView.setVisibility(View.GONE);
+                    } else {
+                        ((TextView) titleView).setText(title);
+                        titleView.setVisibility(View.VISIBLE);
+                    }
+                }
+            }
+
             preferenceScreen.bind(getListView());
         }
         onBindPreferences();
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java
index b1317e6..2305b05 100644
--- a/core/java/android/preference/PreferenceScreen.java
+++ b/core/java/android/preference/PreferenceScreen.java
@@ -19,6 +19,8 @@
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -31,6 +33,7 @@
 import android.widget.AdapterView;
 import android.widget.ListAdapter;
 import android.widget.ListView;
+import android.widget.TextView;
 
 /**
  * Represents a top-level {@link Preference} that
@@ -91,13 +94,33 @@
     private Dialog mDialog;
 
     private ListView mListView;
-    
+
+    private int mLayoutResId = com.android.internal.R.layout.preference_list_fragment;
+    private Drawable mDividerDrawable;
+    private boolean mDividerSpecified;
+
     /**
      * Do NOT use this constructor, use {@link PreferenceManager#createPreferenceScreen(Context)}.
      * @hide-
      */
     public PreferenceScreen(Context context, AttributeSet attrs) {
         super(context, attrs, com.android.internal.R.attr.preferenceScreenStyle);
+
+        TypedArray a = context.obtainStyledAttributes(null,
+                com.android.internal.R.styleable.PreferenceScreen,
+                com.android.internal.R.attr.preferenceScreenStyle,
+                0);
+
+        mLayoutResId = a.getResourceId(
+                com.android.internal.R.styleable.PreferenceScreen_screenLayout,
+                mLayoutResId);
+        if (a.hasValueOrEmpty(com.android.internal.R.styleable.PreferenceScreen_divider)) {
+            mDividerDrawable =
+                    a.getDrawable(com.android.internal.R.styleable.PreferenceScreen_divider);
+            mDividerSpecified = true;
+        }
+
+        a.recycle();
     }
 
     /**
@@ -163,18 +186,30 @@
 
         LayoutInflater inflater = (LayoutInflater)
                 context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        View childPrefScreen = inflater.inflate(
-                com.android.internal.R.layout.preference_list_fragment, null);
+        View childPrefScreen = inflater.inflate(mLayoutResId, null);
+        View titleView = childPrefScreen.findViewById(android.R.id.title);
         mListView = (ListView) childPrefScreen.findViewById(android.R.id.list);
+        if (mDividerSpecified) {
+            mListView.setDivider(mDividerDrawable);
+        }
+
         bind(mListView);
 
         // Set the title bar if title is available, else no title bar
         final CharSequence title = getTitle();
         Dialog dialog = mDialog = new Dialog(context, context.getThemeResId());
         if (TextUtils.isEmpty(title)) {
+            if (titleView != null) {
+                titleView.setVisibility(View.GONE);
+            }
             dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
         } else {
-            dialog.setTitle(title);
+            if (titleView instanceof TextView) {
+                ((TextView) titleView).setText(title);
+                titleView.setVisibility(View.VISIBLE);
+            } else {
+                dialog.setTitle(title);
+            }
         }
         dialog.setContentView(childPrefScreen);
         dialog.setOnDismissListener(this);
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index da09922..5da55b1 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6230,6 +6230,20 @@
         public static final int VR_DISPLAY_MODE_OFF = 1;
 
         /**
+         * Whether CarrierAppUtils#disableCarrierAppsUntilPrivileged has been executed at least
+         * once.
+         *
+         * <p>This is used to ensure that we only take one pass which will disable apps that are not
+         * privileged (if any). From then on, we only want to enable apps (when a matching SIM is
+         * inserted), to avoid disabling an app that the user might actively be using.
+         *
+         * <p>Will be set to 1 once executed.
+         *
+         * @hide
+         */
+        public static final String CARRIER_APPS_HANDLED = "carrier_apps_handled";
+
+        /**
          * Whether parent user can access remote contact in managed profile.
          *
          * @hide
@@ -6285,6 +6299,12 @@
         public static final String SYSTEM_NAVIGATION_KEYS_ENABLED =
                 "system_navigation_keys_enabled";
 
+        /**
+         * Whether preloaded APKs have been installed for the user.
+         * @hide
+         */
+        public static final String DEMO_USER_SETUP_COMPLETE
+                = "demo_user_setup_complete";
 
         /**
          * This are the settings to be backed up.
diff --git a/core/java/android/text/SpannableStringInternal.java b/core/java/android/text/SpannableStringInternal.java
index 47e71be..4b02df86 100644
--- a/core/java/android/text/SpannableStringInternal.java
+++ b/core/java/android/text/SpannableStringInternal.java
@@ -33,6 +33,7 @@
             mText = source.toString().substring(start, end);
 
         mSpans = EmptyArray.OBJECT;
+        // Invariant: mSpanData.length = mSpans.length * COLUMNS
         mSpanData = EmptyArray.INT;
 
         if (source instanceof Spanned) {
@@ -99,7 +100,7 @@
             Object[] srcSpans = src.mSpans;
             mSpanCount = count;
             mSpans = ArrayUtils.newUnpaddedObjectArray(mSpanCount);
-            mSpanData = new int[mSpanCount * COLUMNS];
+            mSpanData = new int[mSpans.length * COLUMNS];
             for (int i = 0, j = 0; i < limit; i++) {
                 int spanStart = srcData[i * COLUMNS + START];
                 int spanEnd = srcData[i * COLUMNS + END];
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 899ae49..85a4bf9 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -1227,6 +1227,33 @@
             return mMinLuminance;
         }
 
+        @Override
+        public boolean equals(Object other) {
+            if (this == other) {
+                return true;
+            }
+
+            if (!(other instanceof HdrCapabilities)) {
+                return false;
+            }
+            HdrCapabilities that = (HdrCapabilities) other;
+
+            return Arrays.equals(mSupportedHdrTypes, that.mSupportedHdrTypes)
+                && mMaxLuminance == that.mMaxLuminance
+                && mMaxAverageLuminance == that.mMaxAverageLuminance
+                && mMinLuminance == that.mMinLuminance;
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 23;
+            hash = hash * 17 + Arrays.hashCode(mSupportedHdrTypes);
+            hash = hash * 17 + Float.floatToIntBits(mMaxLuminance);
+            hash = hash * 17 + Float.floatToIntBits(mMaxAverageLuminance);
+            hash = hash * 17 + Float.floatToIntBits(mMinLuminance);
+            return hash;
+        }
+
         public static final Creator<HdrCapabilities> CREATOR = new Creator<HdrCapabilities>() {
             @Override
             public HdrCapabilities createFromParcel(Parcel source) {
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index 49c3c46..bc40849 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -289,7 +289,7 @@
                 && modeId == other.modeId
                 && defaultModeId == other.defaultModeId
                 && colorMode == other.colorMode
-                && Objects.equal(supportedColorModes, other.supportedColorModes)
+                && Arrays.equals(supportedColorModes, other.supportedColorModes)
                 && Objects.equal(hdrCapabilities, other.hdrCapabilities)
                 && logicalDensityDpi == other.logicalDensityDpi
                 && physicalXDpi == other.physicalXDpi
diff --git a/core/java/android/view/FrameMetrics.java b/core/java/android/view/FrameMetrics.java
index 5c4450a..2b938d0 100644
--- a/core/java/android/view/FrameMetrics.java
+++ b/core/java/android/view/FrameMetrics.java
@@ -198,7 +198,7 @@
         int SWAP_BUFFERS = 12;
         int FRAME_COMPLETED = 13;
 
-        int FRAME_STATS_COUNT = 14; // must always be last
+        int FRAME_STATS_COUNT = 16; // must always be last
     }
 
     /*
diff --git a/core/java/android/view/RoundScrollbarRenderer.java b/core/java/android/view/RoundScrollbarRenderer.java
index f258458..b77be8c 100644
--- a/core/java/android/view/RoundScrollbarRenderer.java
+++ b/core/java/android/view/RoundScrollbarRenderer.java
@@ -20,6 +20,7 @@
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.RectF;
+import android.graphics.Rect;
 
 /**
  * Helper class for drawing round scroll bars on round Wear devices.
@@ -53,7 +54,7 @@
         mParent = parent;
     }
 
-    public void drawRoundScrollbars(Canvas canvas, float alpha) {
+    public void drawRoundScrollbars(Canvas canvas, float alpha, Rect bounds) {
         if (alpha == 0) {
             return;
         }
@@ -83,10 +84,11 @@
 
         // Draw the track and the scroll bar.
         mRect.set(
-                0 + thumbWidth / 2,
-                0 + thumbWidth / 2,
-                mParent.getWidth() - thumbWidth / 2,
-                mParent.getHeight() - thumbWidth / 2);
+                bounds.left - thumbWidth / 2,
+                bounds.top,
+                bounds.right - thumbWidth / 2,
+                bounds.bottom);
+
         canvas.drawArc(mRect, -SCROLLBAR_ANGLE_RANGE / 2, SCROLLBAR_ANGLE_RANGE, false,
                 mTrackPaint);
         canvas.drawArc(mRect, startAngle, sweepAngle, false, mThumbPaint);
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index 1a712c3..b2e2505 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -355,17 +355,6 @@
         }
     }
 
-    /**
-     * @hide
-     */
-    @Override
-    protected void destroyHardwareResources() {
-        super.destroyHardwareResources();
-        destroySurface();
-        invalidateParentCaches();
-        invalidate(true);
-    }
-
     HardwareLayer getHardwareLayer() {
         if (mLayer == null) {
             if (mAttachInfo == null || mAttachInfo.mHardwareRenderer == null) {
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 1fa1820..0cdf5e1 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -821,6 +821,17 @@
     static boolean sTextureViewIgnoresDrawableSetters = false;
 
     /**
+     * Prior to N, some ViewGroups would not convert LayoutParams properly even though both extend
+     * MarginLayoutParams. For instance, converting LinearLayout.LayoutParams to
+     * RelativeLayout.LayoutParams would lose margin information. This is fixed on N but target API
+     * check is implemented for backwards compatibility.
+     *
+     * {@hide}
+     */
+    protected static boolean sPreserveMarginParamsInLayoutParamConversion;
+
+
+    /**
      * This view does not want keystrokes. Use with TAKES_FOCUS_MASK when
      * calling setFlags.
      */
@@ -4052,6 +4063,10 @@
             // On N+, we throw, but that breaks compatibility with apps that use these methods.
             sTextureViewIgnoresDrawableSetters = targetSdkVersion <= M;
 
+            // Prior to N, we would drop margins in LayoutParam conversions. The fix triggers bugs
+            // in apps so we target check it to avoid breaking existing apps.
+            sPreserveMarginParamsInLayoutParamConversion = targetSdkVersion >= N;
+
             sCompatibilityDone = true;
         }
     }
@@ -12359,6 +12374,10 @@
     public void setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) {
         ensureTransformationInfo();
         if (mTransformationInfo.mAlpha != alpha) {
+            // Report visibility changes, which can affect children, to accessibility
+            if ((alpha == 0) ^ (mTransformationInfo.mAlpha == 0)) {
+                notifySubtreeAccessibilityStateChangedIfNeeded();
+            }
             mTransformationInfo.mAlpha = alpha;
             if (onSetAlpha((int) (alpha * 255))) {
                 mPrivateFlags |= PFLAG_ALPHA_SET;
@@ -12369,8 +12388,6 @@
                 mPrivateFlags &= ~PFLAG_ALPHA_SET;
                 invalidateViewProperty(true, false);
                 mRenderNode.setAlpha(getFinalAlpha());
-                notifyViewAccessibilityStateChangedIfNeeded(
-                        AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
             }
         }
     }
@@ -14770,6 +14787,25 @@
     }
 
     private void getVerticalScrollBarBounds(Rect bounds) {
+        if (mRoundScrollbarRenderer == null) {
+            getStraightVerticalScrollBarBounds(bounds);
+        } else {
+            getRoundVerticalScrollBarBounds(bounds);
+        }
+    }
+
+    private void getRoundVerticalScrollBarBounds(Rect bounds) {
+        final int width = mRight - mLeft;
+        final int height = mBottom - mTop;
+        // Do not take padding into account as we always want the scrollbars
+        // to hug the screen for round wearable devices.
+        bounds.left = mScrollX;
+        bounds.top = mScrollY;
+        bounds.right = bounds.left + width;
+        bounds.bottom = mScrollY + height;
+    }
+
+    private void getStraightVerticalScrollBarBounds(Rect bounds) {
         final int inside = (mViewFlags & SCROLLBARS_OUTSIDE_MASK) == 0 ? ~0 : 0;
         final int size = getVerticalScrollbarWidth();
         int verticalScrollbarPosition = mVerticalScrollbarPosition;
@@ -14848,8 +14884,10 @@
             // Fork out the scroll bar drawing for round wearable devices.
             if (mRoundScrollbarRenderer != null) {
                 if (drawVerticalScrollBar) {
+                    final Rect bounds = cache.mScrollBarBounds;
+                    getVerticalScrollBarBounds(bounds);
                     mRoundScrollbarRenderer.drawRoundScrollbars(
-                            canvas, (float) cache.scrollBar.getAlpha() / 255f);
+                            canvas, (float) cache.scrollBar.getAlpha() / 255f, bounds);
                     if (invalidate) {
                         invalidate();
                     }
@@ -22927,7 +22965,7 @@
         /**
          * Last global system UI visibility reported by the window manager.
          */
-        int mGlobalSystemUiVisibility;
+        int mGlobalSystemUiVisibility = -1;
 
         /**
          * True if a view in this hierarchy has an OnSystemUiVisibilityChangeListener
diff --git a/core/java/android/widget/FrameLayout.java b/core/java/android/widget/FrameLayout.java
index 029313c..b8c74d8 100644
--- a/core/java/android/widget/FrameLayout.java
+++ b/core/java/android/widget/FrameLayout.java
@@ -382,13 +382,14 @@
 
     @Override
     protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
-        if (lp instanceof LayoutParams) {
-            return new LayoutParams((LayoutParams) lp);
-        } else if (lp instanceof MarginLayoutParams) {
-            return new LayoutParams((MarginLayoutParams) lp);
-        } else {
-            return new LayoutParams(lp);
+        if (sPreserveMarginParamsInLayoutParamConversion) {
+            if (lp instanceof LayoutParams) {
+                return new LayoutParams((LayoutParams) lp);
+            } else if (lp instanceof MarginLayoutParams) {
+                return new LayoutParams((MarginLayoutParams) lp);
+            }
         }
+        return new LayoutParams(lp);
     }
 
     @Override
diff --git a/core/java/android/widget/GridLayout.java b/core/java/android/widget/GridLayout.java
index 726586e..af2852c 100644
--- a/core/java/android/widget/GridLayout.java
+++ b/core/java/android/widget/GridLayout.java
@@ -868,13 +868,14 @@
 
     @Override
     protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
-        if (lp instanceof LayoutParams) {
-            return new LayoutParams((LayoutParams) lp);
-        } else if (lp instanceof MarginLayoutParams) {
-            return new LayoutParams((MarginLayoutParams) lp);
-        } else {
-            return new LayoutParams(lp);
+        if (sPreserveMarginParamsInLayoutParamConversion) {
+            if (lp instanceof LayoutParams) {
+                return new LayoutParams((LayoutParams) lp);
+            } else if (lp instanceof MarginLayoutParams) {
+                return new LayoutParams((MarginLayoutParams) lp);
+            }
         }
+        return new LayoutParams(lp);
     }
 
     // Draw grid
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java
index 38d7cd4..f897372 100644
--- a/core/java/android/widget/LinearLayout.java
+++ b/core/java/android/widget/LinearLayout.java
@@ -1844,13 +1844,14 @@
 
     @Override
     protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
-        if (lp instanceof LayoutParams) {
-            return new LayoutParams((LayoutParams) lp);
-        } else if (lp instanceof MarginLayoutParams) {
-            return new LayoutParams((MarginLayoutParams) lp);
-        } else {
-            return new LayoutParams(lp);
+        if (sPreserveMarginParamsInLayoutParamConversion) {
+            if (lp instanceof LayoutParams) {
+                return new LayoutParams((LayoutParams) lp);
+            } else if (lp instanceof MarginLayoutParams) {
+                return new LayoutParams((MarginLayoutParams) lp);
+            }
         }
+        return new LayoutParams(lp);
     }
 
 
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index 8f908fb..b0f19d7 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -112,8 +112,8 @@
         public boolean isSelectable;
     }
 
-    private ArrayList<FixedViewInfo> mHeaderViewInfos = Lists.newArrayList();
-    private ArrayList<FixedViewInfo> mFooterViewInfos = Lists.newArrayList();
+    ArrayList<FixedViewInfo> mHeaderViewInfos = Lists.newArrayList();
+    ArrayList<FixedViewInfo> mFooterViewInfos = Lists.newArrayList();
 
     Drawable mDivider;
     int mDividerHeight;
@@ -279,7 +279,7 @@
         // Wrap the adapter if it wasn't already wrapped.
         if (mAdapter != null) {
             if (!(mAdapter instanceof HeaderViewListAdapter)) {
-                mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, mAdapter);
+                wrapHeaderListAdapterInternal();
             }
 
             // In the case of re-adding a header view, or adding one later on,
@@ -373,7 +373,7 @@
         // Wrap the adapter if it wasn't already wrapped.
         if (mAdapter != null) {
             if (!(mAdapter instanceof HeaderViewListAdapter)) {
-                mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, mAdapter);
+                wrapHeaderListAdapterInternal();
             }
 
             // In the case of re-adding a footer view, or adding one later on,
@@ -476,7 +476,7 @@
         mRecycler.clear();
 
         if (mHeaderViewInfos.size() > 0|| mFooterViewInfos.size() > 0) {
-            mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, adapter);
+            mAdapter = wrapHeaderListAdapterInternal(mHeaderViewInfos, mFooterViewInfos, adapter);
         } else {
             mAdapter = adapter;
         }
@@ -2228,7 +2228,7 @@
      * after the header views.
      */
     public void setSelectionAfterHeaderView() {
-        final int count = mHeaderViewInfos.size();
+        final int count = getHeaderViewsCount();
         if (count > 0) {
             mNextSelectedPosition = 0;
             return;
@@ -3356,7 +3356,7 @@
             bounds.right = mRight - mLeft - mPaddingRight;
 
             final int count = getChildCount();
-            final int headerCount = mHeaderViewInfos.size();
+            final int headerCount = getHeaderViewsCount();
             final int itemCount = mItemCount;
             final int footerLimit = (itemCount - mFooterViewInfos.size());
             final boolean headerDividers = mHeaderDividersEnabled;
@@ -3940,7 +3940,7 @@
         if (drawDividers) {
             final boolean fillForMissingDividers = isOpaque() && !super.isOpaque();
             final int itemCount = mItemCount;
-            final int headerCount = mHeaderViewInfos.size();
+            final int headerCount = getHeaderViewsCount();
             final int footerLimit = (itemCount - mFooterViewInfos.size());
             final boolean isHeader = (itemIndex < headerCount);
             final boolean isFooter = (itemIndex >= footerLimit);
@@ -4052,4 +4052,24 @@
 
         encoder.addProperty("recycleOnMeasure", recycleOnMeasure());
     }
+
+    /** @hide */
+    protected HeaderViewListAdapter wrapHeaderListAdapterInternal(
+            ArrayList<ListView.FixedViewInfo> headerViewInfos,
+            ArrayList<ListView.FixedViewInfo> footerViewInfos,
+            ListAdapter adapter) {
+        return new HeaderViewListAdapter(headerViewInfos, footerViewInfos, adapter);
+    }
+
+    /** @hide */
+    protected void wrapHeaderListAdapterInternal() {
+        mAdapter = wrapHeaderListAdapterInternal(mHeaderViewInfos, mFooterViewInfos, mAdapter);
+    }
+
+    /** @hide */
+    protected void dispatchDataSetObserverOnChangedInternal() {
+        if (mDataSetObserver != null) {
+            mDataSetObserver.onChanged();
+        }
+    }
 }
diff --git a/core/java/android/widget/RatingBar.java b/core/java/android/widget/RatingBar.java
index 2230961..3ad05b5 100644
--- a/core/java/android/widget/RatingBar.java
+++ b/core/java/android/widget/RatingBar.java
@@ -110,8 +110,8 @@
         }
 
         // A touch inside a star fill up to that fractional area (slightly more
-        // than 1 so boundaries round up).
-        mTouchProgressOffset = 1.1f;
+        // than 0.5 so boundaries round up).
+        mTouchProgressOffset = 0.6f;
     }
 
     public RatingBar(Context context, AttributeSet attrs) {
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index 0136542..a189d3c 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -1104,13 +1104,14 @@
 
     @Override
     protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
-        if (lp instanceof LayoutParams) {
-            return new LayoutParams((LayoutParams) lp);
-        } else if (lp instanceof MarginLayoutParams) {
-            return new LayoutParams((MarginLayoutParams) lp);
-        } else {
-            return new LayoutParams(lp);
+        if (sPreserveMarginParamsInLayoutParamConversion) {
+            if (lp instanceof LayoutParams) {
+                return new LayoutParams((LayoutParams) lp);
+            } else if (lp instanceof MarginLayoutParams) {
+                return new LayoutParams((MarginLayoutParams) lp);
+            }
         }
+        return new LayoutParams(lp);
     }
 
     /** @hide */
diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java
index 2b25b3f..5aeb7f9 100644
--- a/core/java/com/android/internal/app/AlertController.java
+++ b/core/java/com/android/internal/app/AlertController.java
@@ -178,11 +178,6 @@
         return outValue.data != 0;
     }
 
-    private static boolean isWatch(Context context) {
-        return (context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_TYPE_WATCH)
-                == Configuration.UI_MODE_TYPE_WATCH;
-    }
-
     public static final AlertController create(Context context, DialogInterface di, Window window) {
         final TypedArray a = context.obtainStyledAttributes(
                 null, R.styleable.AlertDialog, R.attr.alertDialogStyle, 0);
@@ -892,14 +887,8 @@
             listView.setAdapter(mAdapter);
             final int checkedItem = mCheckedItem;
             if (checkedItem > -1) {
-                // TODO: Remove temp watch specific code
-                if (isWatch(mContext)) {
-                    listView.setItemChecked(checkedItem + listView.getHeaderViewsCount(), true);
-                    listView.setSelection(checkedItem + listView.getHeaderViewsCount());
-                } else {
-                    listView.setItemChecked(checkedItem, true);
-                    listView.setSelection(checkedItem);
-                }
+                listView.setItemChecked(checkedItem, true);
+                listView.setSelection(checkedItem);
             }
         }
     }
@@ -1078,13 +1067,7 @@
                             if (mCheckedItems != null) {
                                 boolean isItemChecked = mCheckedItems[position];
                                 if (isItemChecked) {
-                                    // TODO: Remove temp watch specific code
-                                    if (isWatch(mContext)) {
-                                        listView.setItemChecked(
-                                                position + listView.getHeaderViewsCount(), true);
-                                    } else {
-                                        listView.setItemChecked(position, true);
-                                    }
+                                    listView.setItemChecked(position, true);
                                 }
                             }
                             return view;
@@ -1105,16 +1088,9 @@
                         public void bindView(View view, Context context, Cursor cursor) {
                             CheckedTextView text = (CheckedTextView) view.findViewById(R.id.text1);
                             text.setText(cursor.getString(mLabelIndex));
-                            // TODO: Remove temp watch specific code
-                            if (isWatch(mContext)) {
-                                listView.setItemChecked(
-                                        cursor.getPosition() + listView.getHeaderViewsCount(),
-                                        cursor.getInt(mIsCheckedIndex) == 1);
-                            } else {
-                                listView.setItemChecked(
-                                        cursor.getPosition(),
-                                        cursor.getInt(mIsCheckedIndex) == 1);
-                            }
+                            listView.setItemChecked(
+                                    cursor.getPosition(),
+                                    cursor.getInt(mIsCheckedIndex) == 1);
                         }
 
                         @Override
@@ -1157,10 +1133,6 @@
                 listView.setOnItemClickListener(new OnItemClickListener() {
                     @Override
                     public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
-                        // TODO: Remove temp watch specific code
-                        if (isWatch(mContext)) {
-                            position -= listView.getHeaderViewsCount();
-                        }
                         mOnClickListener.onClick(dialog.mDialogInterface, position);
                         if (!mIsSingleChoice) {
                             dialog.mDialogInterface.dismiss();
@@ -1171,10 +1143,6 @@
                 listView.setOnItemClickListener(new OnItemClickListener() {
                     @Override
                     public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
-                        // TODO: Remove temp watch specific code
-                        if (isWatch(mContext)) {
-                            position -= listView.getHeaderViewsCount();
-                        }
                         if (mCheckedItems != null) {
                             mCheckedItems[position] = listView.isItemChecked(position);
                         }
diff --git a/core/java/com/android/internal/app/MicroAlertController.java b/core/java/com/android/internal/app/MicroAlertController.java
index 00fcd6f..4431f3c 100644
--- a/core/java/com/android/internal/app/MicroAlertController.java
+++ b/core/java/com/android/internal/app/MicroAlertController.java
@@ -18,12 +18,15 @@
 
 import android.content.Context;
 import android.content.DialogInterface;
+import android.text.TextUtils;
+import android.view.Gravity;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.Window;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
 import android.widget.ScrollView;
 import android.widget.TextView;
-import android.widget.AbsListView;
 
 import com.android.internal.app.AlertController;
 import com.android.internal.R;
@@ -52,30 +55,38 @@
             contentPanel.removeView(mMessageView);
 
             if (mListView != null) {
-                // has ListView, swap ScrollView with ListView
+                // has ListView, swap scrollView with ListView
 
-                // move topPanel into header of ListView
+                // move topPanel into top of scrollParent
                 View topPanel = mScrollView.findViewById(R.id.topPanel);
                 ((ViewGroup) topPanel.getParent()).removeView(topPanel);
-                topPanel.setLayoutParams(
-                        new AbsListView.LayoutParams(topPanel.getLayoutParams()));
-                mListView.addHeaderView(topPanel, null, false);
+                FrameLayout.LayoutParams topParams =
+                        new FrameLayout.LayoutParams(topPanel.getLayoutParams());
+                topParams.gravity = Gravity.TOP;
+                topPanel.setLayoutParams(topParams);
 
-                // move buttonPanel into footer of ListView
+                // move buttonPanel into bottom of scrollParent
                 View buttonPanel = mScrollView.findViewById(R.id.buttonPanel);
                 ((ViewGroup) buttonPanel.getParent()).removeView(buttonPanel);
-                buttonPanel.setLayoutParams(
-                        new AbsListView.LayoutParams(buttonPanel.getLayoutParams()));
-                mListView.addFooterView(buttonPanel, null, false);
+                FrameLayout.LayoutParams buttonParams =
+                        new FrameLayout.LayoutParams(buttonPanel.getLayoutParams());
+                buttonParams.gravity = Gravity.BOTTOM;
+                buttonPanel.setLayoutParams(buttonParams);
 
-                // swap ScrollView w/ ListView
+                // remove scrollview
                 final ViewGroup scrollParent = (ViewGroup) mScrollView.getParent();
                 final int childIndex = scrollParent.indexOfChild(mScrollView);
                 scrollParent.removeViewAt(childIndex);
-                scrollParent.addView(mListView, childIndex,
+
+                // add list view
+                scrollParent.addView(mListView,
                         new ViewGroup.LayoutParams(
                                 ViewGroup.LayoutParams.MATCH_PARENT,
                                 ViewGroup.LayoutParams.MATCH_PARENT));
+
+                // add top and button panel
+                scrollParent.addView(topPanel);
+                scrollParent.addView(buttonPanel);
             } else {
                 // no content, just hide everything
                 contentPanel.setVisibility(View.GONE);
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index b174e33..17635ae 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -1791,11 +1791,17 @@
     public abstract class OverflowArrayMap<T> {
         private static final String OVERFLOW_NAME = "*overflow*";
 
+        final int mUid;
         final ArrayMap<String, T> mMap = new ArrayMap<>();
         T mCurOverflow;
         ArrayMap<String, MutableInt> mActiveOverflow;
+        long mLastOverflowTime;
+        long mLastOverflowFinishTime;
+        long mLastClearTime;
+        long mLastCleanupTime;
 
-        public OverflowArrayMap() {
+        public OverflowArrayMap(int uid) {
+            mUid = uid;
         }
 
         public ArrayMap<String, T> getMap() {
@@ -1803,6 +1809,7 @@
         }
 
         public void clear() {
+            mLastClearTime = SystemClock.elapsedRealtime();
             mMap.clear();
             mCurOverflow = null;
             mActiveOverflow = null;
@@ -1819,6 +1826,7 @@
         }
 
         public void cleanup() {
+            mLastCleanupTime = SystemClock.elapsedRealtime();
             if (mActiveOverflow != null) {
                 if (mActiveOverflow.size() == 0) {
                     mActiveOverflow = null;
@@ -1885,6 +1893,7 @@
                     mActiveOverflow = new ArrayMap<>();
                 }
                 mActiveOverflow.put(name, new MutableInt(1));
+                mLastOverflowTime = SystemClock.elapsedRealtime();
                 return obj;
             }
 
@@ -1914,6 +1923,7 @@
                         over.value--;
                         if (over.value <= 0) {
                             mActiveOverflow.remove(name);
+                            mLastOverflowFinishTime = SystemClock.elapsedRealtime();
                         }
                         return obj;
                     }
@@ -1922,9 +1932,35 @@
 
             // Huh, they are stopping an active operation but we can't find one!
             // That's not good.
-            Slog.wtf(TAG, "Unable to find object for " + name + " mapsize="
-                    + mMap.size() + " activeoverflow=" + mActiveOverflow
-                    + " curoverflow=" + mCurOverflow);
+            StringBuilder sb = new StringBuilder();
+            sb.append("Unable to find object for ");
+            sb.append(name);
+            sb.append(" in uid ");
+            sb.append(mUid);
+            sb.append(" mapsize=");
+            sb.append(mMap.size());
+            sb.append(" activeoverflow=");
+            sb.append(mActiveOverflow);
+            sb.append(" curoverflow=");
+            sb.append(mCurOverflow);
+            long now = SystemClock.elapsedRealtime();
+            if (mLastOverflowTime != 0) {
+                sb.append(" lastOverflowTime=");
+                TimeUtils.formatDuration(mLastOverflowTime-now, sb);
+            }
+            if (mLastOverflowFinishTime != 0) {
+                sb.append(" lastOverflowFinishTime=");
+                TimeUtils.formatDuration(mLastOverflowFinishTime-now, sb);
+            }
+            if (mLastClearTime != 0) {
+                sb.append(" lastClearTime=");
+                TimeUtils.formatDuration(mLastClearTime-now, sb);
+            }
+            if (mLastCleanupTime != 0) {
+                sb.append(" lastCleanupTime=");
+                TimeUtils.formatDuration(mLastCleanupTime-now, sb);
+            }
+            Slog.wtf(TAG, sb.toString());
             return null;
         }
 
@@ -5084,18 +5120,18 @@
             mSystemCpuTime = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);
             mCpuPower = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);
 
-            mWakelockStats = mBsi.new OverflowArrayMap<Wakelock>() {
+            mWakelockStats = mBsi.new OverflowArrayMap<Wakelock>(uid) {
                 @Override public Wakelock instantiateObject() {
                     return new Wakelock(mBsi, Uid.this);
                 }
             };
-            mSyncStats = mBsi.new OverflowArrayMap<StopwatchTimer>() {
+            mSyncStats = mBsi.new OverflowArrayMap<StopwatchTimer>(uid) {
                 @Override public StopwatchTimer instantiateObject() {
                     return new StopwatchTimer(mBsi.mClocks, Uid.this, SYNC, null,
                             mBsi.mOnBatteryTimeBase);
                 }
             };
-            mJobStats = mBsi.new OverflowArrayMap<StopwatchTimer>() {
+            mJobStats = mBsi.new OverflowArrayMap<StopwatchTimer>(uid) {
                 @Override public StopwatchTimer instantiateObject() {
                     return new StopwatchTimer(mBsi.mClocks, Uid.this, JOB, null,
                             mBsi.mOnBatteryTimeBase);
diff --git a/core/java/com/android/internal/os/KernelUidCpuTimeReader.java b/core/java/com/android/internal/os/KernelUidCpuTimeReader.java
index c828d11..e8919ed 100644
--- a/core/java/com/android/internal/os/KernelUidCpuTimeReader.java
+++ b/core/java/com/android/internal/os/KernelUidCpuTimeReader.java
@@ -120,7 +120,7 @@
                             sb.append(" s=");
                             TimeUtils.formatDuration(systemTimeDeltaUs / 1000, sb);
                             sb.append(" p=").append(powerDeltaMaUs / 1000).append("mAms");
-                            Slog.wtf(TAG, sb.toString());
+                            Slog.e(TAG, sb.toString());
 
                             userTimeDeltaUs = 0;
                             systemTimeDeltaUs = 0;
diff --git a/core/java/com/android/internal/view/menu/CascadingMenuPopup.java b/core/java/com/android/internal/view/menu/CascadingMenuPopup.java
index ddf3a76..69e974c 100644
--- a/core/java/com/android/internal/view/menu/CascadingMenuPopup.java
+++ b/core/java/com/android/internal/view/menu/CascadingMenuPopup.java
@@ -366,7 +366,7 @@
         final int menuWidth = measureIndividualMenuWidth(adapter, null, mContext, mMenuMaxWidth);
         final MenuPopupWindow popupWindow = createPopupWindow();
         popupWindow.setAdapter(adapter);
-        popupWindow.setWidth(menuWidth);
+        popupWindow.setContentWidth(menuWidth);
         popupWindow.setDropDownGravity(mDropDownGravity);
 
         final CascadingMenuInfo parentInfo;
diff --git a/core/java/com/android/internal/widget/DecorCaptionView.java b/core/java/com/android/internal/widget/DecorCaptionView.java
index e59d7ba..fc68b84 100644
--- a/core/java/com/android/internal/widget/DecorCaptionView.java
+++ b/core/java/com/android/internal/widget/DecorCaptionView.java
@@ -244,6 +244,11 @@
         return mTouchDispatchList;
     }
 
+    @Override
+    public boolean shouldDelayChildPressedState() {
+        return false;
+    }
+
     private boolean passedSlop(int x, int y) {
         return Math.abs(x - mTouchDownX) > mDragSlop || Math.abs(y - mTouchDownY) > mDragSlop;
     }
diff --git a/core/java/com/android/internal/widget/WatchHeaderListView.java b/core/java/com/android/internal/widget/WatchHeaderListView.java
new file mode 100644
index 0000000..3d32d86
--- /dev/null
+++ b/core/java/com/android/internal/widget/WatchHeaderListView.java
@@ -0,0 +1,215 @@
+/*
+ * 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.annotation.IdRes;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.HeaderViewListAdapter;
+
+import java.util.ArrayList;
+
+import com.android.internal.util.Predicate;
+
+public class WatchHeaderListView extends ListView {
+    private View mTopPanel;
+
+    public WatchHeaderListView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public WatchHeaderListView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public WatchHeaderListView(
+            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    protected HeaderViewListAdapter wrapHeaderListAdapterInternal(
+            ArrayList<ListView.FixedViewInfo> headerViewInfos,
+            ArrayList<ListView.FixedViewInfo> footerViewInfos,
+            ListAdapter adapter) {
+        return new WatchHeaderListAdapter(headerViewInfos, footerViewInfos, adapter);
+    }
+
+    @Override
+    public void addView(View child, ViewGroup.LayoutParams params) {
+        if (mTopPanel == null) {
+            setTopPanel(child);
+        } else {
+            throw new IllegalStateException("WatchHeaderListView can host only one header");
+        }
+    }
+
+    public void setTopPanel(View v) {
+        mTopPanel = v;
+        wrapAdapterIfNecessary();
+    }
+
+    @Override
+    public void setAdapter(ListAdapter adapter) {
+        super.setAdapter(adapter);
+        wrapAdapterIfNecessary();
+    }
+
+    @Override
+    protected View findViewTraversal(@IdRes int id) {
+        View v = super.findViewTraversal(id);
+        if (v == null && mTopPanel != null && !mTopPanel.isRootNamespace()) {
+            return mTopPanel.findViewById(id);
+        }
+        return v;
+    }
+
+    @Override
+    protected View findViewWithTagTraversal(Object tag) {
+        View v = super.findViewWithTagTraversal(tag);
+        if (v == null && mTopPanel != null && !mTopPanel.isRootNamespace()) {
+            return mTopPanel.findViewWithTag(tag);
+        }
+        return v;
+    }
+
+    @Override
+    protected View findViewByPredicateTraversal(Predicate<View> predicate, View childToSkip) {
+        View v = super.findViewByPredicateTraversal(predicate, childToSkip);
+        if (v == null && mTopPanel != null && mTopPanel != childToSkip
+                && !mTopPanel.isRootNamespace()) {
+            return mTopPanel.findViewByPredicate(predicate);
+        }
+        return v;
+    }
+
+    @Override
+    public int getHeaderViewsCount() {
+        return mTopPanel == null ? super.getHeaderViewsCount() : super.getHeaderViewsCount() + 1;
+    }
+
+    private void wrapAdapterIfNecessary() {
+        ListAdapter adapter = getAdapter();
+        if (adapter != null && mTopPanel != null) {
+            if (!(adapter instanceof WatchHeaderListAdapter)) {
+                wrapHeaderListAdapterInternal();
+            }
+
+            ((WatchHeaderListAdapter) getAdapter()).setTopPanel(mTopPanel);
+            dispatchDataSetObserverOnChangedInternal();
+        }
+    }
+
+    private static class WatchHeaderListAdapter extends HeaderViewListAdapter {
+        private View mTopPanel;
+
+        public WatchHeaderListAdapter(
+                ArrayList<ListView.FixedViewInfo> headerViewInfos,
+                ArrayList<ListView.FixedViewInfo> footerViewInfos,
+                ListAdapter adapter) {
+            super(headerViewInfos, footerViewInfos, adapter);
+        }
+
+        public void setTopPanel(View v) {
+            mTopPanel = v;
+        }
+
+        private int getTopPanelCount() {
+            return mTopPanel == null ? 0 : 1;
+        }
+
+        @Override
+        public int getCount() {
+            return super.getCount() + getTopPanelCount();
+        }
+
+        @Override
+        public boolean areAllItemsEnabled() {
+            return mTopPanel == null && super.areAllItemsEnabled();
+        }
+
+        @Override
+        public boolean isEnabled(int position) {
+            if (mTopPanel != null) {
+                if (position == 0) {
+                    return false;
+                } else {
+                    return super.isEnabled(position - 1);
+                }
+            }
+
+            return super.isEnabled(position);
+        }
+
+        @Override
+        public Object getItem(int position) {
+            if (mTopPanel != null) {
+                if (position == 0) {
+                    return null;
+                } else {
+                    return super.getItem(position - 1);
+                }
+            }
+
+            return super.getItem(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            int numHeaders = getHeadersCount() + getTopPanelCount();
+            if (getWrappedAdapter() != null && position >= numHeaders) {
+                int adjPosition = position - numHeaders;
+                int adapterCount = getWrappedAdapter().getCount();
+                if (adjPosition < adapterCount) {
+                    return getWrappedAdapter().getItemId(adjPosition);
+                }
+            }
+            return -1;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (mTopPanel != null) {
+                if (position == 0) {
+                    return mTopPanel;
+                } else {
+                    return super.getView(position - 1, convertView, parent);
+                }
+            }
+
+            return super.getView(position, convertView, parent);
+        }
+
+        @Override
+        public int getItemViewType(int position) {
+            int numHeaders = getHeadersCount() + getTopPanelCount();
+            if (getWrappedAdapter() != null && position >= numHeaders) {
+                int adjPosition = position - numHeaders;
+                int adapterCount = getWrappedAdapter().getCount();
+                if (adjPosition < adapterCount) {
+                    return getWrappedAdapter().getItemViewType(adjPosition);
+                }
+            }
+
+            return AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER;
+        }
+    }
+}
diff --git a/core/java/com/android/internal/widget/WatchListDecorLayout.java b/core/java/com/android/internal/widget/WatchListDecorLayout.java
new file mode 100644
index 0000000..538ceca
--- /dev/null
+++ b/core/java/com/android/internal/widget/WatchListDecorLayout.java
@@ -0,0 +1,327 @@
+/*
+ * 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.graphics.drawable.Drawable;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.widget.ListView;
+import android.widget.FrameLayout;
+
+import java.util.ArrayList;
+
+
+/**
+ * Layout for the decor for ListViews on watch-type devices with small screens.
+ * <p>
+ * Supports one panel with the gravity set to top, and one panel with gravity set to bottom.
+ * <p>
+ * Use with one ListView child. The top and bottom panels will track the ListView's scrolling.
+ * If there is no ListView child, it will act like a normal FrameLayout.
+ */
+public class WatchListDecorLayout extends FrameLayout
+        implements ViewTreeObserver.OnScrollChangedListener {
+
+    private int mForegroundPaddingLeft = 0;
+    private int mForegroundPaddingTop = 0;
+    private int mForegroundPaddingRight = 0;
+    private int mForegroundPaddingBottom = 0;
+
+    private final ArrayList<View> mMatchParentChildren = new ArrayList<>(1);
+
+    /** Track the amount the ListView has to scroll up to account for padding change difference. */
+    private int mPendingScroll;
+    private View mBottomPanel;
+    private View mTopPanel;
+    private ListView mListView;
+    private ViewTreeObserver mObserver;
+
+
+    public WatchListDecorLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public WatchListDecorLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public WatchListDecorLayout(
+            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+
+        mPendingScroll = 0;
+
+        for (int i = 0; i < getChildCount(); ++i) {
+            View child = getChildAt(i);
+            if (child instanceof ListView) {
+                if (mListView != null) {
+                    throw new IllegalArgumentException("only one ListView child allowed");
+                }
+                mListView = (ListView) child;
+
+                mListView.setNestedScrollingEnabled(true);
+                mObserver = mListView.getViewTreeObserver();
+                mObserver.addOnScrollChangedListener(this);
+            } else {
+                int gravity = (((LayoutParams) child.getLayoutParams()).gravity
+                        & Gravity.VERTICAL_GRAVITY_MASK);
+                if (gravity == Gravity.TOP && mTopPanel == null) {
+                    mTopPanel = child;
+                } else if (gravity == Gravity.BOTTOM && mBottomPanel == null) {
+                    mBottomPanel = child;
+                }
+            }
+        }
+    }
+
+    @Override
+    public void onDetachedFromWindow() {
+        mListView = null;
+        mBottomPanel = null;
+        mTopPanel = null;
+        if (mObserver != null) {
+            if (mObserver.isAlive()) {
+                mObserver.removeOnScrollChangedListener(this);
+            }
+            mObserver = null;
+        }
+    }
+
+    private void applyMeasureToChild(View child, int widthMeasureSpec, int heightMeasureSpec) {
+        final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
+
+        final int childWidthMeasureSpec;
+        if (lp.width == LayoutParams.MATCH_PARENT) {
+            final int width = Math.max(0, getMeasuredWidth()
+                    - getPaddingLeftWithForeground() - getPaddingRightWithForeground()
+                    - lp.leftMargin - lp.rightMargin);
+            childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(
+                    width, MeasureSpec.EXACTLY);
+        } else {
+            childWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec,
+                    getPaddingLeftWithForeground() + getPaddingRightWithForeground() +
+                    lp.leftMargin + lp.rightMargin,
+                    lp.width);
+        }
+
+        final int childHeightMeasureSpec;
+        if (lp.height == LayoutParams.MATCH_PARENT) {
+            final int height = Math.max(0, getMeasuredHeight()
+                    - getPaddingTopWithForeground() - getPaddingBottomWithForeground()
+                    - lp.topMargin - lp.bottomMargin);
+            childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
+                    height, MeasureSpec.EXACTLY);
+        } else {
+            childHeightMeasureSpec = getChildMeasureSpec(heightMeasureSpec,
+                    getPaddingTopWithForeground() + getPaddingBottomWithForeground() +
+                    lp.topMargin + lp.bottomMargin,
+                    lp.height);
+        }
+
+        child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
+    }
+
+    private int measureAndGetHeight(View child, int widthMeasureSpec, int heightMeasureSpec) {
+        if (child != null) {
+            if (child.getVisibility() != GONE) {
+                applyMeasureToChild(mBottomPanel, widthMeasureSpec, heightMeasureSpec);
+                return child.getMeasuredHeight();
+            } else if (getMeasureAllChildren()) {
+                applyMeasureToChild(mBottomPanel, widthMeasureSpec, heightMeasureSpec);
+            }
+        }
+        return 0;
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        int count = getChildCount();
+
+        final boolean measureMatchParentChildren =
+                MeasureSpec.getMode(widthMeasureSpec) != MeasureSpec.EXACTLY ||
+                MeasureSpec.getMode(heightMeasureSpec) != MeasureSpec.EXACTLY;
+        mMatchParentChildren.clear();
+
+        int maxHeight = 0;
+        int maxWidth = 0;
+        int childState = 0;
+
+        for (int i = 0; i < count; i++) {
+            final View child = getChildAt(i);
+            if (getMeasureAllChildren() || child.getVisibility() != GONE) {
+                measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, 0);
+                final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+                maxWidth = Math.max(maxWidth,
+                        child.getMeasuredWidth() + lp.leftMargin + lp.rightMargin);
+                maxHeight = Math.max(maxHeight,
+                        child.getMeasuredHeight() + lp.topMargin + lp.bottomMargin);
+                childState = combineMeasuredStates(childState, child.getMeasuredState());
+                if (measureMatchParentChildren) {
+                    if (lp.width == LayoutParams.MATCH_PARENT ||
+                            lp.height == LayoutParams.MATCH_PARENT) {
+                        mMatchParentChildren.add(child);
+                    }
+                }
+            }
+        }
+
+        // Account for padding too
+        maxWidth += getPaddingLeftWithForeground() + getPaddingRightWithForeground();
+        maxHeight += getPaddingTopWithForeground() + getPaddingBottomWithForeground();
+
+        // Check against our minimum height and width
+        maxHeight = Math.max(maxHeight, getSuggestedMinimumHeight());
+        maxWidth = Math.max(maxWidth, getSuggestedMinimumWidth());
+
+        // Check against our foreground's minimum height and width
+        final Drawable drawable = getForeground();
+        if (drawable != null) {
+            maxHeight = Math.max(maxHeight, drawable.getMinimumHeight());
+            maxWidth = Math.max(maxWidth, drawable.getMinimumWidth());
+        }
+
+        setMeasuredDimension(resolveSizeAndState(maxWidth, widthMeasureSpec, childState),
+                resolveSizeAndState(maxHeight, heightMeasureSpec,
+                        childState << MEASURED_HEIGHT_STATE_SHIFT));
+
+        if (mListView != null) {
+            if (mPendingScroll != 0) {
+                mListView.scrollListBy(mPendingScroll);
+                mPendingScroll = 0;
+            }
+
+            int paddingTop = Math.max(mListView.getPaddingTop(),
+                    measureAndGetHeight(mTopPanel, widthMeasureSpec, heightMeasureSpec));
+            int paddingBottom = Math.max(mListView.getPaddingBottom(),
+                    measureAndGetHeight(mBottomPanel, widthMeasureSpec, heightMeasureSpec));
+
+            if (paddingTop != mListView.getPaddingTop()
+                    || paddingBottom != mListView.getPaddingBottom()) {
+                mPendingScroll += mListView.getPaddingTop() - paddingTop;
+                mListView.setPadding(
+                        mListView.getPaddingLeft(), paddingTop,
+                        mListView.getPaddingRight(), paddingBottom);
+            }
+        }
+
+        count = mMatchParentChildren.size();
+        if (count > 1) {
+            for (int i = 0; i < count; i++) {
+                final View child = mMatchParentChildren.get(i);
+                if (mListView == null || (child != mTopPanel && child != mBottomPanel)) {
+                    applyMeasureToChild(child, widthMeasureSpec, heightMeasureSpec);
+                }
+            }
+        }
+    }
+
+    @Override
+    public void setForegroundGravity(int foregroundGravity) {
+        if (getForegroundGravity() != foregroundGravity) {
+            super.setForegroundGravity(foregroundGravity);
+
+            // calling get* again here because the set above may apply default constraints
+            final Drawable foreground = getForeground();
+            if (getForegroundGravity() == Gravity.FILL && foreground != null) {
+                Rect padding = new Rect();
+                if (foreground.getPadding(padding)) {
+                    mForegroundPaddingLeft = padding.left;
+                    mForegroundPaddingTop = padding.top;
+                    mForegroundPaddingRight = padding.right;
+                    mForegroundPaddingBottom = padding.bottom;
+                }
+            } else {
+                mForegroundPaddingLeft = 0;
+                mForegroundPaddingTop = 0;
+                mForegroundPaddingRight = 0;
+                mForegroundPaddingBottom = 0;
+            }
+        }
+    }
+
+    private int getPaddingLeftWithForeground() {
+        return isForegroundInsidePadding() ? Math.max(mPaddingLeft, mForegroundPaddingLeft) :
+            mPaddingLeft + mForegroundPaddingLeft;
+    }
+
+    private int getPaddingRightWithForeground() {
+        return isForegroundInsidePadding() ? Math.max(mPaddingRight, mForegroundPaddingRight) :
+            mPaddingRight + mForegroundPaddingRight;
+    }
+
+    private int getPaddingTopWithForeground() {
+        return isForegroundInsidePadding() ? Math.max(mPaddingTop, mForegroundPaddingTop) :
+            mPaddingTop + mForegroundPaddingTop;
+    }
+
+    private int getPaddingBottomWithForeground() {
+        return isForegroundInsidePadding() ? Math.max(mPaddingBottom, mForegroundPaddingBottom) :
+            mPaddingBottom + mForegroundPaddingBottom;
+    }
+
+    @Override
+    public void onScrollChanged() {
+        if (mListView == null) {
+            return;
+        }
+
+        if (mTopPanel != null) {
+            if (mListView.getChildCount() > 0) {
+                if (mListView.getFirstVisiblePosition() == 0) {
+                    View firstChild = mListView.getChildAt(0);
+                    setScrolling(mTopPanel,
+                            firstChild.getY() - mTopPanel.getHeight() - mTopPanel.getTop());
+                } else {
+                    // shift to hide the frame, last child is not the last position
+                    setScrolling(mTopPanel, -mTopPanel.getHeight());
+                }
+            } else {
+                setScrolling(mTopPanel, 0); // no visible child, fallback to default behaviour
+            }
+        }
+
+        if (mBottomPanel != null) {
+            if (mListView.getChildCount() > 0) {
+                if (mListView.getLastVisiblePosition() >= mListView.getCount() - 1) {
+                    View lastChild = mListView.getChildAt(mListView.getChildCount() - 1);
+                    setScrolling(mBottomPanel,
+                            lastChild.getY() + lastChild.getHeight() - mBottomPanel.getTop());
+                } else {
+                    // shift to hide the frame, last child is not the last position
+                    setScrolling(mBottomPanel, mBottomPanel.getHeight());
+                }
+            } else {
+                setScrolling(mBottomPanel, 0); // no visible child, fallback to default behaviour
+            }
+        }
+    }
+
+    /** Only set scrolling for the panel if there is a change in its translationY. */
+    private void setScrolling(View panel, float translationY) {
+        if (panel.getTranslationY() != translationY) {
+            panel.setTranslationY(translationY);
+        }
+    }
+}
diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java
index 886265a..429131b 100644
--- a/core/java/com/android/server/SystemConfig.java
+++ b/core/java/com/android/server/SystemConfig.java
@@ -42,6 +42,8 @@
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Loads global system configuration info.
@@ -122,6 +124,11 @@
     // These are the permitted backup transport service components
     final ArraySet<ComponentName> mBackupTransportWhitelist = new ArraySet<>();
 
+    // These are the packages of carrier-associated apps which should be disabled until used until
+    // a SIM is inserted which grants carrier privileges to that carrier app.
+    final ArrayMap<String, List<String>> mDisabledUntilUsedPreinstalledCarrierAssociatedApps =
+            new ArrayMap<>();
+
     public static SystemConfig getInstance() {
         synchronized (SystemConfig.class) {
             if (sInstance == null) {
@@ -183,6 +190,10 @@
         return mBackupTransportWhitelist;
     }
 
+    public ArrayMap<String, List<String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps() {
+        return mDisabledUntilUsedPreinstalledCarrierAssociatedApps;
+    }
+
     SystemConfig() {
         // Read configuration from system
         readPermissions(Environment.buildPath(
@@ -476,6 +487,26 @@
                         }
                     }
                     XmlUtils.skipCurrentTag(parser);
+                } else if ("disabled-until-used-preinstalled-carrier-associated-app".equals(name)
+                        && allowAppConfigs) {
+                    String pkgname = parser.getAttributeValue(null, "package");
+                    String carrierPkgname = parser.getAttributeValue(null, "carrierAppPackage");
+                    if (pkgname == null || carrierPkgname == null) {
+                        Slog.w(TAG, "<disabled-until-used-preinstalled-carrier-associated-app"
+                                + " without package or carrierAppPackage in " + permFile + " at "
+                                + parser.getPositionDescription());
+                    } else {
+                        List<String> associatedPkgs =
+                                mDisabledUntilUsedPreinstalledCarrierAssociatedApps.get(
+                                        carrierPkgname);
+                        if (associatedPkgs == null) {
+                            associatedPkgs = new ArrayList<>();
+                            mDisabledUntilUsedPreinstalledCarrierAssociatedApps.put(
+                                    carrierPkgname, associatedPkgs);
+                        }
+                        associatedPkgs.add(pkgname);
+                    }
+                    XmlUtils.skipCurrentTag(parser);
                 } else {
                     XmlUtils.skipCurrentTag(parser);
                     continue;
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index d681246..d7550a4 100755
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -18,6 +18,7 @@
 #include "CreateJavaOutputStreamAdaptor.h"
 #include <Caches.h>
 #include <hwui/Paint.h>
+#include <renderthread/RenderProxy.h>
 
 #include "core_jni_helpers.h"
 
@@ -1361,6 +1362,14 @@
     return reinterpret_cast<jlong>(pixelRef);
 }
 
+static void Bitmap_prepareToDraw(JNIEnv* env, jobject, jlong bitmapPtr) {
+    LocalScopedBitmap bitmapHandle(bitmapPtr);
+    if (!bitmapHandle.valid()) return;
+    SkBitmap bitmap;
+    bitmapHandle->getSkBitmap(&bitmap);
+    android::uirenderer::renderthread::RenderProxy::prepareToDraw(bitmap);
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 
 static const JNINativeMethod gBitmapMethods[] = {
@@ -1404,6 +1413,7 @@
                                             (void*)Bitmap_copyPixelsFromBuffer },
     {   "nativeSameAs",             "(JJ)Z", (void*)Bitmap_sameAs },
     {   "nativeRefPixelRef",        "(J)J", (void*)Bitmap_refPixelRef },
+    {   "nativePrepareToDraw",      "(J)V", (void*)Bitmap_prepareToDraw },
 };
 
 int register_android_graphics_Bitmap(JNIEnv* env)
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 037ca73..7cd0d2a 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -195,10 +195,13 @@
             // the animation list, 2) post a delayed message to end them at end time so their
             // listeners can receive the corresponding callbacks.
             anim->getVectorDrawable()->setPropertyChangeWillBeConsumed(false);
+            // Mark the VD dirty so it will damage itself during prepareTree.
+            anim->getVectorDrawable()->markDirty();
         }
         if (info.mode == TreeInfo::MODE_FULL) {
             for (auto &anim : mPausedVDAnimators) {
                 anim->getVectorDrawable()->setPropertyChangeWillBeConsumed(false);
+                anim->getVectorDrawable()->markDirty();
             }
         }
         // TODO: This is hacky
@@ -210,34 +213,6 @@
         info.windowInsetLeft = 0;
         info.windowInsetTop = 0;
         info.errorHandler = nullptr;
-
-        for (auto it = mRunningVDAnimators.begin(); it != mRunningVDAnimators.end();) {
-            if (!(*it)->getVectorDrawable()->getPropertyChangeWillBeConsumed()) {
-                // Vector Drawable is not in the display list, we should remove this animator from
-                // the list, put it in the paused list, and post a delayed message to end the
-                // animator.
-                detachVectorDrawableAnimator(it->get());
-                mPausedVDAnimators.insert(*it);
-                it = mRunningVDAnimators.erase(it);
-            } else {
-                it++;
-            }
-        }
-
-        if (info.mode == TreeInfo::MODE_FULL) {
-            // Check whether any paused animator's target is back in Display List. If so, put the
-            // animator back in the running list.
-            for (auto it = mPausedVDAnimators.begin(); it != mPausedVDAnimators.end();) {
-                if ((*it)->getVectorDrawable()->getPropertyChangeWillBeConsumed()) {
-                    mRunningVDAnimators.insert(*it);
-                    it = mPausedVDAnimators.erase(it);
-                } else {
-                    it++;
-                }
-            }
-        }
-        info.out.hasAnimations |= !mRunningVDAnimators.empty();
-
     }
 
     void sendMessage(const sp<MessageHandler>& handler) {
@@ -267,6 +242,16 @@
         mPausedVDAnimators.clear();
     }
 
+    // Move all the animators to the paused list, and send a delayed message to notify the finished
+    // listener.
+    void pauseAnimators() {
+        mPausedVDAnimators.insert(mRunningVDAnimators.begin(), mRunningVDAnimators.end());
+        for (auto& anim : mRunningVDAnimators) {
+            detachVectorDrawableAnimator(anim.get());
+        }
+        mRunningVDAnimators.clear();
+    }
+
     void doAttachAnimatingNodes(AnimationContext* context) {
         for (size_t i = 0; i < mPendingAnimatingRenderNodes.size(); i++) {
             RenderNode* node = mPendingAnimatingRenderNodes[i].get();
@@ -275,7 +260,14 @@
         mPendingAnimatingRenderNodes.clear();
     }
 
-    void runVectorDrawableAnimators(AnimationContext* context, TreeInfo::TraversalMode mode) {
+    // Run VectorDrawable animators after prepareTree.
+    void runVectorDrawableAnimators(AnimationContext* context, TreeInfo& info) {
+        // Push staging.
+        if (info.mode == TreeInfo::MODE_FULL) {
+            pushStagingVectorDrawableAnimators(context);
+        }
+
+        // Run the animators in the running list.
         for (auto it = mRunningVDAnimators.begin(); it != mRunningVDAnimators.end();) {
             if ((*it)->animate(*context)) {
                 it = mRunningVDAnimators.erase(it);
@@ -284,7 +276,8 @@
             }
         }
 
-        if (mode == TreeInfo::MODE_FULL) {
+        // Run the animators in paused list during full sync.
+        if (info.mode == TreeInfo::MODE_FULL) {
             // During full sync we also need to pulse paused animators, in case their targets
             // have been added back to the display list. All the animators that passed the
             // scheduled finish time will be removed from the paused list.
@@ -297,6 +290,42 @@
                 }
             }
         }
+
+        // Move the animators with a target not in DisplayList to paused list.
+        for (auto it = mRunningVDAnimators.begin(); it != mRunningVDAnimators.end();) {
+            if (!(*it)->getVectorDrawable()->getPropertyChangeWillBeConsumed()) {
+                // Vector Drawable is not in the display list, we should remove this animator from
+                // the list, put it in the paused list, and post a delayed message to end the
+                // animator.
+                detachVectorDrawableAnimator(it->get());
+                mPausedVDAnimators.insert(*it);
+                it = mRunningVDAnimators.erase(it);
+            } else {
+                it++;
+            }
+        }
+
+        // Move the animators with a target in DisplayList from paused list to running list, and
+        // trim paused list.
+        if (info.mode == TreeInfo::MODE_FULL) {
+            // Check whether any paused animator's target is back in Display List. If so, put the
+            // animator back in the running list.
+            for (auto it = mPausedVDAnimators.begin(); it != mPausedVDAnimators.end();) {
+                if ((*it)->getVectorDrawable()->getPropertyChangeWillBeConsumed()) {
+                    mRunningVDAnimators.insert(*it);
+                    it = mPausedVDAnimators.erase(it);
+                } else {
+                    it++;
+                }
+            }
+            // Trim paused VD animators at full sync, so that when Java loses reference to an
+            // animator, we know we won't be requested to animate it any more, then we remove such
+            // animators from the paused list so they can be properly freed. We also remove the
+            // animators from paused list when the time elapsed since start has exceeded duration.
+            trimPausedVDAnimators(context);
+        }
+
+        info.out.hasAnimations |= !mRunningVDAnimators.empty();
     }
 
     void trimPausedVDAnimators(AnimationContext* context) {
@@ -387,33 +416,17 @@
             mRootNode->attachPendingVectorDrawableAnimators();
         }
         AnimationContext::startFrame(mode);
-        // Run VectorDrawable animators in the beginning of the frame instead of during prepareTree,
-        // because one VD can be in multiple render nodes' display list. So it's more simple to
-        // run them all at once before prepareTree than running them or checking whether they have
-        // already ran in each RenderNode. Note that these animators don't damage the RenderNodes.
-        // The damaging is done in prepareTree as needed after checking whether a VD has been
-        // modified.
-        if (mode == TreeInfo::MODE_FULL) {
-            mRootNode->pushStagingVectorDrawableAnimators(this);
-        }
-        mRootNode->runVectorDrawableAnimators(this, mode);
     }
 
     // Runs any animations still left in mCurrentFrameAnimations
     virtual void runRemainingAnimations(TreeInfo& info) {
         AnimationContext::runRemainingAnimations(info);
+        mRootNode->runVectorDrawableAnimators(this, info);
         postOnFinishedEvents();
-        if (info.mode == TreeInfo::MODE_FULL) {
-            // Trim paused VD animators at full sync, so that when Java loses reference to an
-            // animator, we know we won't be requested to animate it any more, then we remove such
-            // animators from the paused list so they can be properly freed. We also remove the
-            // animators from paused list when the time elapsed since start has exceeded duration.
-            mRootNode->trimPausedVDAnimators(this);
-        }
     }
 
-    virtual void detachAnimators() override {
-        mRootNode->detachAnimators();
+    virtual void pauseAnimators() override {
+        mRootNode->pauseAnimators();
     }
 
     virtual void callOnFinished(BaseRenderNodeAnimator* animator, AnimationListener* listener) {
@@ -423,7 +436,7 @@
 
     virtual void destroy() {
         AnimationContext::destroy();
-        detachAnimators();
+        mRootNode->detachAnimators();
         postOnFinishedEvents();
     }
 
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 48dfdff..ed71fc2f 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1262,6 +1262,11 @@
     <permission android:name="android.permission.CONNECTIVITY_INTERNAL"
         android:protectionLevel="signature|privileged" />
 
+    <!-- Allows an internal user to use restricted Networks.
+         @hide -->
+    <permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"
+        android:protectionLevel="signature|privileged" />
+
     <!-- Allows a system application to access hardware packet offload capabilities.
          @hide -->
     <permission android:name="android.permission.PACKET_KEEPALIVE_OFFLOAD"
diff --git a/core/res/res/anim/watch_switch_thumb_to_off_animation.xml b/core/res/res/anim/watch_switch_thumb_to_off_animation.xml
new file mode 100644
index 0000000..cd02e0d
--- /dev/null
+++ b/core/res/res/anim/watch_switch_thumb_to_off_animation.xml
@@ -0,0 +1,36 @@
+<?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"
+    android:ordering="sequentially">
+    <objectAnimator
+        android:duration="33"
+        android:interpolator="@android:interpolator/linear"
+        android:propertyName="pathData"
+        android:valueFrom="M 0.0,-7.0 l 0.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l 0.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueTo="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueType="pathType" />
+    <objectAnimator
+        android:duration="66"
+        android:interpolator="@android:interpolator/linear"
+        android:propertyName="pathData"
+        android:valueFrom="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueTo="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueType="pathType" />
+    <objectAnimator
+        android:duration="66"
+        android:interpolator="@android:interpolator/linear"
+        android:propertyName="pathData"
+        android:valueFrom="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueTo="M 0.0,-7.0 l 0.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l 0.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueType="pathType" />
+</set>
diff --git a/core/res/res/anim/watch_switch_thumb_to_on_animation.xml b/core/res/res/anim/watch_switch_thumb_to_on_animation.xml
new file mode 100644
index 0000000..e644217
--- /dev/null
+++ b/core/res/res/anim/watch_switch_thumb_to_on_animation.xml
@@ -0,0 +1,37 @@
+<?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"
+    android:ordering="sequentially">
+    <objectAnimator
+        android:duration="33"
+        android:interpolator="@android:interpolator/linear"
+        android:propertyName="pathData"
+        android:valueFrom="M 0.0,-7.0 l 0.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l 0.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueTo="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueType="pathType" />
+    <objectAnimator
+        android:duration="66"
+        android:interpolator="@android:interpolator/linear"
+        android:propertyName="pathData"
+        android:valueFrom="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueTo="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueType="pathType" />
+    <objectAnimator
+        android:duration="66"
+        android:interpolator="@android:interpolator/linear"
+        android:propertyName="pathData"
+        android:valueFrom="M -3.0,-7.0 l 6.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l -6.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueTo="M 0.0,-7.0 l 0.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l 0.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z"
+        android:valueType="pathType" />
+</set>
diff --git a/core/res/res/color/watch_switch_thumb_color_material.xml b/core/res/res/color/watch_switch_thumb_color_material.xml
new file mode 100644
index 0000000..d4796a0
--- /dev/null
+++ b/core/res/res/color/watch_switch_thumb_color_material.xml
@@ -0,0 +1,18 @@
+<?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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="?android:colorButtonNormal" android:state_enabled="false" />
+    <item android:color="?android:colorControlActivated" android:state_checked="true" />
+    <item android:color="?android:colorButtonNormal" />
+</selector>
\ No newline at end of file
diff --git a/core/res/res/drawable/watch_switch_thumb_material.xml b/core/res/res/drawable/watch_switch_thumb_material.xml
new file mode 100644
index 0000000..3463a4f
--- /dev/null
+++ b/core/res/res/drawable/watch_switch_thumb_material.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="20dp"
+    android:height="40dp"
+    android:viewportHeight="40"
+    android:viewportWidth="20">
+    <group
+        android:translateX="10"
+        android:translateY="20">
+        <path
+            android:name="thumb_path"
+            android:fillColor="@color/white"
+            android:pathData="M 0.0,-7.0 l 0.0,0.0 c 3.8659932486,0.0 7.0,3.1340067514 7.0,7.0 l 0.0,0.0 c 0.0,3.8659932486 -3.1340067514,7.0 -7.0,7.0 l 0.0,0.0 c -3.8659932486,0.0 -7.0,-3.1340067514 -7.0,-7.0 l 0.0,0.0 c 0.0,-3.8659932486 3.1340067514,-7.0 7.0,-7.0 Z" />
+    </group>
+</vector>
diff --git a/core/res/res/drawable/watch_switch_thumb_material_anim.xml b/core/res/res/drawable/watch_switch_thumb_material_anim.xml
new file mode 100644
index 0000000..686fb97
--- /dev/null
+++ b/core/res/res/drawable/watch_switch_thumb_material_anim.xml
@@ -0,0 +1,35 @@
+<?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.
+-->
+
+<animated-selector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:constantSize="true">
+    <item
+        android:id="@+id/off"
+        android:drawable="@drawable/watch_switch_thumb_material"
+        android:state_enabled="false" />
+    <item
+        android:id="@+id/on"
+        android:drawable="@drawable/watch_switch_thumb_material"
+        android:state_checked="true" />
+    <item
+        android:id="@+id/off"
+        android:drawable="@drawable/watch_switch_thumb_material" />
+    <transition
+        android:drawable="@drawable/watch_switch_thumb_to_on_anim_mtrl"
+        android:fromId="@id/off"
+        android:toId="@id/on" />
+    <transition
+        android:drawable="@drawable/watch_switch_thumb_to_off_anim_mtrl"
+        android:fromId="@id/on"
+        android:toId="@id/off" />
+</animated-selector>
diff --git a/core/res/res/drawable/watch_switch_thumb_to_off_anim_mtrl.xml b/core/res/res/drawable/watch_switch_thumb_to_off_anim_mtrl.xml
new file mode 100644
index 0000000..2c6ba2f
--- /dev/null
+++ b/core/res/res/drawable/watch_switch_thumb_to_off_anim_mtrl.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/watch_switch_thumb_material">
+    <target
+        android:name="thumb_path"
+        android:animation="@anim/watch_switch_thumb_to_off_animation" />
+</animated-vector>
diff --git a/core/res/res/drawable/watch_switch_thumb_to_on_anim_mtrl.xml b/core/res/res/drawable/watch_switch_thumb_to_on_anim_mtrl.xml
new file mode 100644
index 0000000..9f92361
--- /dev/null
+++ b/core/res/res/drawable/watch_switch_thumb_to_on_anim_mtrl.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/watch_switch_thumb_material">
+    <target
+        android:name="thumb_path"
+        android:animation="@anim/watch_switch_thumb_to_on_animation" />
+</animated-vector>
diff --git a/core/res/res/drawable/watch_switch_track_material.xml b/core/res/res/drawable/watch_switch_track_material.xml
new file mode 100644
index 0000000..00cdadb
--- /dev/null
+++ b/core/res/res/drawable/watch_switch_track_material.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:gravity="center_vertical|center_horizontal">
+        <shape android:shape="oval">
+            <solid android:color="@android:color/white" />
+            <size
+                android:width="40dp"
+                android:height="40dp" />
+        </shape>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/core/res/res/layout-watch/alert_dialog_material.xml b/core/res/res/layout-watch/alert_dialog_material.xml
index a8bb204..ce8e20a 100644
--- a/core/res/res/layout-watch/alert_dialog_material.xml
+++ b/core/res/res/layout-watch/alert_dialog_material.xml
@@ -14,7 +14,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<FrameLayout
+<com.android.internal.widget.WatchListDecorLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/parentPanel"
         android:layout_width="match_parent"
@@ -104,4 +104,4 @@
             </FrameLayout>
         </LinearLayout>
     </ScrollView>
-</FrameLayout>
+</com.android.internal.widget.WatchListDecorLayout>
diff --git a/core/res/res/layout-watch/preference_list_fragment_material.xml b/core/res/res/layout-watch/preference_list_fragment_material.xml
new file mode 100644
index 0000000..ae8f203
--- /dev/null
+++ b/core/res/res/layout-watch/preference_list_fragment_material.xml
@@ -0,0 +1,93 @@
+<?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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_height="match_parent"
+    android:layout_width="match_parent"
+    android:background="@android:color/transparent"
+    android:layout_removeBorders="true">
+
+    <FrameLayout
+        android:id="@android:id/list_container"
+        android:layout_width="match_parent"
+        android:layout_height="0px"
+        android:layout_weight="1">
+        <com.android.internal.widget.WatchHeaderListView
+            android:id="@android:id/list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            style="?attr/preferenceFragmentListStyle"
+            android:scrollbarStyle="@integer/preference_fragment_scrollbarStyle"
+            android:clipToPadding="false"
+            android:drawSelectorOnTop="false"
+            android:cacheColorHint="@android:color/transparent"
+            android:scrollbarAlwaysDrawVerticalTrack="true">
+             <TextView
+                android:id="@android:id/title"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingStart="@dimen/dialog_padding_material"
+                android:paddingEnd="@dimen/dialog_padding_material"
+                android:paddingBottom="8dp"
+                android:textAppearance="@style/TextAppearance.Material.Title"
+                android:gravity="center" />
+        </com.android.internal.widget.WatchHeaderListView>
+    </FrameLayout>
+
+    <TextView android:id="@android:id/empty"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:padding="@dimen/preference_fragment_padding_side"
+        android:gravity="center"
+        android:visibility="gone" />
+
+    <RelativeLayout android:id="@+id/button_bar"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:layout_weight="0"
+        android:visibility="gone">
+
+        <Button android:id="@+id/back_button"
+            android:layout_width="150dip"
+            android:layout_height="wrap_content"
+            android:layout_margin="5dip"
+            android:layout_alignParentStart="true"
+            android:text="@string/back_button_label"
+        />
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentEnd="true">
+
+            <Button android:id="@+id/skip_button"
+                android:layout_width="150dip"
+                android:layout_height="wrap_content"
+                android:layout_margin="5dip"
+                android:text="@string/skip_button_label"
+                android:visibility="gone"
+            />
+
+            <Button android:id="@+id/next_button"
+                android:layout_width="150dip"
+                android:layout_height="wrap_content"
+                android:layout_margin="5dip"
+                android:text="@string/next_button_label"
+            />
+        </LinearLayout>
+    </RelativeLayout>
+</LinearLayout>
diff --git a/core/res/res/layout-watch/preference_widget_switch.xml b/core/res/res/layout-watch/preference_widget_switch.xml
new file mode 100644
index 0000000..37d0c6b
--- /dev/null
+++ b/core/res/res/layout-watch/preference_widget_switch.xml
@@ -0,0 +1,30 @@
+<?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.
+-->
+
+<!-- Layout for a SwitchPreference -->
+<Switch xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+android:id/switch_widget"
+    android:layout_width="40dp"
+    android:layout_height="40dp"
+    android:switchMinWidth="40dp"
+    android:layout_gravity="center"
+    android:thumb="@drawable/watch_switch_thumb_material_anim"
+    android:thumbTint="@color/watch_switch_thumb_color_material"
+    android:track="@drawable/watch_switch_track_material"
+    android:trackTint="?android:colorPrimary"
+    android:focusable="false"
+    android:clickable="false"
+    android:background="@null" />
diff --git a/core/res/res/layout/alert_dialog_material.xml b/core/res/res/layout/alert_dialog_material.xml
index 6d33de6..178505c 100644
--- a/core/res/res/layout/alert_dialog_material.xml
+++ b/core/res/res/layout/alert_dialog_material.xml
@@ -20,6 +20,7 @@
     android:id="@+id/parentPanel"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:gravity="start|top"
     android:orientation="vertical">
 
     <include layout="@layout/alert_dialog_title_material" />
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 923dea19..ac59838 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Reg!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Probeer weer"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Probeer weer"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Ontsluit vir alle kenmerke en data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maksimum gesigontsluit-pogings oorskry"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Geen SIM-kaart nie"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Geen SIM-kaart in tablet nie."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige programme sal dalk nie behoorlik werk voordat die opgradering voltooi is nie"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> gradeer tans op …"</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>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index aca5cc5..264c4ad 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ትክክል!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"እንደገና ሞክር"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"እንደገና ሞክር"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ለሁሉም ባህሪያት እና ውሂብ ያስከፍቱ"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"የመጨረሻውን  የገጽ ክፈት ሙከራዎችን አልፏል"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ምንም ሲም ካርድ የለም"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"በጡባዊ ውስጥ ምንም SIM ካርድ የለም።"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"አንዳንድ መተግበሪያዎች ማላቁ እስኪጠናቀቅ ድረስ በአግባቡ ላይሰሩ ይችላሉ"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> በማላቅ ላይ…"</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>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 2d8221f..28a3d1b 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -690,6 +690,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"صحيح!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"أعد المحاولة"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"أعد المحاولة"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"إلغاء قفل جميع الميزات والبيانات"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"تم تجاوز الحد الأقصى لعدد محاولات تأمين الجهاز بالوجه"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"‏ليست هناك شريحة SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"‏ليس هناك شريحة SIM في الجهاز اللوحي."</string>
@@ -1114,7 +1115,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"قد لا تعمل بعض التطبيقات بشكل مناسب إلا بعد انتهاء الترقية"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"جارٍ ترقية <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
index f922c7f..1679dcc 100644
--- a/core/res/res/values-az-rAZ/strings.xml
+++ b/core/res/res/values-az-rAZ/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Düzdür!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Bir də cəhd edin"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Bir daha cəhd et"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Bütün funksiyalar və data üçün kiliddən çıxarın"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Sifət kilidi cəhdləriniz bitdi"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM kart yoxdur."</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Planşetdə SIM kart yoxdur."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> təkmilləşdirilir…"</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>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 9108861..84f1fa6 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -681,6 +681,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Tačno!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Pokušajte ponovo"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Pokušajte ponovo"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Otključaj za sve funkcije i podatke"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Premašen je najveći dozvoljeni broj pokušaja Otključavanja licem"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nema SIM kartice"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"U tabletu nema SIM kartice."</string>
@@ -1045,7 +1046,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadograđuje…"</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>
diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml
index 99eee23..79b6a1d 100644
--- a/core/res/res/values-be-rBY/strings.xml
+++ b/core/res/res/values-be-rBY/strings.xml
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Правільна!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Паспрабуйце яшчэ раз"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Паўтарыце спробу"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Разблакіраваць для ўсіх функцый і даных"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Перавышана максімальная колькасць спроб разблакоўкі праз Фэйскантроль"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Няма SIM-карты"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Няма SIM-карты ў планшэце."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Пэўныя праграмы могуць не працаваць належным чынам, пакуль не скончыцца абнаўленне"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> абнаўляецца…"</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>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index d800320..2f262de 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Правилно!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Опитайте отново"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Опитайте отново"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Отключете за достъп до всички функции и данни"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Максималният брой опити за отключване с лице е надвишен"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Няма SIM карта"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"В таблета няма SIM карта."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Някои приложения може да не работят правилно, докато надстройването не завърши"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надстройва…"</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>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index 79ea586..c41f4a7 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"সঠিক!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"আবার চেষ্টা করুন"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"আবার চেষ্টা করুন"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"সমস্ত বৈশিষ্ট্য এবং ডেটার জন্য আনলক করুন"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"মুখের সাহায্যে আনলক করার প্রচেষ্টা যতবার করা যায় তার সীমা পেরিয়ে গেছে"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"কোনো সিম কার্ড নেই"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ট্যাবলেটের মধ্যে কোনো সিম কার্ড নেই৷"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"আপগ্রেড সম্পন্ন না হওয়া পর্যন্ত কিছু অ্যাপ্লিকেশান সঠিকভাবে কাজ নাও করতে পারে"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> আপগ্রেড করা হচ্ছে…"</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>
@@ -1069,8 +1071,8 @@
       <item quantity="one">খোলা ওয়াই-ফাই নেটওয়ার্কগুলি উপলব্ধ রয়েছে</item>
       <item quantity="other">খোলা ওয়াই-ফাই নেটওয়ার্কগুলি উপলব্ধ রয়েছে</item>
     </plurals>
-    <string name="wifi_available_sign_in" msgid="9157196203958866662">"ওয়াই-ফাই নেটওয়ার্কে প্রবেশ করুন করুন"</string>
-    <string name="network_available_sign_in" msgid="1848877297365446605">"নেটওয়ার্কে প্রবেশ করুন করুন"</string>
+    <string name="wifi_available_sign_in" msgid="9157196203958866662">"ওয়াই-ফাই নেটওয়ার্কে প্রবেশ করুন"</string>
+    <string name="network_available_sign_in" msgid="1848877297365446605">"নেটওয়ার্কে প্রবেশ করুন"</string>
     <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
     <skip />
     <string name="wifi_no_internet" msgid="8451173622563841546">"ওয়াই-ফাই -তে কোনো ইন্টারনেট অ্যাক্সেস নেই"</string>
@@ -1400,7 +1402,7 @@
     <string name="kg_login_instructions" msgid="1100551261265506448">"আনলক করতে আপনার Google অ্যাকাউন্টের মাধ্যমে প্রবেশ করুন করুন৷"</string>
     <string name="kg_login_username_hint" msgid="5718534272070920364">"ব্যবহারকারী নাম (ইমেল)"</string>
     <string name="kg_login_password_hint" msgid="9057289103827298549">"পাসওয়ার্ড"</string>
-    <string name="kg_login_submit_button" msgid="5355904582674054702">"প্রবেশ করুন করুন"</string>
+    <string name="kg_login_submit_button" msgid="5355904582674054702">"প্রবেশ করুন"</string>
     <string name="kg_login_invalid_input" msgid="5754664119319872197">"অবৈধ ব্যবহারকারী নাম অথবা পাসওয়ার্ড৷"</string>
     <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"আপনার ব্যবহারকারী নাম অথবা পাসওয়ার্ড ভুলে গেছেন?\n"<b>"google.com/accounts/recovery"</b>" এ যান৷"</string>
     <string name="kg_login_checking_password" msgid="1052685197710252395">"অ্যাকাউন্ট পরীক্ষা করা হচ্ছে..."</string>
diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml
index 661548b..b1cf0a5 100644
--- a/core/res/res/values-bs-rBA/strings.xml
+++ b/core/res/res/values-bs-rBA/strings.xml
@@ -681,6 +681,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Ispravno!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Pokušajte ponovo"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Pokušajte ponovo"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Otključajte uređaj za sve funkcije i podatke"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Premašen maksimalni broj pokušaja otključavanja licem"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nema SIM kartice"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nema SIM kartice u tabletu."</string>
@@ -1047,7 +1048,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće raditi ispravno dok traje nadogradnja"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> se nadograđuje…"</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>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index fffcc74..bc55580 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correcte!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Torna-ho a provar"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Torna-ho a provar"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desbl. per accedir a totes les funcions i dades"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"S\'ha superat el nombre màxim d\'intents de desbloqueig facial"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"No hi ha cap targeta SIM."</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No hi ha cap targeta SIM a la tauleta."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"S\'està actualitzant <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index e7a7b60..857d33d 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Správně!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Zkusit znovu"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Zkusit znovu"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Funkce a data jsou k dispozici po odemčení"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Překročili jste maximální povolený počet pokusů o odemknutí obličejem."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Není vložena SIM karta"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"V tabletu není SIM karta."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Před dokončením upgradu nemusí některé aplikace fungovat správně"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> se upgraduje…"</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>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index faa11be..9df372a 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Rigtigt!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Prøv igen"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Prøv igen"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Lås op for at se alle funktioner og data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Det maksimale antal forsøg på at bruge Ansigtslås er overskredet"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Intet SIM-kort"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Der er ikke noget SIM-kort i tabletcomputeren."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nogle apps fungerer muligvis ikke korrekt, før opgraderingen er gennemført"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> opgraderer…"</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>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index e98eda7..eab128b 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Korrekt!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Erneut versuchen"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Erneut versuchen"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Entsperren, um alle Funktionen und Daten zu nutzen"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Die maximal zulässige Anzahl an Face Unlock-Versuchen wurde überschritten."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Keine SIM-Karte"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Keine SIM-Karte im Tablet"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Einige Apps funktionieren unter Umständen nicht richtig, bis das Upgrade abgeschlossen ist"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Für <xliff:g id="APPLICATION">%1$s</xliff:g> wird gerade ein Upgrade ausgeführt…"</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>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 2ceaa7a..062fcbf 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Σωστό!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Προσπαθήστε ξανά"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Προσπαθήστε ξανά"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Ξεκλείδωμα για όλες τις λειτουργίες και δεδομένα"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Έγινε υπέρβαση του μέγιστου αριθμού προσπαθειών Face Unlock"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Δεν υπάρχει κάρτα SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Δεν υπάρχει κάρτα SIM στο tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν σωστά μέχρι την ολοκλήρωση της αναβάθμισης"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Η εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> αναβαθμίζεται…"</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>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 3495216..7bf185c 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correct!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Try again"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Try again"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Unlock for all features and data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maximum Face Unlock attempts exceeded"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"No SIM card"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No SIM card in tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</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>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 3495216..7bf185c 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correct!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Try again"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Try again"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Unlock for all features and data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maximum Face Unlock attempts exceeded"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"No SIM card"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No SIM card in tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</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>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 3495216..7bf185c 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correct!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Try again"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Try again"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Unlock for all features and data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maximum Face Unlock attempts exceeded"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"No SIM card"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No SIM card in tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</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>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 0e59e05..425ce35 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correcto"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Vuelve a intentarlo."</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Volver a intentarlo"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desbloquea para acceder a funciones y datos"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Se superó el máximo de intentos permitido para el desbloqueo facial del dispositivo."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Sin tarjeta SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No hay tarjeta SIM en el tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Se está actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 946a23a..3956842 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correcto"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Vuelve a intentarlo"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Vuelve a intentarlo"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desbloquear para todos los datos y funciones"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Se ha superado el número máximo de intentos de desbloqueo facial."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Falta la tarjeta SIM."</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"No se ha insertado ninguna tarjeta SIM en el tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se está actualizando…"</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>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index aa1a252..388edd8 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Õige."</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Proovige uuesti"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Proovige uuesti"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Ava kõigi funktsioonide ja andmete nägemiseks"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maksimaalne teenusega Face Unlock avamise katsete arv on ületatud"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM-kaarti pole"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Tahvelarvutis pole SIM-kaarti."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Rakenduse <xliff:g id="APPLICATION">%1$s</xliff:g> versiooni uuendatakse …"</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>
diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml
index cf3cdf7..279478d 100644
--- a/core/res/res/values-eu-rES/strings.xml
+++ b/core/res/res/values-eu-rES/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Eredua zuzena da!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Saiatu berriro"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Saiatu berriro"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desblokeatu eginbide eta datu guztiak erabiltzeko"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Aurpegiaren bidez desblokeatzeko saiakera muga gainditu da"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Ez dago SIM txartelik"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Ez dago SIM txartelik tabletan."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Aplikazio batzuek agian ez dute behar bezala funtzionatuko bertsioa berritzen amaitu arte"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> bertsio-berritzen ari da…"</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>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 638b49e0..edabde3 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -127,7 +127,7 @@
     <item msgid="2254967670088539682">"‏برای برقراری تماس و ارسال پیام از طریق Wi-Fi، ابتدا از شرکت مخابراتی‌تان درخواست کنید این سرویس را راه‌اندازی کند. سپس دوباره از تنظیمات، تماس Wi-Fi را روشن کنید."</item>
   </string-array>
   <string-array name="wfcOperatorErrorNotificationMessages">
-    <item msgid="6177300162212449033">"ثبت نام با شرکت مخابراتی شما"</item>
+    <item msgid="6177300162212449033">"ثبت‌نام با شرکت مخابراتی شما"</item>
   </string-array>
   <string-array name="wfcSpnFormats">
     <item msgid="6830082633573257149">"%s"</item>
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"صحیح است!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"دوباره امتحان کنید"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"دوباره امتحان کنید"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"باز کردن قفل تمام قابلیت‌ها و داده‌ها"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"‏دفعات تلاش برای Face Unlock از حداکثر مجاز بیشتر شد"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"سیم کارت موجود نیست"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"سیم کارت درون رایانهٔ لوحی نیست."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"تا پایان ارتقا، ممکن است برخی از برنامه‌ها به‌درستی کار نکنند."</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> درحال ارتقا است...."</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>
@@ -1511,8 +1513,8 @@
     <string name="mediasize_japanese_kahu" msgid="6872696027560065173">"Kahu"</string>
     <string name="mediasize_japanese_kaku2" msgid="2359077233775455405">"Kaku2"</string>
     <string name="mediasize_japanese_you4" msgid="2091777168747058008">"You4"</string>
-    <string name="mediasize_unknown_portrait" msgid="3088043641616409762">"عمودی ناشناخته"</string>
-    <string name="mediasize_unknown_landscape" msgid="4876995327029361552">"افقی ناشناخته"</string>
+    <string name="mediasize_unknown_portrait" msgid="3088043641616409762">"عمودی ناشناس"</string>
+    <string name="mediasize_unknown_landscape" msgid="4876995327029361552">"افقی ناشناس"</string>
     <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"لغو شد"</string>
     <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"خطا هنگام نوشتن محتوا"</string>
     <string name="reason_unknown" msgid="6048913880184628119">"نامعلوم"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 75d44f5..054f5c4 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Oikein!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Yritä uudelleen"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Yritä uudelleen"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Käytä kaikkia ominaisuuksia avaamalla lukitus."</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Face Unlock -yrityksiä tehty suurin sallittu määrä."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Ei SIM-korttia"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Tablet-laitteessa ei ole SIM-korttia."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kaikki sovellukset eivät ehkä toimi oikein, ennen kuin päivitys on valmis."</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> päivittyy…"</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>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 5d4210a..3d2ea6a 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"C\'est exact!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Réessayer"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Réessayer"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Déverr. pour acc. aux autres fonction. et données"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Nombre maximal autorisé de tentatives Face Unlock atteint."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Aucune carte SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Aucune carte SIM n\'est insérée dans la tablette."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Mise à niveau de <xliff:g id="APPLICATION">%1$s</xliff:g> en cours…"</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>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index bbe2223f..29dcc57 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Combinaison correcte !"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Veuillez réessayer."</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Veuillez réessayer."</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Déverr. pour autres fonctionnalités et données"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Nombre maximal autorisé de tentatives Face Unlock atteint."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Pas de carte SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Aucune carte SIM n\'est insérée dans la tablette."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Mise à jour de l\'application <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index 5b5b3a3..6a28f59 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -249,7 +249,7 @@
     <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
     <string name="permgroupdesc_calendar" msgid="3889615280211184106">"acceder ao teu calendario"</string>
     <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string>
-    <string name="permgroupdesc_sms" msgid="4656988620100940350">"envíar e consultar mensaxes de SMS"</string>
+    <string name="permgroupdesc_sms" msgid="4656988620100940350">"enviar e consultar mensaxes de SMS"</string>
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Almacenamento"</string>
     <string name="permgroupdesc_storage" msgid="637758554581589203">"acceder a fotos, contido multimedia e ficheiros no teu dispositivo"</string>
     <string name="permgrouplab_microphone" msgid="171539900250043464">"Micrófono"</string>
@@ -259,7 +259,7 @@
     <string name="permgrouplab_phone" msgid="5229115638567440675">"Teléfono"</string>
     <string name="permgroupdesc_phone" msgid="6234224354060641055">"facer e xestionar chamadas telefónicas"</string>
     <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporais"</string>
-    <string name="permgroupdesc_sensors" msgid="7147968539346634043">"accede aos datos do sensor sobre as túas constantes vitais"</string>
+    <string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceder aos datos do sensor sobre as túas constantes vitais"</string>
     <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar contido da ventá"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona o contido dunha ventá coa que estás interactuando."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar a exploración táctil"</string>
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correcto!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Téntao de novo"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Téntao de novo"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desbloquea para gozar todas as funcións e datos"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Superouse o número máximo de intentos de desbloqueo facial"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Non hai ningunha tarxeta SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Non hai ningunha tarxeta SIM na tableta."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 2982c85..31bbe45 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"સાચું!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ફરી પ્રયાસ કરો"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ફરી પ્રયાસ કરો"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"તમામ સુવિધાઓ અને ડેટા માટે અનલૉક કરો"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"મહત્તમ ફેસ અનલૉક પ્રયાસો ઓળંગાયા"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"કોઈ SIM કાર્ડ નથી"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ટેબ્લેટમાં SIM કાર્ડ નથી."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"અપગ્રેડ સમાપ્ત ન થાય ત્યાં સુધી કેટલીક ઍપ્લિકેશનો કદાચ યોગ્ય રીતે કામ ન કરે"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> અપગ્રેડ થઈ રહી છે…"</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>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 7227880..ab0a42f 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"सही!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"फिर से प्रयास करें"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"फिर से प्रयास करें"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"सभी सुविधाओं और डेटा के लिए अनलॉक करें"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"फेस अनलॉक के अधिकतम प्रयासों की सीमा पार हो गई"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"कोई सिम कार्ड नहीं है"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"टेबलेट में कोई सिम कार्ड नहीं है."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"जब तक अपग्रेड पूरा नहीं हो जाता, तब तक संभव है कि कुछ ऐप्लिकेशन ठीक से कार्य ना करें"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> अपग्रेड हो रहा है…"</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>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 71337e2..0beaaea 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -681,6 +681,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Ispravno!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Pokušajte ponovo"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Pokušajte ponovo"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Otključajte za sve značajke i podatke"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Premašen je maksimalni broj Otključavanja licem"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nema SIM kartice"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"U tabletnom uređaju nema SIM kartice."</string>
@@ -1045,7 +1046,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće funkcionirati pravilno dok nadogradnja ne završi"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Nadogradnja aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index ce4bef5..c1c04ad1 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Helyes!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Próbálja újra"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Újra"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Oldja fel a funkciók és adatok eléréséhez"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Elérte az arcalapú feloldási kísérletek maximális számát"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nincs SIM-kártya."</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nincs SIM-kártya a táblagépben."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> frissítése folyamatban van"</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>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 25a069d..4f03608 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Ճիշտ է:"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Կրկին փորձեք"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Կրկին փորձեք"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Ապակողպեք՝ բոլոր գործառույթներն ու տվյալներն օգտագործելու համար"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Առավելագույն Դեմքով ապակողպման փորձերը գերազանցված են"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM քարտ չկա"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Գրասալիկում SIM քարտ չկա:"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Հնարավոր է՝ որոշ հավելվածներ մինչև նորացման ավարտը ճիշտ չաշխատեն"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածը նորացվում է…"</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>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 213d9b6..c08a8e0 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Perbaiki!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Coba lagi"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Coba lagi"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Membuka kunci untuk semua fitur dan data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Percobaan Face Unlock melebihi batas maksimum"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Tidak ada kartu SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Tidak ada kartu SIM dalam tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Beberapa aplikasi mungkin tidak berfungsi dengan baik jika peningkatan versi belum selesai"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> sedang ditingkatkan versinya…"</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>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index 20a5b17..55e14c4 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Rétt!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Reyndu aftur"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Reyndu aftur"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Taktu úr lás til að sjá alla eiginleika og gögn"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Hámarksfjölda tilrauna til að opna með andliti náð"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Ekkert SIM-kort"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Ekkert SIM-kort í spjaldtölvunni."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Hugsanlega virka sum forrit ekki fyrr en uppfærslunni lýkur"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppfærir…"</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>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index d89bf1b..0fb42a8 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -310,7 +310,7 @@
     <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Consente all\'applicazione di abilitare la modalità automobile."</string>
     <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"chiusura altre applicazioni"</string>
     <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"Consente all\'applicazione di terminare i processi in background di altre applicazioni. Ciò potrebbe causare l\'interruzione di altre applicazioni."</string>
-    <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"posizionamento davanti ad altre app"</string>
+    <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"visualizzazione sopra altre app"</string>
     <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Consente all\'applicazione di spostarsi sopra ad altre applicazioni o parti dell\'interfaccia utente. Potrebbe interferire con il tuo utilizzo dell\'interfaccia in qualsiasi applicazione o cambiare ciò che credi di vedere in altre applicazioni."</string>
     <string name="permlab_persistentActivity" msgid="8841113627955563938">"esecuzione permanente delle applicazioni"</string>
     <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Consente all\'applicazione di rendere persistenti in memoria alcune sue parti. Ciò può limitare la memoria disponibile per altre applicazioni, rallentando il tablet."</string>
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Corretta."</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Riprova"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Riprova"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Sblocca per accedere a funzioni e dati"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Numero massimo di tentativi di Sblocco col sorriso superato"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nessuna scheda SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nessuna scheda SIM presente nel tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alcune app potrebbero non funzionare correttamente fino al completamento dell\'upgrade"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Upgrade dell\'app <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 6907773..68a6f2b 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"נכון!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"נסה שוב"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"נסה שוב"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"בטל את הנעילה לכל התכונות והנתונים"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"חרגת ממספר הניסיונות המרבי של זיהוי פנים"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"‏אין כרטיס SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"‏אין כרטיס SIM בטאבלט."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ייתכן שאפליקציות מסוימות לא יפעלו כראוי עד סיום השדרוג"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> מבצעת שדרוג…"</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>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 2327c72..4dabe60 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"一致しました"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"もう一度お試しください"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"もう一度お試しください"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"すべての機能とデータを利用するにはロック解除"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"フェイスアンロックの最大試行回数を超えました"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIMカードが挿入されていません"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"タブレット内にSIMカードがありません。"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"アップグレードが完了するまで一部のアプリが正常に動作しない可能性があります"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」をアップグレードしています…"</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>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index e22602a..213b856c 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"სწორია!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"კიდევ სცადეთ"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"კიდევ სცადეთ"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ყველა ფუნქციისა და მონაცემის განბლოკვა"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"სახის ამოცნობით განბლოკვის მცდელობამ დაშვებულ რაოდენობას გადააჭარბა"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM ბარათი არ არის"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ტაბლეტში არ დევს SIM ბარათი."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ახალ ვერსიაზე გადასვლის დასრულებამდე, ზოგიერთმა აპმა შეიძლება არასწორად იმუშაოს"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ახალ ვერსიაზე გადადის…"</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>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index 88c1136..142bf05 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Дұрыс!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Қайталап көріңіз"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Қайталап көріңіз"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Мүмкіндіктер мен деректер үшін құлыпты ашыңыз"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Бет-әлпет арқылы ашу әрекеттері анықталған шегінен асып кетті"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM картасы жоқ"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Планшетте SIM картасы жоқ."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңарту аяқталғанға дейін кейбір қолданбалар дұрыс жұмыс істемеуі мүмкін"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңартылуда…"</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>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 1bf6ae5..177b4bb 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ត្រឹមត្រូវ!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ព្យាយាម​ម្ដង​ទៀត"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ព្យាយាម​ម្ដង​ទៀត"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ដោះសោលក្ខណៈពិសេស និងទិន្នន័យទាំងអស់"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"បាន​លើស​ការ​ព្យាយាម​ដោះ​សោ​តាម​ទម្រង់​មុខ"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"គ្មាន​ស៊ី​ម​កាត"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"គ្មាន​ស៊ីម​កាត​ក្នុង​កុំព្យូទ័រ​បន្ទះ។"</string>
@@ -1024,7 +1025,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"កម្មវិធីមួយចំនួនអាចនឹងមិនដំណើរការប្រក្រតីនោះទេ រហូតដល់ការអាប់គ្រេតបញ្ចប់"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> អាប់គ្រេត…"</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>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index 9973972..57afcce 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ಸರಿಯಾಗಿದೆ!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ಎಲ್ಲ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಡೇಟಾಗೆ ಅನ್‌ಲಾಕ್ ಮಾಡಿ"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"ಗರಿಷ್ಠ ಫೇಸ್ ಅನ್‍ಲಾಕ್ ಪ್ರಯತ್ನಗಳು ಮೀರಿವೆ"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ಯಾವುದೇ ಸಿಮ್‌ ಕಾರ್ಡ್ ಇಲ್ಲ"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ಟ್ಯಾಬ್ಲೆಟ್‌ನಲ್ಲಿ ಸಿಮ್‌ ಕಾರ್ಡ್ ಇಲ್ಲ."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ಅಪ್‌ಗ್ರೇಡ್ ಮುಗಿಯುವ ತನಕ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡದಿರಬಹುದು"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ಅಪ್‌ಗ್ರೇಡ್ ಆಗುತ್ತಿದೆ..."</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>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 8392b8d..37d2247 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"맞습니다."</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"다시 시도"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"다시 시도"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"모든 기능 및 데이터 잠금 해제"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"얼굴 인식 잠금해제 최대 시도 횟수를 초과했습니다."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM 카드가 없습니다."</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"태블릿에 SIM 카드가 없습니다."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"특정 앱은 업그레이드가 완료될 때까지 제대로 작동하지 않을 수 있습니다."</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> 업그레이드 중…"</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>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index 36765228..f7bb450 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Туура!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Дагы аракет кылыңыз"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Дагы аракет кылыңыз"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Элементтердин жана дайындардын кулпусун ачуу"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Жүзүнөн таанып ачуу аракеттеринин чегинен аштыңыз"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM-карта жок"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Планшетте SIM-карта жок."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңыртуу аягына чыкмайынча айрым колдонмолор талаптагыдай иштебей калышы мүмкүн"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңыртылууда..."</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>
diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml
index aa4d468..c48a07c 100644
--- a/core/res/res/values-lo-rLA/strings.xml
+++ b/core/res/res/values-lo-rLA/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ຖືກຕ້ອງ!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ລອງໃໝ່ອີກຄັ້ງ"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ທົດລອງອີກຄັ້ງ"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ປົດລັອກຄຸນສົມບັດ ແລະ ຂໍ້ມູນທັງໝົດ"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"ຄວາມພະຍາຍາມປົດລັອກດ້ວຍໜ້ານັ້ນ ເກີນຈຳນວນທີ່ກຳນົດແລ້ວ"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ບໍ່ມີ SIM card."</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ບໍ່ມີຊິມກາດໃນແທັບເລັດ."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ບາງແອັບອາດບໍ່ສາມາດເຮັດວຽກໄດ້ປົກກະຕິຈົນກວ່າຈະອັບເກຣດສຳເລັດ"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"ກຳລັງອັບເກຣດ<xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 8d67b18..9e9b25f 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Teisingai!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Bandykite dar kartą"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Bandykite dar kartą"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Atrakinę pasieksite visas funkcijas ir duomenis"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Viršijote maksimalų atrakinimo pagal veidą bandymų skaičių"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nėra SIM kortelės"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Planšetiniame kompiuteryje nėra SIM kortelės."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kai kurios programos gali tinkamai neveikti, kol naujovinimo procesas nebus baigtas"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"„<xliff:g id="APPLICATION">%1$s</xliff:g>“ naujovinama..."</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>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index d18a59b..1f82ad2 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -681,6 +681,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Pareizi!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Mēģināt vēlreiz"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Mēģināt vēlreiz"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Atbloķēt visām funkcijām un datiem"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Ir pārsniegts maksimālais Autorizācijas pēc sejas mēģinājumu skaits."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nav SIM kartes"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Planšetdatorā nav SIM kartes."</string>
@@ -1045,7 +1046,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Notiek lietotnes <xliff:g id="APPLICATION">%1$s</xliff:g> jaunināšana…"</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>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index 9130990..66d7a50 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Точно!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Обидете се повторно"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Обидете се повторно"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Отклучи за сите функции и податоци"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Максималниот број обиди на отклучување со лице е надминат"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Нема СИМ картичка"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Во таблетот нема СИМ картичка."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Некои апликации може да не работат правилно додека не се заврши надградбата"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надградува…"</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>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index 33764f5..02668a0 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ശരി!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"വീണ്ടും ശ്രമിക്കുക"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"വീണ്ടും ശ്രമിക്കുക"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"എല്ലാ ഫീച്ചറുകളും വിവരങ്ങളും ലഭിക്കാൻ അൺലോക്കുചെയ്യുക"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് ശ്രമങ്ങളുടെ പരമാവധി കഴിഞ്ഞു"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"സിം കാർഡില്ല"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ടാബ്‌ലെറ്റിൽ സിം കാർഡൊന്നുമില്ല."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"അപ്‌ഗ്രേഡ് പൂർത്തിയാകുന്നത് വരെ ചില ആപ്‌സ് ശരിയായി പ്രവർത്തിച്ചേക്കില്ല"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> അപ്ഗ്രേഡ് ചെയ്യുന്നു…"</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>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 543f4cc..8f70a2551 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Зөв!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Дахин оролдох"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Дахин оролдох"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Бүх онцлог, өгөгдлийн түгжээг тайлах"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Нүүрээр түгжээ тайлах оролдлогын тоо дээд хэмжээнээс хэтэрсэн"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM карт байхгүй"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Таблет SIM картгүй."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Шинэчилж дуустал зарим апп хэвийн бус ажиллаж болзошгүй"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>-г сайжруулж байна…"</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>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index 90bbc6b..86ddb15 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"अचूक!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"पुन्हा प्रयत्न करा"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"पुन्हा प्रयत्न करा"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"सर्व वैशिष्‍ट्ये आणि डेटासाठी अनलॉक करा"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"कमाल चेहरा अनलॉक प्रयत्न ओलांडले"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"सिम कार्ड नाही"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"टॅब्लेटमध्ये सिम कार्ड नाही."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"श्रेणीसुधारणा पूर्ण होईपर्यंत काही अॅप्स योग्यरित्या कार्य करणार नाहीत"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> श्रेणीसुधारित करीत आहे…"</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>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index 98f00cc..dee4268 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Betul!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Cuba lagi"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Cuba lagi"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Buka kunci semua ciri dan data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Telah melepasi had cubaan Buka Kunci Wajah"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Tiada kad SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Tiada kad SIM dalam tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sesetengah apl mungkin tidak berfungsi dengan betul sehingga peningkatan selesai"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> sedang ditingkatkan…"</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>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index e959065..fd9ff7a 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"မှန်ပါသည်"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ထပ် စမ်းပါ"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ထပ် စမ်းပါ"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ဝန်ဆောင်မှုနှင့် ဒေတာအားလုံးအတွက် လော့ခ်ဖွင့်ပါ"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"မျက်မှာမှတ် သော့ဖွင့်ခြင်း ခွင့်ပြုသော အကြိမ်ရေထက် ကျော်လွန်သွားပါပြီ"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ဆင်းကဒ် မရှိပါ"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"တက်ပလက်ထဲတွင်း ဆင်းကဒ် မရှိပါ"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"အဆင့်မြှင့်တင်ခြင်း မပြီးဆုံးသေးသ၍ အချို့အက်ပ်များကို ကောင်းမွန်စွာအသုံးပြုနိုင်ဦးမည် မဟုတ်ပါ"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ကို အဆင့်မြှင့်တင်နေပါသည်…"</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>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index f45d26d..82584d7 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Riktig!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Prøv på nytt"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Prøv på nytt"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Lås opp for å få alle funksjoner og data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Du har overskredet grensen for opplåsingsforsøk med Ansiktslås"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM-kortet mangler"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nettbrettet mangler SIM-kort."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Noen apper fungerer kanskje ikke skikkelig før oppgraderingen er fullført"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> oppgraderes …"</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>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index 88e9c5d..c130c50 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"सही!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"फेरि प्रयास गर्नुहोस्"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"फेरि प्रयास गर्नुहोस्"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"सबै सुविधाहरू र डेटाका लागि अनलक गर्नुहोस्"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"अत्याधिक मोहडा खोल्ने प्रयासहरू बढी भए।"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM कार्ड छैन"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ट्याब्लेटमा SIM कार्ड छैन।"</string>
@@ -1028,7 +1029,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"स्तरवृद्धि सम्पन्न नभएसम्म केही अनुप्रयोगहरू राम्ररी काम नगर्न सक्छन्"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> को स्तरवृद्धि हुँदैछ…"</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>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index b4d9f6e..35c58fe 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Juist!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Opnieuw proberen"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Nogmaals proberen"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Ontgrendelen voor alle functies en gegevens"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maximaal aantal pogingen voor Ontgrendelen via gezichtsherkenning overschreden"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Geen simkaart"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Geen SIM-kaart in tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige apps werken mogelijk pas correct nadat de upgrade is voltooid"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> upgraden…"</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>
@@ -1214,7 +1216,7 @@
     <string name="deny" msgid="2081879885755434506">"Weigeren"</string>
     <string name="permission_request_notification_title" msgid="6486759795926237907">"Toestemming gevraagd"</string>
     <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"Toestemming gevraagd\nvoor account <xliff:g id="ACCOUNT">%s</xliff:g>."</string>
-    <string name="forward_intent_to_owner" msgid="1207197447013960896">"U gebruikt deze app buiten je werkprofiel"</string>
+    <string name="forward_intent_to_owner" msgid="1207197447013960896">"Je gebruikt deze app buiten je werkprofiel"</string>
     <string name="forward_intent_to_work" msgid="621480743856004612">"U gebruikt deze app in je werkprofiel"</string>
     <string name="input_method_binding_label" msgid="1283557179944992649">"Invoermethode"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synchroniseren"</string>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index 578767c..0a05af3 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ਸਹੀ!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ਸਾਰੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਡੈਟੇ ਲਈ ਅਨਲੌਕ ਕਰੋ"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"ਅਧਿਕਤਮ ਚਿਹਰਾ ਅਨਲੌਕ ਕੋਸ਼ਿਸ਼ਾਂ ਵਧੀਆਂ"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ਕੋਈ SIM ਕਾਰਡ ਨਹੀਂ"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ਟੈਬਲੇਟ ਵਿੱਚ ਕੋਈ SIM ਕਾਰਡ ਨਹੀਂ।"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਐਪਾਂ ਅੱਪਗ੍ਰੇਡ ਦੇ ਪੂਰੀ ਹੋਣ ਤੱਕ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ਅੱਪਗ੍ਰੇਡ ਹੋ ਰਹੀ ਹੈ…"</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>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 8d0f707..cb968e6 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Poprawnie!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Spróbuj ponownie."</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Spróbuj ponownie."</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Odblokowanie wszystkich funkcji i danych"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Przekroczono maksymalną liczbę prób rozpoznania twarzy."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Brak karty SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Brak karty SIM w tablecie."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Uaktualniam aplikację <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index dcacac6..9feac65 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correto!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Tente novamente"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Tente novamente"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desbloqueio para todos os recursos e dados"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"O número máximo de tentativas de Desbloqueio por reconhecimento facial foi excedido"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Sem cartão SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Não há um cartão SIM no tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</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>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 3acdc91..6728bfe 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correcto!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Tentar novamente"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Tentar novamente"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desbloquear para todas as funcionalid. e dados"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Excedido o n.º máximo de tentativas de Desbloqueio Através do Rosto"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nenhum cartão SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nenhum cartão SIM no tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"O <xliff:g id="APPLICATION">%1$s</xliff:g> está a ser atualizado…"</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>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index dcacac6..9feac65 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Correto!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Tente novamente"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Tente novamente"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Desbloqueio para todos os recursos e dados"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"O número máximo de tentativas de Desbloqueio por reconhecimento facial foi excedido"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Sem cartão SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Não há um cartão SIM no tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</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>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index fa5a188..84ba444 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -681,6 +681,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Corect!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Încercați din nou"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Încercați din nou"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Deblocați pentru toate funcțiile și datele"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"S-a depășit numărul maxim de încercări pentru Deblocare facială"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Fără SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nu există card SIM în computerul tablet PC."</string>
@@ -1045,7 +1046,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Se face upgrade pentru <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 67cb519..d5bd7bf 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -268,7 +268,7 @@
     <string name="permgroupdesc_sensors" msgid="7147968539346634043">"доступ к данным датчиков о состоянии организма"</string>
     <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Получать содержимое окна"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Анализировать содержимое активного окна."</string>
-    <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включать аудиоподсказки"</string>
+    <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включать Изучение касанием"</string>
     <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Озвучивать нажимаемые элементы и разрешать управление устройством с помощью жестов."</string>
     <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Включать спец. возможности для Интернета"</string>
     <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Могут быть установлены дополнительные скрипты."</string>
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Правильно!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Повторите попытку"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Повторите попытку"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Разблок. для доступа ко всем функциям и данным"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Все попытки войти с помощью Фейсконтроля использованы"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Нет SIM-карты"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"SIM-карта не установлена."</string>
@@ -826,9 +827,9 @@
     <string name="searchview_description_clear" msgid="1330281990951833033">"Удалить запрос"</string>
     <string name="searchview_description_submit" msgid="2688450133297983542">"Отправить запрос"</string>
     <string name="searchview_description_voice" msgid="2453203695674994440">"Голосовой поиск"</string>
-    <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"Включить аудиоподсказки?"</string>
-    <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> хочет включить функцию \"Аудиоподсказки\". Она позволяет прослушивать или просматривать описание элементов, которых вы касаетесь, и управлять планшетным ПК с помощью жестов."</string>
-    <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> хочет включить функцию \"Аудиоподсказки\". Она позволяет прослушивать или просматривать описание элементов, которых вы касаетесь, и управлять телефоном с помощью жестов."</string>
+    <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"Включить Изучение касанием?"</string>
+    <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> хочет включить Изучение касанием. Вы сможете прослушивать или просматривать описание элементов, которых касаетесь, и управлять планшетом с помощью жестов."</string>
+    <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> хочет включить Изучение касанием. Вы сможете прослушивать или просматривать описание элементов, которых касаетесь, и управлять телефоном с помощью жестов."</string>
     <string name="oneMonthDurationPast" msgid="7396384508953779925">"1 месяц назад"</string>
     <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"Более месяца назад"</string>
     <plurals name="last_num_days" formatted="false" msgid="5104533550723932025">
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Во время обновления возможны неполадки в работе приложений."</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Обновление приложения \"<xliff:g id="APPLICATION">%1$s</xliff:g>\"…"</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>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index e68b2a7..bfce9ee 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"නිවැරදියි!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"නැවත උත්සාහ කරන්න"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"නැවත උත්සාහ කරන්න"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"සියලු විශේෂාංග සහ දත්ත අනවහිර කරන්න"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"මුහුණ භාවිතයෙන් අඟුළු හැරීමේ උපරිම ප්‍රයන්තයන් ගණන ඉක්මවා ඇත"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM පත නැත"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ටැබ්ලටයේ SIM පත නොමැත."</string>
@@ -1024,7 +1025,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"උත්ශ්‍රේණි කිරීම අවසන් වන තෙක් සමහර යෙදුම් නිසි ලෙස ක්‍රියා නොකළ හැකිය"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> උත්ශ්‍රේණි කරමින්…"</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>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 09401e3..9065aea 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -249,23 +249,23 @@
     <string name="user_owner_label" msgid="1119010402169916617">"Prepnúť na osobný"</string>
     <string name="managed_profile_label" msgid="5289992269827577857">"Prepnúť na pracovný"</string>
     <string name="permgrouplab_contacts" msgid="3657758145679177612">"Kontakty"</string>
-    <string name="permgroupdesc_contacts" msgid="6951499528303668046">"prístup k vašim kontaktom"</string>
+    <string name="permgroupdesc_contacts" msgid="6951499528303668046">"prístup ku kontaktom"</string>
     <string name="permgrouplab_location" msgid="7275582855722310164">"Poloha"</string>
     <string name="permgroupdesc_location" msgid="1346617465127855033">"prístup k polohe tohto zariadenia"</string>
     <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendár"</string>
     <string name="permgroupdesc_calendar" msgid="3889615280211184106">"prístup ku kalendáru"</string>
     <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string>
-    <string name="permgroupdesc_sms" msgid="4656988620100940350">"posielať a zobrazovať SMS"</string>
+    <string name="permgroupdesc_sms" msgid="4656988620100940350">"posielanie a zobrazovanie SMS"</string>
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Úložisko"</string>
-    <string name="permgroupdesc_storage" msgid="637758554581589203">"prístup k fotkám, médiám a súborom na zariadení"</string>
+    <string name="permgroupdesc_storage" msgid="637758554581589203">"prístup k fotkám, médiám a súborom v zariadení"</string>
     <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofón"</string>
-    <string name="permgroupdesc_microphone" msgid="4988812113943554584">"zaznamenávanie zvuku"</string>
+    <string name="permgroupdesc_microphone" msgid="4988812113943554584">"nahrávanie zvuku"</string>
     <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotoaparát"</string>
     <string name="permgroupdesc_camera" msgid="3250611594678347720">"fotenie a natáčanie videí"</string>
     <string name="permgrouplab_phone" msgid="5229115638567440675">"Telefón"</string>
-    <string name="permgroupdesc_phone" msgid="6234224354060641055">"telefonovať a spravovať hovory"</string>
+    <string name="permgroupdesc_phone" msgid="6234224354060641055">"telefonovanie a správu hovorov"</string>
     <string name="permgrouplab_sensors" msgid="416037179223226722">"Telesné senzory"</string>
-    <string name="permgroupdesc_sensors" msgid="7147968539346634043">"prístup k údajom senzorov o životných funkciách"</string>
+    <string name="permgroupdesc_sensors" msgid="7147968539346634043">"prístup k dátam senzorov vašich životných funkcií"</string>
     <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítať obsah okna"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Môžete preskúmať obsah okna, s ktorým pracujete."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnúť funkciu Preskúmanie dotykom"</string>
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Správne!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Skúsiť znova"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Skúsiť znova"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Všetky funkcie a dáta získate po odomknutí"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Prekročili ste maximálny povolený počet pokusov o odomknutie tvárou"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nie je vložená SIM karta"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"V tablete nie je žiadna SIM karta."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Aplikácia <xliff:g id="APPLICATION">%1$s</xliff:g> sa inovuje…"</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>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index e64ecbd..a5a2c8b 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Pravilno."</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Poskusi znova"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Poskusite znova"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Odklenite za dostop do vseh funkcij in podatkov"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Presegli ste dovoljeno število poskusov odklepanja z obrazom"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Ni kartice SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"V tabličnem računalniku ni kartice SIM."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nekatere aplikacije morda ne bodo delovale pravilno, dokler ne bo dokončana nadgradnja."</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadgrajuje …"</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>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index f7433a4..fe4d0b5 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Saktë!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Provo sërish"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Provo sërish"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Shkyçe për të gjitha funksionet dhe të dhënat"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Tentativat maksimale të \"Shkyçjes me fytyrë\" u tejkaluan"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Nuk ka kartë SIM"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Nuk ka kartë SIM në tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> po përmirësohet…"</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>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index b688692..881b1c7 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -681,6 +681,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Тачно!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Покушајте поново"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Покушајте поново"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Откључај за све функције и податке"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Премашен је највећи дозвољени број покушаја Откључавања лицем"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Нема SIM картице"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"У таблету нема SIM картице."</string>
@@ -1045,7 +1046,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Неке апликације можда неће исправно функционисати док се надоградња не доврши"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надограђује…"</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>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 0fd61b7..228e0b9 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Korrekt!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Försök igen"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Försök igen"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Lås upp för alla funktioner och all data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Du har försökt låsa upp med Ansiktslås för många gånger"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Inget SIM-kort"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Inget SIM-kort i surfplattan."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppgraderas …"</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>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 2bde55d..b9c995f 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -676,6 +676,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Sahihi!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Jaribu tena"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Jaribu tena"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Fungua kifaa ili upate data na vipengele vyote"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Majaribio ya Juu ya Kufungua Uso yamezidishwa"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Hakuna SIM kadi"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Hakuna SIM kadi katika kompyuta ndogo."</string>
@@ -1020,7 +1021,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Huenda baadhi ya programu zisifanye kazi vizuri hadi itakapomaliza kusasisha"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> inapata toleo jipya…"</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>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index 6ace6e1..99488ee 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"சரி!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"மீண்டும் முயற்சிக்கவும்"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"மீண்டும் முயற்சிக்கவும்"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"எல்லா அம்சங்கள் &amp; தரவை பெற, சாதனத்தை திறக்கவும்"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"முகம் திறப்பதற்கான அதிகபட்ச முயற்சிகள் கடந்தன"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"சிம் கார்டு இல்லை"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"டேப்லெட்டில் சிம் கார்டு இல்லை."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"மேம்படுத்துவது முடியும் வரை, சில பயன்பாடுகள் சரியாக வேலைசெய்யாமல் போகக்கூடும்"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>ஐ மேம்படுத்துகிறது…"</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>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index d004032..51f9175 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"సరైనది!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"మళ్లీ ప్రయత్నించండి"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"మళ్లీ ప్రయత్నించండి"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"అన్ని లక్షణాలు మరియు డేటా కోసం అన్‌లాక్ చేయండి"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"ముఖంతో అన్‌లాక్ ప్రయత్నాల గరిష్ట పరిమితి మించిపోయారు"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"సిమ్ కార్డు లేదు"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"టాబ్లెట్‌లో సిమ్ కార్డు లేదు."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"అప్‌గ్రేడ్ పూర్తయ్యే వరకు కొన్ని అనువర్తనాలు సరిగ్గా పని చేయకపోవచ్చు"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>ని అప్‌గ్రేడ్ చేస్తోంది…"</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>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 458fc72..d2b7a1b 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ถูกต้อง!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ลองอีกครั้ง"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ลองอีกครั้ง"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"ปลดล็อกคุณลักษณะและข้อมูลทั้งหมด"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"มีความพยายามที่จะใช้ Face Unlock เกินขีดจำกัด"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ไม่มีซิมการ์ด"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ไม่มีซิมการ์ดในแท็บเล็ต"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"แอปบางแอปอาจทำงานไม่ถูกต้องจนกว่าจะอัปเกรดเสร็จ"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"กำลังอัปเกรด <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index fbf1f49..7dedd2a 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Tama!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Subukang muli"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Subukang muli"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"I-unlock para sa lahat ng feature at data"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Nalagpasan na ang maximum na mga pagtatangka sa Face Unlock"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Walang SIM card"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Walang SIM card sa tablet."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"Nag-a-upgrade ang <xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 119cd6d..7ae29cd 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Doğru!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Tekrar deneyin"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Tekrar deneyin"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Tüm özellikler ve veriler için kilidi açın"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Yüz Tanıma Kilidi için maksimum deneme sayısı aşıldı"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM kart yok"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Tablette SIM kart yok."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> yeni sürüme geçiriliyor…"</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>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index f1a7a19..fdf337e 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -684,6 +684,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Правильно!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Повторіть спробу"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Повторіть спробу"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Розблокуйте, щоб бачити всі функції й дані"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Перевищено максимальну кількість спроб розблокування за допомогою функції \"Фейсконтроль\""</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Відсутня SIM-карта"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"У пристр. нема SIM-карти."</string>
@@ -1068,7 +1069,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Деякі додатки можуть не працювати належним чином, доки не завершиться оновлення"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"Додаток <xliff:g id="APPLICATION">%1$s</xliff:g> оновлюється…"</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>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index 9bf9a01..3b3fc35 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"صحیح!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"دوبارہ کوشش کریں"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"دوبارہ کوشش کریں"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"تمام خصوصیات اور ڈیٹا کیلئے غیر مقفل کریں"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"چہرہ کے ذریعے غیر مقفل کریں کی زیادہ سے زیادہ کوششوں سے تجاوز کرگیا"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"‏کوئی SIM کارڈ نہیں ہے"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"‏ٹیبلیٹ میں کوئی SIM کارڈ نہیں ہے۔"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"اپ گریڈ ختم ہونے تک شاید کچھ ایپس ٹھیک طرح سے کام نہ کریں"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> اپ گریڈ ہو رہی ہے…"</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>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index f4684c7..232b63b 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -245,7 +245,7 @@
     <string name="permgrouplab_contacts" msgid="3657758145679177612">"Kontaktlar"</string>
     <string name="permgroupdesc_contacts" msgid="6951499528303668046">"kontaktlarga kirish"</string>
     <string name="permgrouplab_location" msgid="7275582855722310164">"Joylashuv"</string>
-    <string name="permgroupdesc_location" msgid="1346617465127855033">"shu qurilmaning joylashuvi haqidagi ma’lumotlarga kirish"</string>
+    <string name="permgroupdesc_location" msgid="1346617465127855033">"shu qurilmaning joylashuvi haqidagi axborotga kirish"</string>
     <string name="permgrouplab_calendar" msgid="5863508437783683902">"Taqvim"</string>
     <string name="permgroupdesc_calendar" msgid="3889615280211184106">"taqvimingizga kirish"</string>
     <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string>
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"To‘g‘ri!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Qaytadan urining"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Qaytadan urining"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Barcha funksiya va ma’lumotlardan foydalanish uchun qulfdan chiqaring"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Yuzni tanitib qulfni ochishga urinish miqdoridan oshib ketdi"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM karta yo‘q"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Planshetingizda SIM karta yo‘q."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yangilanish vaqtida ba’zi ilovalar to‘g‘ri ishlamasligi mumkin"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi yangilanmoqda…"</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>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 6d58054..9dcf6bf 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Chính xác!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Thử lại"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Thử lại"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Mở khóa đối với tất cả các tính năng và dữ liệu"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Đã vượt quá số lần Mở khóa bằng khuôn mặt tối đa"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Không có thẻ SIM nào"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Không có thẻ SIM nào trong máy tính bảng."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <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="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> đang nâng cấp…"</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>
diff --git a/core/res/res/values-watch/styles_material.xml b/core/res/res/values-watch/styles_material.xml
index 5c4c632..f5735e6 100644
--- a/core/res/res/values-watch/styles_material.xml
+++ b/core/res/res/values-watch/styles_material.xml
@@ -57,6 +57,10 @@
         <item name="divider">@empty</item>
     </style>
 
+    <style name="Preference.Material.PreferenceScreen" parent="Preference.Material.BasePreferenceScreen">
+        <item name="divider">@empty</item>
+    </style>
+
     <style name="Widget.Material.TextView" parent="Widget.TextView">
         <item name="breakStrategy">balanced</item>
     </style>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 69c3f7e..f0787f5 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -678,6 +678,8 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"正确!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"重试"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"重试"</string>
+    <!-- no translation found for lockscreen_storage_locked (9167551160010625200) -->
+    <skip />
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"已超过“人脸解锁”尝试次数上限"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"没有 SIM 卡"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"平板电脑中没有SIM卡。"</string>
@@ -1022,7 +1024,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"在升级完成之前,部分应用可能无法正常运行"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"正在升级<xliff:g id="APPLICATION">%1$s</xliff:g>…"</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>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index eb9e2fb..a453eba 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"正確!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"再試一次"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"再試一次"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"解鎖即可使用所有功能和資料"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"已超過臉容解鎖嘗試次數上限"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"找不到 SIM 卡"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"平板電腦中沒有 SIM 卡。"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"部分應用程式需要完成升級方可正常運作"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」正在升級…"</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>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 9bd2002..4dd8d8f 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"正確!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"再試一次"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"再試一次"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"解鎖即可使用所有功能和資料"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"已超過人臉解鎖嘗試次數上限"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"找不到 SIM 卡"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"平板電腦中沒有 SIM 卡。"</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"升級完成前,部分應用程式可能無法正常運作"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"正在升級「<xliff:g id="APPLICATION">%1$s</xliff:g>」…"</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>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index cdd071d..c6e8988 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -678,6 +678,7 @@
     <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Lungile!"</string>
     <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Zama futhi"</string>
     <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Zama futhi"</string>
+    <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Vulela zonke izici nedatha"</string>
     <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Ukuzama Kokuvula Ubuso Okuningi kudluliwe"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Alikho ikhadi le-SIM."</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Alikho ikhadi le-SIM efonini."</string>
@@ -1022,7 +1023,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>
+    <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
+    <skip />
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ezinye izinhlelo zokusebenza kungenzeka zingasebenzi kahle kuze kuqedwe ukuthuthukiswa"</string>
     <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> iyathuthukisa…"</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>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 3f889f9..0c08564 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -7901,6 +7901,13 @@
         <attr name="divider" />
     </declare-styleable>
 
+    <!-- Base attributes available to PreferenceScreen. -->
+    <declare-styleable name="PreferenceScreen">
+        <!-- The layout for the PreferenceScreen. This should rarely need to be changed. -->
+        <attr name="screenLayout" format="reference" />
+        <attr name="divider" />
+    </declare-styleable>
+
     <!-- Base attributes available to PreferenceActivity. -->
     <declare-styleable name="PreferenceActivity">
         <!-- The layout for the Preference Activity. This should rarely need to be changed. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 473796a..8d3cd48 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1756,6 +1756,10 @@
     <string name="lockscreen_pattern_wrong">Try again</string>
     <!-- On the unlock password screen, shown when the user enters the wrong lock password and must try again. -->
     <string name="lockscreen_password_wrong">Try again</string>
+
+    <!-- On the keyguard screen, this string explains that some features or data may not be available until the device is unlocked. [CHAR LIMIT=48] -->
+    <string name="lockscreen_storage_locked">Unlock for all features and data</string>
+
     <!-- Shown when face unlock failed multiple times so we're just using the backup -->
     <string name="faceunlock_multiple_failures">Maximum Face Unlock attempts exceeded</string>
 
@@ -2789,8 +2793,8 @@
     <!-- [CHAR LIMIT=NONE] Message shown in upgrading dialog when doing an fstrim. -->
     <string name="android_upgrading_fstrim">Optimizing storage.</string>
 
-    <!-- [CHAR LIMIT=40] Title of notification that is shown when performing a system upgrade. -->
-    <string name="android_upgrading_notification_title">Android is upgrading</string>
+    <!-- [CHAR LIMIT=40] Title of notification that is shown when finishing a system upgrade. -->
+    <string name="android_upgrading_notification_title">Finishing Android update\u2026</string>
     <!-- [CHAR LIMIT=200] Body of notification that is shown when performing a system upgrade. -->
     <string name="android_upgrading_notification_body">Some apps may not work properly until the upgrade finishes</string>
 
@@ -4161,7 +4165,7 @@
 
     <!-- [CHAR_LIMIT=NONE] Data saver: Feature description -->
     <string name="data_saver_description">To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them.</string>
-    <!-- [CHAR_LIMIT=30] Data saver: Title on first-time dialogFeature description -->
+    <!-- [CHAR_LIMIT=35] Data saver: Title on first-time dialog -->
     <string name="data_saver_enable_title">Turn on Data Saver?</string>
     <!-- [CHAR_LIMIT=16] Data saver: Button to turn it on on first-time dialog -->
     <string name="data_saver_enable_button">Turn on</string>
diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml
index 8c1a927..4435537 100644
--- a/core/res/res/values/styles_material.xml
+++ b/core/res/res/values/styles_material.xml
@@ -81,7 +81,12 @@
         <item name="layout">@layout/preference_widget_seekbar_material</item>
     </style>
 
-    <style name="Preference.Material.PreferenceScreen"/>
+    <style name="Preference.Material.BasePreferenceScreen">
+        <item name="screenLayout">@layout/preference_list_fragment_material</item>
+        <item name="divider">?attr/listDivider</item>
+    </style>
+
+    <style name="Preference.Material.PreferenceScreen" parent="Preference.Material.BasePreferenceScreen"/>
 
     <style name="Preference.Material.DialogPreference">
         <item name="positiveButtonText">@string/ok</item>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 516aa18..2a40c08 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2646,6 +2646,8 @@
   <!-- Colon separated list of package names that should be granted DND access -->
   <java-symbol type="string" name="config_defaultDndAccessPackages" />
 
+  <java-symbol type="string" name="lockscreen_storage_locked" />
+
   <!-- Used for MimeIconUtils. -->
   <java-symbol type="drawable" name="ic_doc_apk" />
   <java-symbol type="drawable" name="ic_doc_audio" />
diff --git a/docs/html-intl/intl/es/preview/guide.jd b/docs/html-intl/intl/es/about/versions/marshmallow/android-6.0-testing.jd
similarity index 98%
rename from docs/html-intl/intl/es/preview/guide.jd
rename to docs/html-intl/intl/es/about/versions/marshmallow/android-6.0-testing.jd
index 9d12b57..20d2d6e 100644
--- a/docs/html-intl/intl/es/preview/guide.jd
+++ b/docs/html-intl/intl/es/about/versions/marshmallow/android-6.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>En este documento</h2>
       <ol>
         <li><a href="#runtime-permissions">Prueba de los permisos</a></li>
diff --git a/docs/html-intl/intl/es/preview/behavior-changes.jd b/docs/html-intl/intl/es/about/versions/nougat/android-7.0-changes.jd
similarity index 97%
rename from docs/html-intl/intl/es/preview/behavior-changes.jd
rename to docs/html-intl/intl/es/about/versions/nougat/android-7.0-changes.jd
index 112c1c9..d4438f2 100644
--- a/docs/html-intl/intl/es/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/es/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>En este documento</h2>
 
@@ -77,7 +77,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>Figura 1:</strong> Ilustración del modo en que Descanso aplica un primer nivel de
   restricciones de actividad del sistema para prolongar la duración de la batería.
@@ -96,7 +96,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" />
 <p class="img-caption">
   <strong>Figura 2:</strong> Ilustración del modo en que Descanso aplica un segundo nivel de
   restricciones de actividad del sistema después de que el dispositivo permanece quieto durante un tiempo determinado.
@@ -282,10 +282,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/es/preview/samples.jd b/docs/html-intl/intl/es/about/versions/nougat/android-7.0-samples.jd
similarity index 77%
rename from docs/html-intl/intl/es/preview/samples.jd
rename to docs/html-intl/intl/es/about/versions/nougat/android-7.0-samples.jd
index 204d11a..6461b54 100644
--- a/docs/html-intl/intl/es/preview/samples.jd
+++ b/docs/html-intl/intl/es/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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 encriptado por
   dispositivo que esté siempre disponible mientras el dispositivo se haya iniciado.
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
 Obtener en GitHub</a>
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/es/preview/guide.jd b/docs/html-intl/intl/es/about/versions/nougat/android-7.0-testing.jd
similarity index 98%
copy from docs/html-intl/intl/es/preview/guide.jd
copy to docs/html-intl/intl/es/about/versions/nougat/android-7.0-testing.jd
index 9d12b57..20d2d6e 100644
--- a/docs/html-intl/intl/es/preview/guide.jd
+++ b/docs/html-intl/intl/es/about/versions/nougat/android-7.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>En este documento</h2>
       <ol>
         <li><a href="#runtime-permissions">Prueba de los permisos</a></li>
diff --git a/docs/html-intl/intl/es/preview/api-overview.jd b/docs/html-intl/intl/es/about/versions/nougat/android-7.0.jd
similarity index 98%
rename from docs/html-intl/intl/es/preview/api-overview.jd
rename to docs/html-intl/intl/es/about/versions/nougat/android-7.0.jd
index 7cee010..97bf2f1 100644
--- a/docs/html-intl/intl/es/preview/api-overview.jd
+++ b/docs/html-intl/intl/es/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Funciones claves para desarrolladores</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -78,7 +78,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/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>
@@ -142,15 +142,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -277,7 +277,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/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.
@@ -357,7 +357,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/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.
diff --git a/docs/html-intl/intl/es/preview/index.jd b/docs/html-intl/intl/es/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/es/preview/index.jd
rename to docs/html-intl/intl/es/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/es/design/patterns/notifications.jd b/docs/html-intl/intl/es/design/patterns/notifications.jd
deleted file mode 100644
index 5499e8b..0000000
--- a/docs/html-intl/intl/es/design/patterns/notifications.jd
+++ /dev/null
@@ -1,872 +0,0 @@
-page.title=Notificaciones
-page.tags="notifications","design","L"
-@jd:body
-
-  <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>Documentos para desarrolladores</h3>
-    <p>Cómo notificar al usuario</p>
-  </div>
-</a>
-
-<a class="notice-designers" href="notifications_k.html">
-  <div>
-    <h3>Notificaciones en Android 4.4 y versiones anteriores</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>Video</h3>
-    <p>DevBytes: Notificaciones en la vista previa para desarrolladores de Android L</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>El sistema de notificaciones les permite a los usuarios mantenerse informados sobre eventos relevantes y
-oportunos
-de su aplicación, como nuevos mensajes de chat de un amigo o un evento del calendario.
-Piense en las notificaciones como un canal de noticias que alerta a los usuarios sobre eventos
-importantes
-a medida que se producen o como un registro en el que se relatan los eventos mientras el usuario no está prestando
-atención y que se sincroniza de forma correspondiente en todos los dispositivos de Android.</p>
-
-<h4 id="New"><strong>Novedades de Android 5.0</strong></h4>
-
-<p>En Android 5.0, las notificaciones reciben actualizaciones importantes a nivel estructural,
-visual y funcional.</p>
-
-<ul>
-  <li>En las notificaciones, se han realizado cambios visuales de forma coherente con el nuevo
-tema Material Design.</li>
-  <li> Las notificaciones ahora están disponibles en la pantalla de bloqueo del dispositivo y
-el contenido confidencial se puede seguir
- ocultando detrás de dicha pantalla.</li>
-  <li>En las notificaciones de alta prioridad que se reciben cuando el dispositivo está en uso, ahora se utiliza un nuevo formato llamado
- notificaciones emergentes.</li>
-  <li>Notificaciones sincronizadas en la nube: Si se omite una notificación en un dispositivo
-Android, esta se omitirá
- también en los demás dispositivos.</li>
-</ul>
-
-<p class="note"><strong>Nota:</strong> El diseño de las notificaciones de esta versión de
-Android se diferencia
-de manera significativa del diseño de las versiones anteriores. Para obtener información sobre el diseño de las notificaciones en versiones
-anteriores, consulte <a href="./notifications_k.html">Notificaciones en Android 4.4 y versiones anteriores</a>.</p>
-
-<h2 id="Anatomy">Anatomía de una notificación</h2>
-
-<p>En esta sección, se repasan las partes básicas de una notificación y cómo se pueden mostrar en
-diferentes tipos de dispositivos.</p>
-
-<h3 id="BaseLayout">Diseño básico</h3>
-
-<p>Como mínimo, todas las notificaciones poseen un diseño básico que incluye lo siguiente:</p>
-
-<ul>
-  <li> El <strong>icono</strong> de la notificación. El icono simboliza la
-aplicación que lo origina. También puede
- indicar el tipo de notificación si la aplicación genera más de un
-tipo.</li>
-  <li> <strong>Título</strong> de la notificación y
-<strong>texto</strong> adicional.</li>
-  <li> Una <strong>marca de tiempo</strong>.</li>
-</ul>
-
-<p>Las notificaciones creadas con {@link android.app.Notification.Builder Notification.Builder}
-para versiones anteriores de la plataforma lucen y funcionan igual en Android
-5.0; solo presentan algunos cambios de estilo que el sistema realiza
-por usted. Para obtener más información sobre las notificaciones en versiones anteriores de
-Android, consulte
-<a href="./notifications_k.html">Notificaciones en Android 4.4 y versiones anteriores</a>.</p></p>
-
-
-    <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      Diseño básico de una notificación para dispositivos portátiles (izquierda) y la misma notificación en Wear (derecha),
- con una fotografía del usuario y un icono de la notificación
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">Diseños expandidos</h3>
-
-
-<p>Usted puede decidir cuántos detalles mostrarán las notificaciones
-de su aplicación. Las notificaciones pueden mostrar las primeras
-líneas de un mensaje o la vista previa de una imagen más grande. A través de la
-información adicional, se proporciona más
-contexto al usuario y, en algunos casos, se puede permitir que el usuario lea todo el
-mensaje. El usuario
-puede acercar o alejar la imagen, o deslizar la imagen con un solo dedo para alternar entre los diseños compacto
-y expandido.
- En el caso de las notificaciones de un solo evento, Android proporciona tres plantillas de
-diseños expandidos (texto, bandeja de entrada e
- imagen) para que usted utilice en su aplicación. En las siguientes imágenes, se muestra cómo
-se ven las notificaciones de un solo evento en los
- dispositivos portátiles (izquierda) y los dispositivos con Wear (derecha).</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">Acciones</h3>
-
-<p>Android es compatible con acciones opcionales que se muestran en la parte inferior
-de la notificación.
-A través de las acciones, los usuarios pueden administrar las tareas más comunes para una determinada
-notificación desde el interior del panel de notificaciones, sin tener que abrir la
-aplicación que la originó.
-Esto acelera la interacción y, junto con la función deslizar para descartar, ayuda a los usuarios a enfocarse en las
-notificaciones que les parecen importantes.</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" />
-
-
-
-<p style="clear:both">Sea moderado con la cantidad de acciones que incluye en una
-notificación. Mientras más
-acciones incluya, mayor complejidad cognitiva generará. Limítese a
-la menor cantidad posible
-de acciones al incluir solo las acciones más importantes
-y significativas.</p>
-
-<p>Las acciones recomendadas para las notificaciones son aquellas que:</p>
-
-<ul>
-  <li> Son fundamentales, frecuentes y típicas para el tipo de contenido que está
-mostrando.
-  <li> Les permiten a los usuarios realizar las tareas rápidamente.
-</ul>
-
-<p>Evite acciones que sean:</p>
-
-<ul>
-  <li> ambiguas;
-  <li> iguales que la acción predeterminada de la notificación (tales como "Leer" o
-"Abrir").
-</ul>
-
-
-
-<p>Puede especificar un máximo de tres acciones, cada una de ellas formada por un icono
-de la acción y un nombre.
- Al agregarle acciones a un diseño básico simple, la notificación será expandible,
-incluso si no
- cuenta con un diseño expandido. Como las acciones solo se muestran en las notificaciones
-expandidas
- y, de lo contrario, se ocultan, asegúrese de que cualquier acción que el
-usuario invoque desde
- una notificación esté disponible también desde la aplicación
-asociada.</p>
-
-<h2 style="clear:left">Notificación emergente</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" />
-  <p class="img-caption">
-    Ejemplo de una notificación emergente (llamada telefónica entrante, alta prioridad)
-que aparece en la parte superior de una
- aplicación inmersiva
-  </p>
-</div>
-
-<p>Cuando llega una notificación de alta prioridad (ver a la derecha), esta se presenta
-a los usuarios
-durante un período breve, con un diseño expandido que expone las posibles acciones.</p>
-<p> Luego de este período, la notificación se retira hacia el
-panel de notificaciones. Si la <a href="#correctly_set_and_manage_notification_priority">prioridad</a> de una notificación
-se marca como Alta, Máxima o Pantalla completa, se obtiene una notificación emergente.</p>
-
-<p><b>Buenos ejemplos de notificaciones emergentes</b></p>
-
-<ul>
-  <li> Llamada telefónica entrante cuando se utiliza un dispositivo</li>
-  <li> Alarma cuando se utiliza un dispositivo</li>
-  <li> Nuevo mensaje SMS</li>
-  <li> Batería baja</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">Pautas</h2>
-
-
-<h3 id="MakeItPersonal">Personalización</h3>
-
-<p>En el caso de las notificaciones de los elementos que envía otra persona (como un mensaje o una
-actualización de estado), utilice
-{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()} para incluir la imagen de esa persona. Además, adjunte información sobre
-la persona en los metadatos de la notificación (consulte {@link android.app.Notification#EXTRA_PEOPLE}).</p>
-
-<p>El icono principal de su notificación seguirá estando visible, de modo que el usuario pueda asociarlo
-con el icono
-que se muestra en la barra de estado.</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" />
-<p style="margin-top:10px" class="img-caption">
-  Notificación en la que se muestra la persona que la generó y el contenido que envió.
-</p>
-
-
-<h3 id="navigate_to_the_right_place">Navegación hacia el lugar correcto</h3>
-
-<p>Cuando el usuario toca el cuerpo de una notificación (fuera de los botones de acción
-), esta se abre
-en el lugar en el que el usuario puede visualizarla y utilizar los datos que se mencionan en la
-notificación. En la mayoría de los casos, se tratará de la vista detallada de un solo elemento de datos como un mensaje,
-pero también se podría tratar de una
-vista resumida si la notificación está apilada. Si la aplicación dirige al
-usuario a cualquier sitio que se encuentre debajo del nivel superior, incorpore la navegación en la pila de retroceso de la aplicación para que el
-usuario pueda presionar el botón Back del sistema y regresar al nivel superior. Para obtener más información, consulte
-<em>Navegación dentro de la aplicación a través de los widgets y las notificaciones de la pantalla de Inicio</em> en el patrón de
-diseño <a href="{@docRoot}design/patterns/navigation.html#into-your-app">Navegación</a>.</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">Configuración y administración
-correctas de la prioridad
-de las notificaciones</h3>
-
-<p>Android admite el uso de una marca de prioridad en las notificaciones. Esta marca
-le permite influir en el lugar donde aparecerá la notificación, en relación con otras notificaciones, y
-lo ayuda a asegurarse de
-que los usuarios vean siempre primero las notificaciones más importantes. Cuando publica una notificación, puede elegir
-entre los
-siguientes niveles de prioridad:</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>Prioridad</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>Uso</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>Utilícelo para las notificaciones críticas y urgentes en las que se le informa al usuario sobre una condición
-que es
-crítica en el tiempo o que se debe resolver antes de que el usuario continúe con una
-tarea específica.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>Utilícelo, principalmente, para comunicaciones importantes, como eventos de mensajes o
-chats con contenido que sea particularmente interesante para el usuario.
-Las notificaciones de alta prioridad activan la pantalla de notificaciones emergentes.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>Utilícelo para todas las notificaciones que no pertenecen a ninguno de los otros tipos de prioridades que se describen aquí.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>Utilícelo para las notificaciones que desea que el usuario reciba, pero
-que son menos urgentes. Las notificaciones de baja prioridad tienden a aparecer en la parte inferior de la lista,
-por lo que son ideales para
-eventos como actualizaciones sociales públicas o indirectas: El usuario solicitó que se le notifiquen
-estas
-actualizaciones, pero estas notificaciones nunca tendrán prioridad sobre las comunicaciones
-urgentes o directas.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>Utilícelo para la información contextual o de segundo plano, como información sobre el clima o la
-ubicación contextual.
-Las notificaciones cuya prioridad es mínima no aparecen en la barra de estado. El usuario
-las descubre al expandir el panel de notificaciones.</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>Cómo elegir la
-prioridad
-adecuada</strong></h4>
-
-<p><code>DEFAULT</code>, <code>HIGH</code> y <code>MAX</code> son niveles de prioridad interruptiva, y se corre el riesgo de
-interrumpir al usuario
-en el medio de su actividad. Para evitar incomodar a los usuarios de su aplicación, reserve los niveles de prioridad interruptiva para
-las notificaciones:</p>
-
-<ul>
-  <li> en las que participe otra persona;</li>
-  <li> en las que el tiempo sea importante;</li>
-  <li> que puedan modificar inmediatamente el comportamiento del usuario en el mundo real.</li>
-</ul>
-
-<p>Las notificaciones que se configuran en <code>LOW</code> y <code>MIN</code> pueden seguir siendo
-valiosas para el usuario: muchas, tal vez la mayoría, de las notificaciones simplemente no le piden al usuario que actúe de inmediato
-ni llaman su atención mediante una vibración, pero poseen información que será valiosa para el
-usuario
-cuando este decida ver las notificaciones. Entre los criterios de las notificaciones con prioridad <code>LOW</code> y <code>MIN</code>,
-se incluyen los siguientes:</p>
-
-<ul>
-  <li> No participan otras personas.</li>
-  <li> El tiempo no es importante.</li>
-  <li> Incluyen contenido que podría interesarle al usuario, pero que tal vez desee
-buscarlo cuando lo necesite.</li>
-</ul>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" />
-
-
-<h3 style="clear:both" id="set_a_notification_category">Configuración de una
-categoría de notificaciones</h3>
-
-<p>Si su notificación se puede clasificar dentro de alguna de las categorías predefinidas (consulte
-a continuación), asígnela
-según corresponda.  Esta información se puede utilizar en determinados aspectos de la IU del sistema, como el panel de notificaciones (o cualquier
-otro
-agente de escucha de la notificación), para realizar una clasificación y filtrar las decisiones.</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>Llamada entrante (voz o video) o una solicitud de comunicación
-sincrónica similar</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>Mensaje entrante directo (SMS, mensaje instantáneo, etc.)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>Mensaje en bloque asíncrono (correo electrónico)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>Evento del calendario</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>Promoción o anuncio</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>Alarma o temporizador</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>Progreso de una operación en segundo plano de larga ejecución</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>Actualización de red social o uso compartido de datos</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>Error en una operación en segundo plano o un estado de autenticación</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>Control de transporte de medios para la reproducción</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>Actualización del estado del dispositivo o el sistema.  Reservado para ser utilizado por el sistema</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>Indicación de ejecución de servicio en segundo plano</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>Una recomendación específica y oportuna para un solo evento.  Por ejemplo, en una
-aplicación de noticias tal vez se desee
-recomendar una historia que se considere que el usuario deseará leer luego</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>Información constante sobre el estado contextual o del dispositivo</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">Resumen de las notificaciones</h3>
-
-<p>Si una notificación de un determinado tipo ya está pendiente cuando su aplicación intenta enviar una nueva
-notificación del mismo tipo, combínelas en una misma notificación resumida para la aplicación. No
-cree un objeto nuevo.</p>
-
-<p>Las notificaciones resumidas incluirán una descripción resumida y le permitirán al usuario
-conocer cuántas
-notificaciones de un determinado tipo están pendientes.</p>
-
-<div class="col-6">
-
-<p><strong>Lo que no debe hacer</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>Lo que debe hacer</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" />
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">Puede proporcionar
-información más detallada sobre cada una de las notificaciones que conforman un
- resumen al utilizar el diseño resumido expandido. Este enfoque les permite a los usuarios tener
-una idea más clara de las
- notificaciones pendientes y determinar si están lo suficientemente interesados como para leer
-los detalles en la
- aplicación asociada.</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" />
-  <p class="img-caption">
-  Notificación contraída y expandida que es un resumen (mediante el uso de <code>InboxStyle</code>)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">Uso de notificaciones
-opcionales</h3>
-
-<p>Los usuarios deben tener siempre el control sobre las notificaciones. Permítale al usuario
-deshabilitar las notificaciones
-de su aplicación o cambiar las propiedades de las alertas, como el sonido de una alerta y si desea
-utilizar la vibración,
-mediante la incorporación de un elemento de configuración de notificaciones en las configuraciones de la aplicación.</p>
-
-<h3 id="use_distinct_icons">Uso de iconos diferentes</h3>
-<p>Al mirar el área de notificaciones, el usuario debe poder diferenciar
-los tipos de
-notificaciones que están pendientes actualmente.</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" />
-</div>
-
-  <div><p><strong>Lo que debe hacer</strong></p>
-    <p>Mirar los iconos de notificaciones que ya se proporcionan en las aplicaciones de Android y crear
-iconos de notificaciones para
- su aplicación que tengan una apariencia bastante diferente.</p>
-
-    <p><strong>Lo que debe hacer</strong></p>
-    <p>Utilizar el <a href="/design/style/iconography.html#notification">estilo de icono de notificación</a>
- adecuado para los iconos pequeños y el
-<a href="/design/style/iconography.html#action-bar">estilo
-de icono de barra de acción</a> del diseño Material Light para los iconos
- de acciones.</p>
-<p ><strong>Lo que debe hacer</strong></p>
-<p >Hacer que los iconos sean simples y evitar incluir una cantidad excesiva de detalles difíciles de
-distinguir.</p>
-
-  <div><p><strong>Lo que no debe hacer</strong></p>
-    <p>Colocar valores alfa adicionales (que se oscurezcan o aclaren) en los
-iconos pequeños y los
- iconos de acciones. Estos pueden tener bordes alisados, pero como en Android estos iconos se utilizan
-como máscaras (es decir, solo se
- utiliza el canal alfa), por lo general, la imagen se debe dibujar con
-opacidad completa.</p>
-
-</div>
-<p style="clear:both"><strong>Lo que no debe hacer</strong></p>
-
-<p>Utilizar colores para diferenciar su aplicación de las demás. Los iconos de las notificaciones simplemente
-deben ser una imagen sobre un fondo blanco o transparente.</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">Pulsación adecuada del
-LED de notificaciones</h3>
-
-<p>Muchos dispositivos con Android incluyen un LED de notificaciones, que se utiliza para mantener al
-usuario informado sobre los
-eventos cuando la pantalla está apagada. Las notificaciones con un nivel de prioridad <code>MAX</code>,
-<code>HIGH</code> o <code>DEFAULT</code> deben
-hacer que se encienda el LED, mientras que las de menor prioridad (<code>LOW</code> y
-<code>MIN</code>) no deben activar esta función.</p>
-
-<p>El control del usuario sobre las notificaciones debe extenderse al LED. Cuando se utilice
-DEFAULT_LIGHTS, el
-LED se iluminará en color blanco. Sus notificaciones no deberían utilizar un color
-diferente, a menos que el
-usuario lo haya personalizado explícitamente.</p>
-
-<h2 id="building_notifications_that_users_care_about">Creación de notificaciones
-importantes para los usuarios</h2>
-
-<p>Para crear una aplicación que les guste a los usuarios, es importante diseñar las notificaciones
-cuidadosamente.
-Las notificaciones son la voz de su aplicación y ayudan a definir su
-personalidad. Las notificaciones no deseadas
-o que no son importantes pueden hacer que el usuario se moleste o no se sienta cómodo con la cantidad de
-atención que le demanda la
-aplicación, por eso debe utilizarlas de forma moderada.</p>
-
-<h3 id="when_to_display_a_notification">Cuándo se deben mostrar las notificaciones</h3>
-
-<p>Para crear una aplicación que los usuarios disfruten, es importante
-reconocer que la atención
-y el enfoque del usuario son recursos que se deben proteger. Aunque el sistema de notificaciones de Android
-se diseñó
-para minimizar el impacto de las notificaciones en la atención del usuario,
-es
-importante tener en cuenta que las notificaciones interrumpen el
-flujo de tareas del usuario.
-Cuando planifique sus notificaciones, pregúntese si son lo suficiente importantes como para
-realizar una interrupción. Si no está seguro, permítale al usuario que elija las
-notificaciones mediante la configuración de notificaciones de su aplicación o que ajuste
-la marca de prioridad de las notificaciones en <code>LOW</code> o <code>MIN</code> para
-evitar distraer al usuario cuando realiza
-alguna otra tarea.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   Ejemplos de notificaciones sujetas a limitación temporal
-  </p>
-
-<p>Aunque las aplicaciones más eficientes para el usuario solo proporcionan una respuesta cuando se la solicita, en algunos casos,
-vale la pena que una aplicación interrumpa al usuario con una notificación no solicitada.</p>
-
-<p>Utilice las notificaciones principalmente para <strong>eventos sujetos a limitaciones temporales</strong>, en especial
- si estos eventos sincrónicos <strong>involucran a otras personas</strong>. Por
-ejemplo, un chat entrante
- es una forma de comunicación sincrónica y en tiempo real: otro usuario
-está esperando de forma activa su respuesta. Los eventos del calendario son otros buenos ejemplos de cuándo se debe utilizar una
-notificación y llamar la atención del usuario,
- ya que los eventos son inminentes y, generalmente,
-involucran a otras personas.</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">Cuándo no se debe
-mostrar una notificación</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" />
-</div>
-
-<p>En muchos otros casos, no es apropiado enviar notificaciones:</p>
-
-<ul>
-  <li> Evite notificarle al usuario acerca de información que no le enviaron
-específicamente a él o
-información que no está verdaderamente sujeta a una limitación temporal. Por ejemplo, las actualizaciones asíncronas
-e indirectas
- que circulan por las redes sociales generalmente no justifican una interrupción en
-tiempo real. En el caso de los usuarios
- interesados en dichas notificaciones, permítales elegir.</li>
-  <li> No cree una notificación si la información nueva y relevante se muestra actualmente
-en la pantalla. En su lugar,
- utilice la IU de la aplicación para notificarle al usuario sobre la nueva información
-directamente en contexto.
-  Por ejemplo, una aplicación de chat no debe crear notificaciones del sistema mientras
-el usuario está chateando de forma activa con otro usuario.</li>
-  <li> No interrumpa al usuario para que ejecute operaciones técnicas de bajo nivel, como guardar
-o sincronizar información, o actualizar una aplicación si dicha aplicación o el sistema pueden resolver el problema
-sin la participación del usuario.</li>
-  <li> No interrumpa al usuario para informarle sobre un error si la
-aplicación puede solucionar el error por sus propios medios, sin que el usuario
-realice ninguna acción.</li>
-  <li> No cree notificaciones que no incluyan contenidos reales de notificación y que
-simplemente promocionen
- su aplicación. Una notificación debe proporcionar información nueva, útil y oportuna, y
-no debe utilizarse
- solo para lanzar una aplicación.</li>
-  <li> No cree notificaciones superfluas solo para mostrar su marca
-a los usuarios.
-  Dichas notificaciones frustran y aíslan a su público. La
-mejor forma de proporcionar
- pequeñas cantidades de información actualizada y de mantener a los usuarios interesados
-en su
- aplicación es desarrollar un widget que puedan colocar en la
-pantalla de inicio, si así lo desean.</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">Interacción con
-las notificaciones</h2>
-
-<p>Las notificaciones se indican mediante iconos en la barra de estado, y se puede acceder a ellas
-al abrir el
-panel lateral de notificaciones.</p>
-
-<p>Al tocar una notificación, se abre la aplicación asociada con el contenido detallado
-que coincide con el de la notificación.
-Si dicha notificación se desplaza hacia la izquierda o la derecha, esta se eliminará del panel lateral.</p>
-
-<h3 id="ongoing_notifications">Notificaciones constantes</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" />
-      <p class="img-caption">
-    Notificaciones constantes relacionadas con la reproducción de música
-  </p>
-</div>
-<p>Mediante las notificaciones constantes, se mantiene a los usuarios informados sobre un proceso en curso en
-segundo plano.
-Por ejemplo, los reproductores de música anuncian la pista que se está reproduciendo actualmente en el
-sistema de notificaciones y
-siguen haciéndolo hasta que el usuario detiene la reproducción. Mediante las notificaciones constantes también se le pueden
-mostrar al usuario
-comentarios sobre tareas más extensas, como descargar un archivo o codificar un video. Los usuarios no podrán
-eliminar las notificaciones constantes del panel lateral de notificaciones.</p>
-
-<h3 id="ongoing_notifications">Reproducción de medios</h3>
-<p>En Android 5.0, la pantalla de bloqueo no muestra los controles de transporte para la clase
-{@link android.media.RemoteControlClient} obsoleta. Sin embargo, <em>sí</em> muestra las notificaciones, de modo que las notificaciones de reproducción de cada
-aplicación ahora son la forma principal
-en la que los usuarios controlan la reproducción desde el estado bloqueado. A través de este comportamiento, se le otorga más control
-a la aplicación sobre los
-botones que se deben mostrar, y la forma en que debe mostrarlos, al mismo tiempo que se proporciona
-al usuario una experiencia coherente, independientemente de si la pantalla está bloqueada o no.</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">Diálogos
-y avisos</h3>
-
-<p>Su aplicación no debe crear un diálogo o un aviso si actualmente no se muestra en la
-pantalla. Los diálogos o los avisos se deben
- mostrar únicamente como una respuesta inmediata a una acción que realiza el usuario
-dentro de su aplicación.
-Para obtener más información sobre cómo utilizar los diálogos y los avisos, consulte
-<a href="/design/patterns/confirming-acknowledging.html">Confirmación y reconocimiento</a>.</p>
-
-<h3>Orden y clasificación</h3>
-
-<p>Las notificaciones son noticias que, como tales, se muestran, básicamente, en
-orden cronológico inverso, prestando
-especial atención a la
-<a href="#correctly_set_and_manage_notification_priority">prioridad</a> de la notificación especificada en la aplicación.</p>
-
-<p>Las notificaciones son una parte clave de la pantalla de bloqueo y se muestran de forma prominente
-cada vez
-que se enciende la pantalla del dispositivo. El espacio en la pantalla de bloqueo es reducido, por lo que
-es sumamente importante
-que se identifiquen las notificaciones más urgentes o relevantes. Por este
-motivo, Android cuenta
-con un algoritmo de clasificación más sofisticado para las notificaciones, que tiene en cuenta lo siguiente:</p>
-
-<ul>
-  <li> La marca de tiempo y la prioridad especificada en la aplicación.</li>
-  <li> Si la notificación interrumpió al usuario recientemente con un sonido o una
-vibración. (Es decir,
- si el teléfono emitió un sonido y el usuario desea saber "¿Qué
-pasó?", en la pantalla de bloqueo se debe
- proporcionar una respuesta a simple vista).</li>
-  <li> Todas aquellas personas involucradas en la notificación mediante{@link android.app.Notification#EXTRA_PEOPLE}
- y, especialmente, si son contactos preferidos.</li>
-</ul>
-
-<p>Para aprovechar aún más esta función de clasificación, enfóquese en la
-experiencia del usuario que desea
-crear, en lugar de centrarse en algún punto importante de la lista.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Las notificaciones de Gmail
-poseen una prioridad predeterminada, por lo que
- normalmente clasifican los mensajes de una aplicación de mensajería instantánea como Hangouts, pero
-realizan
- un cambio de prioridad temporal cuando ingresan nuevos mensajes.
-  </p>
-
-
-<h3>En la pantalla de bloqueo</h3>
-
-<p>Como las notificaciones son visibles en la pantalla de bloqueo, la privacidad del usuario es un aspecto
-especialmente
-importante. Por lo general, las notificaciones contienen información confidencial y
-no necesariamente deben ser visibles
-para cualquier persona que agarre el dispositivo y encienda la pantalla.</p>
-
-<ul>
-  <li> En el caso de los dispositivos que posean una pantalla de bloqueo segura (PIN, patrón o contraseña), la interface está formada por
- partes públicas y privadas. La interfaz pública se puede mostrar en una pantalla de bloqueo segura y,
- por ende, cualquier persona puede verla. La interfaz privada es el mundo detrás de esa pantalla de bloqueo y
- solo se revela cuando el usuario se registra en el dispositivo.</li>
-</ul>
-
-<h3>Control del usuario sobre la información que se muestra en la pantalla de bloqueo segura</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" />
-      <p class="img-caption">
-    Notificaciones en la pantalla de bloqueo, en la que el contenido se revela luego de que el usuario desbloquea el dispositivo
-  </p>
-</div>
-
-<p>Cuando se configura una pantalla de bloqueo segura, el usuario puede decidir ocultar los
-detalles confidenciales de dicha pantalla. En este caso, la IU del sistema
-analiza el <em>nivel de visibilidad</em> de la notificación para decidir
-qué información se puede mostrar de forma segura.</p>
-<p> Para controlar el nivel de visibilidad, realice una llamada a
-<code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>
- y especifique uno de los siguientes valores:</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>.
-Se muestra todo el contenido de la notificación.
-  Esta es la opción predeterminada del sistema si no se especificó el grado de visibilidad.</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>.
-En la pantalla de bloqueo se muestra la información básica sobre la existencia de esta notificación, incluido
-el icono y el nombre de la aplicación a través de la cual se publicó. No se muestra el resto de los detalles de la notificación.
-A continuación, especificamos algunos puntos que se deben tener en cuenta:
-  <ul>
-    <li> Si desea proporcionar una versión pública diferente de su notificación
-para que el sistema la muestre en una pantalla de bloqueo segura, suministre un
-objeto de notificación de reemplazo en el campo <code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>
-.
-    <li> Mediante esta configuración, su aplicación puede crear una versión resumida del
-contenido que sigue siendo útil, pero que no revela información personal. Considere el ejemplo de una
-aplicación de SMS cuyas notificaciones incluyen el texto del SMS, el nombre del remitente y el icono del contacto.
-Esta notificación debe ser <code>VISIBILITY_PRIVATE</code>, pero <code>publicVersion</code> podría
-seguir conteniendo información útil como "3 mensajes nuevos", sin que se muestren otros detalles
-de identificación.
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>. Se muestra solo la menor cantidad de información posible; se excluye incluso
-el icono de la notificación.</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Notificaciones en
-Android Wear</h2>
-
-<p>Las notificaciones y sus <em>acciones</em> se conectan de forma predeterminada con los dispositivos con Wear.
-Los desarrolladores pueden controlar qué notificaciones se conectan desde el
-teléfono hacia el reloj
-y viceversa. Los desarrolladores también pueden controlar qué acciones se conectan. Si
-en su aplicación se incluyen
-acciones que no se pueden realizar con una sola pulsación, oculte dichas acciones
-en su notificación para Wear
-o considere anclarlas a una aplicación de Wear. De este modo, el usuario podrá
-finalizar con la acción desde el
-reloj.</p>
-
-<h4>Conexión entre notificaciones y acciones</h4>
-
-<p>Mediante un dispositivo conectado, como un teléfono, es posible conectar las notificaciones con un dispositivo con Wear, para que las
-notificaciones se muestren allí. De modo similar, también es posible conectar acciones para que el usuario pueda ejecutarlas
-directamente desde las notificaciones en los dispositivos con Wear.</p>
-
-<p><strong>Conexión</strong></p>
-
-<ul>
-  <li> Nuevos mensajes instantáneos</li>
-  <li> Acciones de una sola pulsación como Hacer +1, Me gusta o Favorito</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" />
-
-<p><strong>Sin conexión</strong></p>
-
-<ul>
-  <li> Notificaciones de podcasts que llegaron recientemente</li>
-  <li> Acciones que se asignan a funciones que no se pueden ejecutar desde el reloj</li>
-</ul>
-
-
-
-<p><h4>Acciones únicas diseñadas para Wear</h4></p>
-
-<p>Existen algunas acciones que solo puede realizar en Wear. Entre estas, se incluyen las siguientes:</p>
-
-<ul>
-  <li> listas rápidas de respuestas predeterminadas como "Vuelvo enseguida";</li>
-  <li> acciones que se abren desde el teléfono;</li>
-  <li> un "Comentario" o una acción de "Respuesta" que activa la pantalla de entrada de voz;</li>
-  <li> acciones que lanzan aplicaciones específicas de Wear.</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" />
diff --git a/docs/html-intl/intl/es/preview/j8-jack.jd b/docs/html-intl/intl/es/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/es/preview/j8-jack.jd
rename to docs/html-intl/intl/es/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/es/preview/features/multi-window.jd b/docs/html-intl/intl/es/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/es/preview/features/multi-window.jd
rename to docs/html-intl/intl/es/guide/topics/ui/multi-window.jd
index 441e06a..0a9cbe2 100644
--- a/docs/html-intl/intl/es/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/es/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>En este documento</h2>
       <ol>
         <li><a href="#overview">Información general</a></li>
@@ -69,8 +69,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/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>
diff --git a/docs/html-intl/intl/es/preview/_book.yaml b/docs/html-intl/intl/es/preview/_book.yaml
deleted file mode 100644
index 815f0f6..0000000
--- a/docs/html-intl/intl/es/preview/_book.yaml
+++ /dev/null
@@ -1,342 +0,0 @@
-toc:
-- title: Información general del programa
-  path: /preview/overview.html
-  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: Compatibilidad y notas de la versión
-  path: /preview/support.html
-
-- title: Configuración de Preview
-  path: /preview/setup-sdk.html
-  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: Probar en un dispositivo
-  path: /preview/download.html
-  path_attributes:
-  - name: es-lang
-    value: Probar 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: Cambios en los comportamientos
-  path: /preview/behavior-changes.html
-  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: Idioma y configuración regional
-    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
-  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: Compatibilidad con ventanas múltiples
-    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: Notificaciones
-    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: Ahorro de datos
-    path: /preview/features/data-saver.html
-  - title: Grabación de TV
-    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: Configuración de seguridad de la red
-    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: Compatibilidad con ICU4J
-    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: Funciones del lenguaje Java 8
-    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: Actualizaciones para Android for Work
-    path: /preview/features/afw.html
-  - title: Acceso a directorios determinados
-    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: Ejemplos
-  path: /preview/samples.html
-  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: Contrato de licencia
-  path: /preview/license.html
-  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-intl/intl/es/preview/download-ota.jd b/docs/html-intl/intl/es/preview/download-ota.jd
deleted file mode 100644
index 2b2bcbf..0000000
--- a/docs/html-intl/intl/es/preview/download-ota.jd
+++ /dev/null
@@ -1,332 +0,0 @@
-page.title=Aplicación de imágenes inalámbricas de dispositivo
-
-@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 Android SDK Preview (el “Contrato de licencia”).
-
-1. Introducción
-
-1.1 Se le otorga la licencia de la versión Android SDK Preview (denominada “Preview” en el Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Preview, 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 en relación con el uso que realice de la Preview.
-
-1.2 “Android” hace referencia al conjunto de soluciones Android para dispositivos, según se encuentre disponible en el Proyecto de código abierto de Android (Android Open Source Project), que se encuentra en la siguiente URL: http://source.android.com/, y según se actualiza periódicamente.
-
-.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, 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” hace referencia a Google Inc., una corporación de Delaware, con 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 Preview, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Preview.
-
-2.2 Al hacer clic para aceptar o utilizar la Preview, por medio del presente, usted acepta los términos del Contrato de licencia.
-
-2.3 No puede utilizar la Preview ni aceptar el Contrato de licencia si tiene prohibido recibir la Preview 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 Preview.
-
-2.4 Si utilizará la Preview de forma interna, dentro de su empresa 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 usted no posee la autoridad requerida, no podrá aceptar el Contrato de licencia ni utilizar la Preview 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 sin la posibilidad de 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 (entre las que se incluyen implementaciones incompatibles de Android) o para desarrollar otro SDK. Desde luego, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, entre las que se incluyen implementaciones incompatibles de Android, siempre y cuando esta Preview no se utilice 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 esta. "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 Usted no podrá utilizar la Preview 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 regla con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerte de realizar acción alguna que pudiera poner fin, suspender o violar dichos derechos.
-
-3.6 Acepta que la forma y la naturaleza de la Preview que proporciona Google pueden cambiar sin tener que brindarle aviso previo, y que las versiones futuras de la Preview pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Preview. Usted acepta que Google, generalmente a su entera discreción, puede dejar de proporcionarle a usted o a los demás usuarios (de forma permanente o temporal) la Preview (o cualquiera de sus funciones) sin previo aviso.
-
-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 quitará, ocultará o alterará ninguna de las notificaciones de derechos de autor (entre las que se incluyen las notificaciones de copyright y marcas comercias) que pudieran estar anexadas o implícitas en la Preview.
-
-4. Uso que usted realiza de la Preview
-
-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 Preview, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
-
-4.2 Usted acepta utilizar la Preview 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 y pertinentes en las jurisdicciones relevantes (entre las que se incluyen 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 Preview 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 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 Preview, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Preview contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Preview, dado que esta Preview ya no se admitirá tras el lanzamiento del Android SDK oficial.
-
-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 pudiera escoger usted mismo, 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 Con el objetivo de poder innovar y mejorar de forma continua la Preview, Google podría recopilar ciertas estadísticas de uso del software, entre las que se incluyen, de forma enunciativa, 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 Preview que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Preview 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 Preview 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 Preview 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 el permiso específico 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.
-
-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 con base 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 cualquier 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 cuando, y para 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 Preview y de las credenciales de desarrollador pertinentes.
-
-9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, luego de notificárselo.
-
-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 Preview 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 Android SDK.
-
-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 Preview, 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 PREVIEW ES BAJO SU PROPIO RIESGO Y QUE LA PREVIEW 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 PREVIEW Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA PREVIEW 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. ESTAS 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">
-
-<p>
-  Esta página cuenta con enlaces a imágenes de dispositivos inalámbricos y describe
-  cómo aplicar una actualización inalámbrica a un dispositivo de forma manual. Este procedimiento puede ser útil
-  para recuperar dispositivos que hayan recibido actualizaciones inalámbricas por medio del Programa
-  Android Beta y no enciendan luego de instalada la aplicación.
-</p>
-
-<h2 id="install-ota">Instalar imágenes inalámbricas</h2>
-
-<p></p>
-
-<p>Para instalar un paquete inalámbrico en un dispositivo sigue estos pasos:</p>
-
-<ol>
-  <li>Descargar una imagen de dispositivo inalámbrico de la tabla que verás a continuación.</li>
-  <li>Reinicia el dispositivo en modo Recuperación. Para leer más información sobre cómo
-    aplicar este modo en dispositivos Nexus, visita la sección
-<a href="https://support.google.com/nexus/answer/4596836">Reset your Nexus
-      device to factory settings</a>.
-  </li>
-  <li>En el dispositivo, selecciona <strong>ADB sideload</strong>.</li>
-  <li>Conecta el dispositivo a una computadora con el entorno de desarrollo Android
-    cargado y la herramienta Android Debug Bridge (ADB) instalada.</li>
-  <li>Ejecuta el comando siguiente:
-    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
-  </li>
-</ol>
-
-
-
-<h2 id="ota-images">Imágenes inalámbricas de dispositivo</h2>
-
-<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-ota-npd90g-0a874807.zip</a><br>
-      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
-      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd90g-06f5d23d.zip</a><br>
-      MD5: 513570bb3a91878c2d1a5807d2340420<br>
-      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd90g-5baa69c2.zip</a><br>
-      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
-      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd90g-c04785e1.zip</a><br>
-      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
-      SHA-1: 31633180635b831e59271a7d904439f278586f49
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
-      MD5: 0493fa79763d67bcdde8007299e1888d<br>
-      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd90g-3a0643ae.zip</a><br>
-      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
-      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd90g-ec931914.zip</a><br>
-      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
-      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
-      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
-      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
-    </td>
-  </tr>
-
-</table>
-
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
-  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/download.jd b/docs/html-intl/intl/es/preview/download.jd
deleted file mode 100644
index 6fa9a6a..0000000
--- a/docs/html-intl/intl/es/preview/download.jd
+++ /dev/null
@@ -1,544 +0,0 @@
-page.title=Prueba en un 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 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 Android SDK Preview (el “Contrato de licencia”).
-
-1. Introducción
-
-1.1 Se le otorga la licencia de la versión Android SDK Preview (denominada “Preview” en el Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Preview, 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 en relación con el uso que realice de la Preview.
-
-1.2 “Android” hace referencia al conjunto de soluciones Android para dispositivos, según se encuentre disponible en el Proyecto de código abierto de Android (Android Open Source Project), que se encuentra en la siguiente URL: http://source.android.com/, y según se actualiza periódicamente.
-
-.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, 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” hace referencia a Google Inc., una corporación de Delaware, con 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 Preview, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Preview.
-
-2.2 Al hacer clic para aceptar o utilizar la Preview, por medio del presente, usted acepta los términos del Contrato de licencia.
-
-2.3 No puede utilizar la Preview ni aceptar el Contrato de licencia si tiene prohibido recibir la Preview 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 Preview.
-
-2.4 Si utilizará la Preview de forma interna, dentro de su empresa 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 usted no posee la autoridad requerida, no podrá aceptar el Contrato de licencia ni utilizar la Preview 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 sin la posibilidad de 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 (entre las que se incluyen implementaciones incompatibles de Android) o para desarrollar otro SDK. Desde luego, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, entre las que se incluyen implementaciones incompatibles de Android, siempre y cuando esta Preview no se utilice 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 esta. "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 Usted no podrá utilizar la Preview 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 regla con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerte de realizar acción alguna que pudiera poner fin, suspender o violar dichos derechos.
-
-3.6 Acepta que la forma y la naturaleza de la Preview que proporciona Google pueden cambiar sin tener que brindarle aviso previo, y que las versiones futuras de la Preview pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Preview. Usted acepta que Google, generalmente a su entera discreción, puede dejar de proporcionarle a usted o a los demás usuarios (de forma permanente o temporal) la Preview (o cualquiera de sus funciones) sin previo aviso.
-
-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 quitará, ocultará o alterará ninguna de las notificaciones de derechos de autor (entre las que se incluyen las notificaciones de copyright y marcas comercias) que pudieran estar anexadas o implícitas en la Preview.
-
-4. Uso que usted realiza de la Preview
-
-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 Preview, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
-
-4.2 Usted acepta utilizar la Preview 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 y pertinentes en las jurisdicciones relevantes (entre las que se incluyen 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 Preview 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 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 Preview, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Preview contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Preview, dado que esta Preview ya no se admitirá tras el lanzamiento del Android SDK oficial.
-
-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 pudiera escoger usted mismo, 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 Con el objetivo de poder innovar y mejorar de forma continua la Preview, Google podría recopilar ciertas estadísticas de uso del software, entre las que se incluyen, de forma enunciativa, 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 Preview que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Preview 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 Preview 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 Preview 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 el permiso específico 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.
-
-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 con base 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 cualquier 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 cuando, y para 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 Preview y de las credenciales de desarrollador pertinentes.
-
-9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, luego de notificárselo.
-
-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 Preview 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 Android SDK.
-
-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 Preview, 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 PREVIEW ES BAJO SU PROPIO RIESGO Y QUE LA PREVIEW 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 PREVIEW Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA PREVIEW 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. ESTAS 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>En este 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 entorno de ejecución
-  de Android N. Puedes llevar a cabo la configuración 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 APK actual 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 actualizado y que seas compatible con
-  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 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 compilación "milestone" de la Developer
-  Preview de las siguientes maneras:
-</p>
-
-<ul>
-  <li><strong>Registrar el dispositivo en actualizaciones automáticas inalámbricas</strong> a través del
-  <a href="https://g.co/androidbeta">Programa Android Beta</a>. Una vez registrado, tu dispositivo recibirá actualizaciones inalámbricas periódicas
-  de todas las compilaciones "milestone" 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 de manera manual</strong>.
-  Las actualizaciones inalámbricas 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 inalámbricas. </li>
-</ul>
-
-<h3 id="ota">Registrar el dispositivo en actualizaciones automáticas inalámbricas</h3>
-
-<p>
-  Si tienes acceso a un dispositivo compatible (consulta la lista en la tabla de
-  descargas), puedes recibir actualizaciones inalámbricas para versiones de la Android Preview
-  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 dispositivo en cualquier momento. El dispositivo recibirá una actualización inalámbrica
-  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, por lo que se eliminarán los datos del usuario del dispositivo. No te olvides de crear una <strong>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. Crea una copia de seguridad
-  de los datos importantes.
-</p>
-
-<h3 id="flash">Actualizar un dispositivo de forma manual</h3>
-
-<p>
-  En cualquier momento, puedes descargar la última imagen de sistema de la Developer Preview y
-  actualizarla de forma manual en tu dispositivo. Consulta la tabla siguiente 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, es recomendable crear una copia de seguridad de los datos.
-</p>
-
-<p>
-  Después de que crees una copia de seguridad y 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 de manera manual.
-</p>
-
-<p>
-  Las imágenes de sistema actualizadas de manera manual <strong>no
-  reciben actualizaciones inalámbricas de forma automática</strong> para posteriores compilaciones "milestone"
-  de la Developer Preview. No te olvides de mantener tu entorno actualizado y actualiza una
-  imagen de sistema nueva en cada versión "milestone" de la Developer Preview.
-</p>
-
-<p>
-  Si decides que quieres obtener actualizaciones inalámbricas después de actualizar un dispositivo de manera manual,
-  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 de manera 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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="revertDevice">Desinstalar la Preview de un dispositivo</h3>
-
-<p>
-  Si quieres desinstalar la muestra desde 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
-. Como 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 Android Beta</strong>. Si el
-    dispositivo se registra en el <a href="https://g.co/androidbeta">Programa de Android
-    Beta</a>, sin importar el dispositivo, puedes darlo de baja desde el programa fácilmente.
-  <p>
-    El dispositivo recibirá una actualización inalámbricas 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, por lo que se eliminarán los datos del usuario del
-    dispositivo. No te olvides de crear una <strong>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
-  que se encuentren en él.
-</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 el Android N Preview SDK y crear un dispositivo virtual para el
-emulador.</p>
-
-<p>Primero, descarga el Android N Preview SDK de la siguiente manera (si
-ya la 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 cuadro de 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>.
-    (De momento, solo las imágenes de sistema x86 son 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 ejecutar 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, verifica que estás utilizando
-Android Studio 2.1 o una versión superior, compatible con el <a href="http://tools.android.com/tech-docs/emulator">emulador de Android 2.0</a>,
-cuyo rendimiento es mayor si se lo compara con el emulador utilizado en
-Android Studio 1.5.</p>
-
-<p>Para obtener más información sobre la creación de dispositivos virtuales, consulta <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/afw.jd b/docs/html-intl/intl/es/preview/features/afw.jd
deleted file mode 100644
index 5e550a6..0000000
--- a/docs/html-intl/intl/es/preview/features/afw.jd
+++ /dev/null
@@ -1,552 +0,0 @@
-page.title=Actualizaciones de Android for Work
-page.metaDescription=Nuevas API y funciones de Android for Work en Android N.
-page.keywords="android for work", "android N", "enterprise", "QR code"
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>En este documento</h2>
-      <ol>
-        <li><a href="#qr">Provisión de código QR
-                </a></li>
-
-        <li><a href="#sec-challenge">Comprobación de seguridad para perfiles de trabajo
-                </a></li>
-
-        <li><a href="#suspend">Inhabilitar acceso a aplicaciones
-                </a></li>
-
-        <li><a href="#toggle-work">Activar o desactivar el modo de trabajo
-                </a></li>
-
-        <li><a href="#always-on-vpn">VPN siempre visibles
-                </a></li>
-
-        <li><a href="#contacts">Integración de contactos con el perfil de trabajo
-                </a></li>
-
-        <li><a href="#remote-reboot">Reinicio remoto
-                </a></li>
-
-        <li><a href="#disable-roaming">Inhabilitar roaming de datos
-                </a></li>
-
-        <li><a href="#process-logging">Registros de procesos empresariales
-                </a></li>
-
-        <li><a href="#bug-reports">Informes de errores remotos
-                </a></li>
-
-        <li><a href="#remove-cert">Quitar un certificado de cliente
-                </a></li>
-
-        <li><a href="#grant-cert-on-install">Otorgar acceso a certificado de cliente
-                en la instalación</a></li>
-
-        <li><a href="#ui-policy">Transparencia de la política de IU del sistema
-                </a></li>
-
-        <li><a href="#restrictions-mgmt">Mejoras en la administración de restricciones de aplicaciones
-                </a></li>
-
-        <li><a href="#location-off">Interruptor de desactivación de los servicios de ubicación
-                </a></li>
-
-        <li><a href="#custom-provisioning">Provisión personalizada
-                </a></li>
-
-        <li><a href="#multi-wifi-ca">Múltiples certificados de CA de Wi-Fi
-                </a></li>
-
-        <li><a href="#custom-lock">Mensaje personalizado en la pantalla bloqueada
-                </a></li>
-
-        <li><a href="#work-connectionservice">ConnectionService del perfil de trabajo
-                </a></li>
-
-        <li><a href="#lock-wp">Bloquear fondo de pantalla
-                </a></li>
-
-        <li><a href="#lock-user-icon">Bloquear ícono de usuario
-                </a></li>
-
-        <li><a href="#health-monitoring">Control del estado del dispositivo
-                </a></li>
-
-      </ol>
-
-    <h2>Consulta también</h2>
-    <ul>
-      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK
-            </a></li>
-    </ul>
-  </div>
-</div>
-
-<p>En este documento, se describen las nuevas funciones de Android for Work que se proporcionan en
-Android N.</p>
-
-<h2 id="qr">Provisión de código QR</h2>
-
-<p>
-  Android for Work ahora es compatible con la utilización de códigos QR para aprovisionar dispositivos
- de responsabilidad corporativa. Gracias al asistente de configuración, ahora puedes escanear un código QR para aprovisionar
- el dispositivo.
-</p>
-
-<h2 id="sec-challenge">Comprobación de seguridad para perfiles de trabajo</h2>
-
-<p>
-  Los propietarios de perfiles pueden solicitar que los usuarios especifiquen una comprobación de seguridad para las aplicaciones
- que se ejecutan en el perfil de trabajo. Dicha comprobación se muestra en el sistema cuando el
- usuario intenta abrir cualquier aplicación de trabajo. Si el usuario completa con éxito la
- comprobación de seguridad, el sistema desbloquea el perfil de trabajo y lo descifra
- si es necesario.
-</p>
-
-<p>
-  Si el propietario de un perfil envía una intent {@link
-  android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD}, el
- sistema le pide al usuario que configure una comprobación de seguridad. El propietario del perfil también puede
- enviar una intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>
- para que el usuario establezca un bloqueo de dispositivo.
-</p>
-
-<p>
-  Los propietarios de perfiles pueden elegir establecer las políticas de contraseña para la comprobación del perfil de trabajo de modo que sean
- diferentes de aquellas para las contraseñas de otros dispositivos. Por ejemplo, la
- longitud mínima para la respuesta de comprobación del dispositivo puede ser diferente de la
- longitud necesaria para otras contraseñas. Los propietarios de perfiles establecen las políticas de
- comprobación mediante los métodos {@link android.app.admin.DevicePolicyManager}
- comunes, como por ejemplo, {@link
-  android.app.admin.DevicePolicyManager#setPasswordQuality
-  setPasswordQuality()} y {@link
-  android.app.admin.DevicePolicyManager#setPasswordMinimumLength
-  setPasswordMinimumLength()}. El propietario del perfil también puede establecer el bloqueo del dispositivo mediante
- la utilización de la instancia de{@link android.app.admin.DevicePolicyManager} devuelta
- por el nuevo método <code>DevicePolicyManager.getParentProfileInstance()</code>
-. Además, los propietarios de perfiles pueden personalizar la pantalla de credenciales para
- la comprobación de trabajo mediante la utilización de los nuevos métodos de la clase{@link android.app.admin.DevicePolicyManager}
- <code>setOrganizationColor()</code> y
-  <code>setOrganizationName()</code>.
-</p>
-
-<p>
-  Para obtener detalles sobre los nuevos métodos y constantes, consulta la página de referencia de
-  <code>DevicePolicyManager</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK</a>.
-</p>
-
-<h2 id="suspend">Inhabilitar acceso a aplicaciones</h2>
-
-<p>
-  Los propietarios de perfiles y dispositivos pueden suspender temporariamente el acceso a los paquetes
- mediante una llamada al nuevo método <code>DevicePolicyManager.setPackagesSuspended()</code>
-. Los propietarios pueden utilizar el mismo método para volver a habilitar esos paquetes.
-</p>
-
-<p>
-  Mientras un paquete está suspendido, este no puede comenzar actividades, se suprimen las notificaciones al
- paquete y se oculta la entrada de la aplicación en la <a href="{@docRoot}guide/components/recents.html">pantalla de información general</a>.
-  Los paquetes suspendidos no aparecen en la <a href="{@docRoot}guide/components/recents.html">pantalla de información general</a> y
- no pueden mostrar diálogos (incluidos avisos y snackbars). Además, no pueden reproducir
- audio ni hacer vibrar el dispositivo.
-</p>
-
-<p>
-  Los lanzadores deben aplicar una IU distintiva para las aplicaciones suspendidas a fin de mostrar que las
- aplicaciones no están actualmente disponibles; por ejemplo, el ícono de la aplicación puede aparecer en color
- gris. Los lanzadores pueden averiguar si una aplicación está suspendida llamando al nuevo método
-  <code>DevicePolicyManager.getPackageSuspended()</code>.
-</p>
-
-<h2 id="toggle-work">Activar o desactivar el modo de trabajo</h2>
-
-<p>
-  En dispositivos de perfil doble, los usuarios pueden activar o desactivar el modo de trabajo. Mientras este último está
- desactivado, el perfil administrado se encuentra inactivo temporariamente. Se inhabilitan
- todas las aplicaciones del perfil de trabajo, la sincronización en segundo plano y las notificaciones, incluida
- la aplicación del propietario del perfil. Mientras el perfil de trabajo está deshabilitado, en el sistema
- se muestra un ícono de estado persistente para recordarles a los usuarios que no pueden iniciar aplicaciones
- de trabajo. El launcher del sistema indica que no se puede acceder a aplicaciones ni widgets
- de trabajo.
-</p>
-
-<h2 id="always-on-vpn">VPN siempre visibles</h2>
-
-<p>
-  Los propietarios de dispositivos y perfiles pueden solicitar que las aplicaciones de trabajo siempre se conecten a la red
- a través de una VPN especificada. Si los propietarios establecen este requisito, el
- dispositivo inicia automáticamente esa VPN en el inicio.
-</p>
-
-<p>
-  Los propietarios pueden requerir el uso de una VPN llamando al nuevo método
- <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code>. Para averiguar
- si el propietario ha establecido un requisito de VPN, llama al nuevo método
-  <code>DevicePolicyManager.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 VPN siempre visibles. Como antes, puedes
- encontrar servicios activos mediante la utilización de un filtro de intent que coincida con la acción
- {@link android.net.VpnService android.net.VpnService}.
-</p>
-
-<p>
-  Para configurar manualmente un cliente de VPN que esté siempre visible y que implemente {@link
-  android.net.VpnService}, los usuarios deben ir a <strong>Settings &gt; More &gt;
- pantalla VPN</strong>.
-</p>
-
-<h2 id="contacts">Integración de contactos con el perfil de trabajo</h2>
-
-<p>
-  Los propietarios de perfiles pueden permitir la búsqueda local y la búsqueda en directorio de los contactos de trabajo
- a partir del usuario principal. Por ejemplo, un usuario puede acceder a contactos personales y laborales del directorio
- desde el teléfono personal o la aplicación de contactos (si
- así lo permite el administrador del perfil).
-</p>
-
-<p>
-  Los desarrolladores que aprovechan el proveedor de contactos pueden utilizar la API de contactos empresariales
- para acceder a las entradas del directorio del perfil de trabajo desde el usuario principal si así lo permiten
- las siguientes políticas:
-</p>
-
-<ul>
-  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
-  </li>
-</ul>
-
-<p>
-  Los propietarios de perfiles pueden controlar la visibilidad de los contactos laborales en el usuario
- principal por medio de los nuevos métodos a continuación:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
-  </li>
-</ul>
-
-<h2 id="remote-reboot">Reinicio remoto</h2>
-
-<p>
-  Los propietarios pueden reiniciar sus dispositivos de forma remota. En algunos casos, no se puede acceder al botón de encendido de los dispositivos implementados en
- lugares públicos dentro de recintos. Si se debe
- reiniciar un dispositivo, los administradores pueden hacerlo utilizando el nuevo método
-  <code>DevicePolicyManager.reboot()</code>.
-</p>
-
-<h2 id="disable-roaming">Inhabilitar roaming de datos</h2>
-
-<p>
-  Los propietarios de dispositivos pueden inhabilitar el roaming de datos mediante la nueva restricción de usuario de {@link
-  android.os.UserManager} denominada <code>DISALLOW_DATA_ROAMING</code>.
-</p>
-
-<h2 id="process-logging">Registros de procesos empresariales</h2>
-
-<p>
-  Los propietarios de dispositivos pueden identificar actividades sospechosas mediante un rastreo remoto de la actividad del
- dispositivo, incluidos inicios de aplicaciones, actividad adb y desbloqueos de pantalla. Los registros de
- procesos no requieren del consentimiento del usuario. Para recuperar registros, los propietarios de dispositivos habilitan
- los registros de dispositivos mediante <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
-</p>
-
-<p>
-  Entre los cambios en la API, se incluyen los siguientes:
-</p>
-
-<ul>
-
-  <li>
-    La nueva clase <code>android.app.admin.SecurityLog</code> y sus
- métodos
-  </li>
-
-  <li>
-    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrieveSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
-  </li>
-</ul>
-
-<h2 id="bug-reports">Informes de errores remotos</h2>
-
-<p>
-  Los propietarios de dispositivos pueden activar y recuperar de forma remota un informe de errores que contenga un
- archivo de descarga sobre el estado del dispositivo, lo que permite llevar a cabo una investigación forense de un
- incidente conocido o un dispositivo afectado. Debido a la naturaleza detallada del informe de errores,
- se requiere el consentimiento del usuario.
-</p>
-
-<p>
-  Android N incluye los siguientes agregados de API para ofrecer compatibilidad con esta función. Para obtener
- detalles, consulte la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK
-</a>.
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.requestBugreport()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportFailed()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportShared()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
-  </li>
-</ul>
-
-<h2 id="remove-cert">Quitar un certificado de cliente</h2>
-
-<p>
-  Los propietarios de perfiles y dispositivos ahora pueden quitar certificados de cliente que se
- instalaron a través de {@link android.app.admin.DevicePolicyManager#installKeyPair
-  installKeyPair()} llamando al nuevo método
-  <code>DevicePolicyManager.removeKeyPair()</code>.
-</p>
-
-<h2 id="grant-cert-on-install">Otorgar acceso a certificado de cliente
- en la instalación</h2>
-
-<p>
-  Si un propietario de perfil o dispositivo otorga a una aplicación de terceros la capacidad de
- administrar certificados, dicha aplicación puede acceder por sí sola a los certificados que
- instala sin intervención alguna por parte del propietario.
-</p>
-
-<p>
-  La API existente para administrar certificados se extiende para incluir lo siguiente:
-</p>
-
-<ul>
-  <li><code>DevicePolicyManager.installKeyPair()</code>
-  </li>
-</ul>
-
-<h2 id="ui-policy">Transparencia de la política de IU del sistema</h2>
-
-<p>
-  Las políticas que afectan la experiencia del usuario o restringen las configuraciones del usuario se divulgan
- en su totalidad al usuario, y los propietarios de perfiles y dispositivos pueden atribuir la
- política al departamento de TI de la empresa. Además de un mensaje “Action
- not allowed” consistente en Settings, los administradores de TI pueden configurar un
- mensaje de soporte específico para la organización en la configuración del dispositivo con los nuevos
- métodos{@link android.app.admin.DevicePolicyManager} a continuación:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setShortSupportMessage()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.setLongSupportMessage()</code>
-  </li>
-</ul>
-
-<h2 id="restrictions-mgmt">Mejoras en la administración de las restricciones de aplicaciones</h2>
-
-<p>
-  El propietario del dispositivo o perfil puede habilitar otra aplicación para que administre las restricciones de
- aplicaciones mediante el nuevo método
-  <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
-. La aplicación nominada puede controlar si se otorgó este permiso
- llamando a
-  <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
-</p>
-
-<p>
-  Una aplicación nominada para administrar restricciones de aplicaciones puede llamar a {@link
-  android.app.admin.DevicePolicyManager#setApplicationRestrictions
-  setApplicationRestrictions()} y {@link
-  android.app.admin.DevicePolicyManager#getApplicationRestrictions
-  getApplicationRestrictions()} para cualquier paquete dentro de ese usuario o perfil.
-</p>
-
-<h2 id="location-off">Interruptor de desactivación de los servicios de ubicación</h2>
-
-<p>
-  Los usuarios pueden inhabilitar los permisos de ubicación para las aplicaciones de trabajo mientras continúan
- accediendo a información sobre ubicación en sus aplicaciones personales. Mediante un interruptor independiente de acceso
- a información de ubicación en Location Settings, los usuarios pueden denegar las actualizaciones de ubicación o
- las consultas de última ubicación para las aplicaciones que se ejecutan en el perfil de trabajo.
-</p>
-
-<p>
-  Gracias al interruptor de desactivación de servicios de ubicación de nivel superior, se inhabilita el acceso a este tipo de información para
- el perfil principal y el perfil administrado.
-</p>
-
-<h2 id="custom-provisioning">Aprovisionamiento personalizado</h2>
-
-<p>
-  En una aplicación se pueden personalizar los flujos de provisión
- del propietario del perfil y del propietario del dispositivo con logos y colores corporativos.
-</p>
-
-<dl>
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
-  </dt>
-
-  <dd>
-    Permite personalizar el color del flujo.
-  </dd>
-
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
-  </dt>
-
-  <dd>
-    Permite personalizar el flujo con un logo corporativo.
-  </dd>
-</dl>
-
-<h2 id="multi-wifi-ca">Múltiples certificados de CA de Wi-Fi</h2>
-
-<p>
-  Los propietarios de perfiles y dispositivos pueden configurar múltiples certificados de CA para una configuración
- de Wi-Fi determinada. Cuando las redes de Wi-Fi corporativas tienen CA independientes para
- diferentes puntos de acceso con el mismo SSID, los administradores de TI pueden incluir todas las
- CA relevantes en la configuración Wi-Fi utilizando el nuevo método
-  <code>setCaCertificates()</code>.
-</p>
-
-<p>
-  Las API que se agregaron son las siguientes:
-</p>
-
-<ul>
-  <li>
-    <code>WifiEnterpriseConfig.setCaCertificates()</code>
-  </li>
-
-  <li>
-    <code>WifiEnterpriseConfig.getCaCertificates()</code>
-  </li>
-</ul>
-
-<h2 id="custom-lock">Mensaje personalizado en la pantalla bloqueada</h2>
-
-<p>
-  Los propietarios de dispositivos pueden proporcionar información de propietario para que aparezca en la pantalla bloqueada.
-  Esta información prevalece sobre el mensaje de la pantalla bloqueada del usuario (si se configuró
- uno). Los nuevos métodos {@link android.app.admin.DevicePolicyManager} son los siguientes:
-</p>
-
-<ul>
-  <li>
-    <code>setDeviceOwnerLockScreenInfo()</code>
-  </li>
-
-  <li>
-    <code>getDeviceOwnerLockScreenInfo()</code>
-  </li>
-</ul>
-
-<h2 id="work-connectionservice">ConnectionService del perfil de trabajo</h2>
-
-<p>
-  Los propietarios de perfiles pueden especificar una aplicación de teléfono de trabajo que utilice un
- {@link android.telecom.ConnectionService} específico del trabajo para el backend
- de llamadas (cuentas de llamadas). El teléfono de trabajo lleva únicamente un registro de llamadas de trabajo
- y depende solo de contactos laborales. Los usuarios tienen una experiencia de IU
- de llamada entrante consistente independientemente de la aplicación de marcación. Las llamadas laborales que ingresan en las
- cuentas de llamadas de trabajo se distinguen de las llamadas personales que ingresan en
- las cuentas de llamadas personales.
-</p>
-
-<p>
-  El teléfono debe controlar el nuevo marcador
-  <code>android.telecom.Call.PROPERTY_WORK_CALL</code> para determinar si una llamada es
- de tipo laboral. Si se trata de una llamada laboral, el teléfono debe indicarlo
-, por ejemplo, mediante el agregado de una insignia de trabajo.
-</p>
-
-<h2 id="lock-wp">Bloquear fondo de pantalla</h2>
-
-<p>
-  Mediante una nueva restricción de usuario (<code>DISALLOW_SET_WALLPAPER</code>), se evita que el
- usuario modifique el fondo de pantalla. Los propietarios de dispositivos o perfiles aún pueden
- modificar el fondo de pantalla. Sin embargo, solo pueden hacerlo para el
- usuario o perfil que controlan. Por ejemplo, el propietario de un perfil no puede modificar el
- fondo de pantalla del usuario primario,
- pero sí pueden hacerlo el propietario de un dispositivo o el propietario de un perfil en el perfil principal. El propietario de un dispositivo o perfil que desea modificar el
- fondo de pantalla debe controlar si el usuario o perfil que administra posee un
- fondo de pantalla ({@link android.app.WallpaperManager#isWallpaperSupported
-  isWallpaperSupported()}) y si puede modificarlo (con el
- nuevo método <code>WallpaperManager.isWallpaperSettingAllowed()</code>).
-</p>
-
-<h2 id="lock-user-icon">Bloquear ícono de usuario</h2>
-
-<p>
-  Mediante una nueva restricción de usuario (<code>DISALLOW_SET_USER_ICON</code>), se evita que el
- usuario modifique el ícono de usuario. El propietario del dispositivo o del perfil del usuario
- aún puede modificar el ícono. Sin embargo, un propietario de perfil solo puede modificar el ícono
- de usuario del perfil que controla.
-</p>
-
-<h2 id="health-monitoring">Control del estado del dispositivo</h2>
-
-<p>
-  El propietario de un perfil o dispositivo puede usar la nueva interfaz
-  <code>HardwarePropertiesManager</code> para recuperar información
- sobre el estado del dispositivo, como por ejemplo, las temperaturas de CPU o GPU y el uso de la CPU. La nueva interfaz
- de control es especialmente útil para controlar dispositivos sin supervisión
- que se ejecutan en una ubicación remota.
-</p>
diff --git a/docs/html-intl/intl/es/preview/license.jd b/docs/html-intl/intl/es/preview/license.jd
deleted file mode 100644
index 52643bc..0000000
--- a/docs/html-intl/intl/es/preview/license.jd
+++ /dev/null
@@ -1,145 +0,0 @@
-page.title=Contrato de licencia
-
-@jd:body
-
-<p>
-Para comenzar a usar la Android SDK Preview, debe aceptar los términos y las condiciones que se describen a continuación.
-Como se describe a continuación, tenga en cuenta que esta es una versión preliminar del Android SDK, que está sujeta a cambios y que usted utiliza bajo su cuenta y riesgo.  La Android SDK Preview no es una versión estable y puede contener errores y defectos que pueden provocar daños graves a sus sistemas informáticos, dispositivos y datos.
-</p>
-
-<p>
-Este es el Contrato de licencia de la versión Android SDK Preview (el “Contrato de licencia”).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Introducción
-
-1.1 Se le otorga la licencia de la versión Android SDK Preview (denominada “Preview” en el Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Preview, 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 en relación con el uso que realice de la Preview.
-
-1.2 “Android” hace referencia al conjunto de soluciones Android para dispositivos, según se encuentre disponible en el Proyecto de código abierto de Android (Android Open Source Project), que se encuentra en la siguiente URL: http://source.android.com/, y según se actualiza periódicamente.
-
-.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, 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” hace referencia a Google Inc., una corporación de Delaware, con 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 Preview, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Preview.
-
-2.2 Al hacer clic para aceptar o utilizar la Preview, por medio del presente, usted acepta los términos del Contrato de licencia.
-
-2.3 No puede utilizar la Preview ni aceptar el Contrato de licencia si tiene prohibido recibir la Preview 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 Preview.
-
-2.4 Si utilizará la Preview de forma interna, dentro de su empresa 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 usted no posee la autoridad requerida, no podrá aceptar el Contrato de licencia ni utilizar la Preview 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 sin la posibilidad de 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 (entre las que se incluyen implementaciones incompatibles de Android) o para desarrollar otro SDK. Desde luego, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, entre las que se incluyen implementaciones incompatibles de Android, siempre y cuando esta Preview no se utilice 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 esta. "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 Usted no podrá utilizar la Preview 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 regla con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerte de realizar acción alguna que pudiera poner fin, suspender o violar dichos derechos.
-
-3.6 Acepta que la forma y la naturaleza de la Preview que proporciona Google pueden cambiar sin tener que brindarle aviso previo, y que las versiones futuras de la Preview pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Preview. Usted acepta que Google, generalmente a su entera discreción, puede dejar de proporcionarle a usted o a los demás usuarios (de forma permanente o temporal) la Preview (o cualquiera de sus funciones) sin previo aviso.
-
-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 quitará, ocultará o alterará ninguna de las notificaciones de derechos de autor (entre las que se incluyen las notificaciones de copyright y marcas comercias) que pudieran estar anexadas o implícitas en la Preview.
-
-4. Uso que usted realiza de la Preview
-
-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 Preview, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
-
-4.2 Usted acepta utilizar la Preview 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 y pertinentes en las jurisdicciones relevantes (entre las que se incluyen 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 Preview 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 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 Preview, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Preview contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Preview, dado que esta Preview ya no se admitirá tras el lanzamiento del Android SDK oficial.
-
-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 pudiera escoger usted mismo, 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 Con el objetivo de poder innovar y mejorar de forma continua la Preview, Google podría recopilar ciertas estadísticas de uso del software, entre las que se incluyen, de forma enunciativa, 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 Preview que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Preview 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 Preview 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 Preview 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 el permiso específico 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 con base 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 cualquier 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 cuando, y para 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 Preview y de las credenciales de desarrollador pertinentes.
-
-9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, luego de notificárselo.
-
-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 Preview 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 Android SDK.
-
-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 Preview, 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 PREVIEW ES BAJO SU PROPIO RIESGO Y QUE LA PREVIEW 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 PREVIEW Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA PREVIEW 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. ESTAS 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>
\ 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
deleted file mode 100644
index dc42175..0000000
--- a/docs/html-intl/intl/es/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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", "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>
-  Bienvenido a <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 comenzar
-  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 el programa de muestra, ofreceremos varias actualizaciones mensuales. De esta manera, realizarás la prueba 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>
-        Infórmanos los problemas y envíanos comentarios a través de nuestro
-      <a href="{@docRoot}preview/bug">seguimiento de problemas</a>. Conéctate con otros
-        desarrolladores en la
-        <a href="{@docRoot}preview/dev-community">comunidad&nbsp;de desarrolladores de Android 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 las versiones "milestone" del desarrollo, lanzaremos actualizaciones para tu entorno de pruebas y desarrollo.
- En general, podrás contar con una actualización por mes (intervalo de 4 a 6
-   semanas). A continuación, se muestran las versiones "milestone":
-</p>
-
-<ul>
-  <li><strong><a href="{@docRoot}preview/support.html#dp1">Preview 1</a></strong> (versión inicial, alpha);</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong> (actualización gradual, alpha);</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></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 Preview, emuladores, documentación de referencia y diferencias de API.
-
-</p>
-
-<p>
-  En las primeras <strong>tres versiones "milestone" de Preview</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>
-  En <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 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, para 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 pruebas y desarrollas en Android N, te recomendamos que <strong>mantengas
-  tu entorno de desarrollo actualizado</strong> conforme se lanzan
-  las actualizaciones de Preview. Para facilitar el proceso, puedes registrar tus dispositivos de prueba en el
-  Programa de Android Beta y obtener <strong>actualizaciones inalámbricas</strong> en cada
-  versión "milestone". Como alternativa, habrá imágenes de Preview actualizadas disponibles que puedes
-  descargar y actualizar de manera manual.
-</p>
-
-<p>
-  Cuando haya actualizaciones de Preview disponibles, 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}studio/intro/update.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 momento clave (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 inalámbricas</strong>, como en
-  la Preview del año pasado. Este año, podrás recibir actualizaciones inalámbricas registrando dispositivos en el
-  Programa de Android Beta. Consulta la sección siguiente para obtener información detallada.
-</p>
-
-<h3 id="android_beta">Actualizaciones inalámbricas a través del Programa de Android Beta</h3>
-
-<p>
-  Como novedad en Android N, se ofrece un programa de actualización inalámbrica que
-  proporciona las últimas actualizaciones 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 dispositivos para los que 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 crear una copia de seguridad 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, no te olvides 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>
-  se someterá a un restablecimiento de fábrica</strong> a través del que 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 de 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 clave que debes probar.</li>
-  <li> Documentación de nuevas API, entre la que se incluye <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 configuraciones regionales 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 Preview, 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> en forma de
-  archivo .zip independiente. 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 canal <strong>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/bugs">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 Preview 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 (un proceso muy
-  recomendado), puedes orientar la versión Android N Preview 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>
-  Android N Developer Preview ofrece las <strong>API de Preview</strong>
-  , que no serán oficiales hasta el lanzamiento de la versión definitiva de 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 Android N Developer Preview.
-</p>
-
-<p class="note">
-  <strong>Nota</strong>: Aunque las API de Preview 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">Comenzar</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> para
-  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/preview_toc.cs b/docs/html-intl/intl/es/preview/preview_toc.cs
deleted file mode 100644
index 6c98c2f..0000000
--- a/docs/html-intl/intl/es/preview/preview_toc.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-<ul id="nav">
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="程式總覽">Información general del programa</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/support.html">Compatibilidad y notas de la versión</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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">Configuración de Preview</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="在裝置上測試">Prueba en un dispositivo</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="行為變更">Cambios en los comportamientos</a></div>
-      <ul>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/background-optimization.html" 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="背景最佳化">Optimizaciones en segundo plano</a></li>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/multilingual-support.html" 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="語言和地區設定">Idioma y configuración regional</a></li>
-      </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="&lt;?cs var:toroot ?&gt;preview/features/multi-window.html" 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="多視窗支援">Compatibilidad con ventanas múltiples</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/notification-updates.html" 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="通知">Notificaciones</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/data-saver.html">Ahorro de datos</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/tv-recording-api.html" 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="電視錄製">Grabación de TV</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/security-config.html" 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="網路安全性設定">Configuración de seguridad de la red</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/icu4j-framework.html" 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">Compatibilidad con ICU4J</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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 語言功能">Funciones del lenguaje Java 8</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/afw.html">Actualizaciones para Android for Work</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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="限定範圍目錄存取">Acceso a directorios determinados</a></li>
-      </ul>
-  </li>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/samples.html" es-lang="Ejemplos" in-lang="Contoh" ja-lang="サンプル" ko-lang="샘플" pt-br-lang="Exemplos" ru-lang="Примеры" zh-cn-lang="示例" zh-tw-lang="範例">Ejemplos</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/license.html" es-lang="Contrato de licencia" ja-lang="使用許諾契約" ko-lang="라이선스 계약" pt-br-lang="Contrato de licença" ru-lang="Лицензионное соглашение" zh-cn-lang="许可协议" zh-tw-lang="授權協議">Contrato de licencia</a></div>
-  </li>
-
-</ul> 
\ 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
deleted file mode 100644
index 51260bb..0000000
--- a/docs/html-intl/intl/es/preview/setup-sdk.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Configuración de 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 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</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>
-
-<p>Si ya cuentas con Android Studio, cerciórate de que tienes Android
-Studio 2.1 o una versión anterior haciendo clic en <strong>Help &gt; Check for Update</strong>
-(en Mac, <strong>Android Studio &gt; Check for Updates</strong>).</p>
-
-<p>Si no cuentas con él, <a href="{@docRoot}studio/">descarga Android Studio
-2.1 aquí</a>.</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>Abre el Administrador de SDK haciendo clic en <strong>Tools &gt; Android &gt;
-  SDK Manager</strong>.</li>
-
-  <li>En la pestaña <strong>SDK Platforms</strong>, 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 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-3-docs.zip">n-preview-3-docs.zip</a></td>
-    <td width="100%">
-      MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
-    </td>
-  </tr>
-<table>
-
-
-
-<h2 id="java8">Obtener el JDK de Java 8</h2>
-
-<p>Para compilar tu aplicación en función de la plataforma de Android N y para usar algunas herramientas con
-Android Studio 2.1 el Java 8 Developer Kit (JDK 8). Por lo tanto, si
-aún no tienes la última versión, descarga el JDK 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-rc3'</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/es/preview/support.jd b/docs/html-intl/intl/es/preview/support.jd
deleted file mode 100644
index 517429d..0000000
--- a/docs/html-intl/intl/es/preview/support.jd
+++ /dev/null
@@ -1,1188 +0,0 @@
-page.title=Soporte y notas de la versión
-meta.keywords="preview", "android"
-page.tags="preview", "developer preview"
-page.image=images/cards/card-n-support_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>En este documento</h2>
-
-<ul>
-  <li><a href="#dp3">Developer Preview 3</a>
-    <ul>
-      <li><a href="#general">Recomendaciones generales</a></li>
-      <li><a href="#new">Novedades en DP3</a></li>
-      <li><a href="#ki">Problemas conocidos</a></li>
-    </ul>
-  </li>
-  <li><a href="#dp2">Developer Preview 2</a></li>
-  <li><a href="#dp1">Developer Preview 1</a></li>
-</ul>
-
-<!--
-<h2>See Also</h2>
-<ol>
-  <li></li>
-</ol>
--->
-
-</div>
-</div>
-
-<p>
-  Durante el desarrollo y las pruebas que lleves a cabo con
-  la Android N Developer Preview tendrás dos canales de soporte principales: Para informar los errores específicos de
-  dispositivos, de sistema o de Google Apps, visita <a href="https://developer.android.com/preview/bug">https://developer.android.com/preview/bug</a>. Para informar sobre problemas en otras aplicaciones,
-  ponte en contacto directamente con el desarrollador.
-</p>
-
-<p>Para debatir sobre problemas o ideas con otros desarrolladores que estén trabajando en Android N, únete a la comunidad
-<a href="{@docRoot}preview/dev-community">M Developer Preview en Google+</a>.</p>
-
-<h2 id="dp3">Developer Preview 3</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Fecha: Mayo de 2016<br>
-        Versión: NPD35K<br>
-        Compatibilidad con emulador: x86 y ARM (32/64-bit)<br>
-        Servicios de Google Play: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="general">Recomendaciones generales</h3>
-
-<p>
-  Esta versión de Developer Preview está pensada para <strong>desarrolladores de aplicaciones y usuarios
-  pioneros</strong> y está disponible para uso diario, desarrollo o
-  pruebas de compatibilidad. Ten en cuenta estas notas generales sobre la
-  versión:
-</p>
-
-<ul>
-  <li>Esta versión puede tener varios <strong>problemas de estabilidad</strong> en
-    dispositivos compatibles. Los usuarios se pueden topar con un sistema inestable, con errores
-    internos del núcleo y fallas.
-  </li>
-
-  <li>Algunas aplicaciones <strong>quizá no funcionen como se espera</strong> en la versión de la plataforma
-  nueva. Entre ellas se incluyen tanto aplicaciones de Google como de otros desarrolladores.
-  </li>
-
-  <li>Developer Preview 3 para desarrolladores ha superado el <strong>conjunto de pruebas de compatibilidad (CTS)
-  </strong> en estos dispositivos: Nexus 5X, Nexus 6, Nexus 6P y Pixel
-  C. Las aplicaciones que dependen de compilaciones que hayan aprobado el CTS deberían
-  funcionar con normalidad en estos dispositivos (por ejemplo, Android Pay).
-  </li>
-
-  <li>Developer Preview 3 está <strong>disponible en todos los dispositivos
-  compatibles:</strong> Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player, Pixel
-  C, General Mobile 4G (Android One) y Sony Xperia Z3 (modelos D6603 y
-  D6653).
-
-  </li>
-</ul>
-
-
-<h3 id="new">Novedades en DP3</h3>
-
-<h4 id="">Modo RV para Android</h4>
-
-<p>
-  Android N agrega compatibilidad y optimizaciones de plataforma para un Modo RV nuevo, con el objetivo de que los
-  desarrolladores puedan forjar experiencias RV móviles de alta calidad para los usuarios. Hay varias
-  mejoras en el rendimiento, entre las que se incluye el acceso a un núcleo de CPU exclusivo
-  para aplicaciones de RV. Dentro de tus aplicaciones, puedes aprovechar el seguimiento de cabeza
-  inteligente y las notificaciones en sonido estéreo que funcionan para el modo RV. Un dato muy importante es que
-  Android N presenta muy pocos gráficos de baja latencia.
-</p>
-
-<p>
-  Para obtener más información, consulta <a href="https://developers.google.com/vr/android/">Google VR SDK para Android</a>.
-</p>
-
-<h4 id="">Modo de rendimiento sostenido</h4>
-
-<p>
-  Android N incluye compatibilidad opcional para un <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">modo de rendimiento
-   sostenido</a>, que permite que los OEM arrojen datos sobre las capacidades de rendimiento del dispositivo
-  para las aplicaciones que llevan tiempo ejecutándose. Los desarrolladores de aplicaciones pueden usar estos
-  datos para pulir sus aplicaciones y alcanzar un nivel consistente y predecible de rendimiento durante períodos prolongados
-  en el dispositivo. Los desarrolladores de aplicaciones solo pueden probar este API nuevo
-  en la Preview instalada en Nexus 6P.
-</p>
-
-<h4>Multiprocess WebView</h4>
-
-<p>
-  Desde la versión 51 de Android N, WebView ejecutará contenido web en
-  procesos individuales de espacio aislado cuando se haya habilitado
-  la opción "Multiprocess WebView". El equipo de WebView espera recibir comentarios sobre compatibilidad y
-  rendimiento de tiempo de ejecución en N antes de habilitar Multiprocess WebView en
-  versiones futuras de Android. En esta versión, pueden darse regresiones en el tiempo de inicio, uso total
-  de la memoria y problemas de rendimiento en la representación de software.
-</p>
-
-<p>
-  Si te topas con problemas inesperados en el modo de multiprocesos, nos gustaría que compartas la información
-  con nosotros. Ponte en contacto con el equipo de WebView <a href="https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">
-  informándolos sobre un error</a>.
-</p>
-
-<h4 id="">Ayuda en los métodos abreviados del teclado</h4>
-
-<p>
-  Android N permite que los usuarios pulsen <code>Meta+/</code> para activar una pantalla de <strong>Keyboard
-  Shortcuts</strong> que muestra todos los métodos abreviados disponibles tanto para el
-  sistema como para la aplicación que esté en primer plano. Los desarrolladores pueden agregar sus propios métodos abreviados o
-  activar la pantalla de métodos abreviados desde sus aplicaciones. Consulta <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Ayuda en los métodos
-  abreviados del teclado</a> para ver más detalles.
-</p>
-
-<h4 id="">API FrameMetrics</h4>
-
-<p>
-  DP3 presenta una <a href="{@docRoot}preview/api-overview.html#framemetrics_api">API FrameMetrics</a>nueva
-  que permite que una aplicación monitoree su rendimiento de representación de IU mediante la exposición de una
-   transmisión de API Pub/Sub para transferir información sobre el intervalo de los fotogramas para la ventana actual
-  de la aplicación. Puedes usar <code>FrameMetricsListener</code> para medir
-  el rendimiento de la IU del nivel de interacción en producción con una granularidad mayor y
-  sin la necesidad de contar con conexión USB.
-</p>
-
-<h4 id="api-changes">Característica y cambios en la API</h4>
-
-<dl>
-  <dt>
-    Accesos directos al launcher y sus API
-  </dt>
-
-  <dd>
-    Hemos decidido postergar esta característica hasta una versión futura de Android. El plan
-    es eliminar las API de accesos directos al launcher (ShortcutManager y otras) de la
-    API pública de Android N a partir de la siguiente Preview.
-  </dd>
-
-  <dt>
-    Ejecución de WebView Javascript antes de la carga de página
-  </dt>
-
-  <dd>
-    Comenzando por las aplicaciones que hagan objetivo a Android N, el contexto de JavaScript se restablece
-    cuando se carga una página nueva. De momento, el contexto de la
-    primera página cargada se mantiene en una instancia {@link android.webkit.WebView} nueva.
-    Los desarrolladores que quieran introducir JavaScript en {@link
-    android.webkit.WebView} deberían ejecutar la secuencia de comandos luego de que la página haya
-   comenzado a cargar.
-  </dd>
-
-  <dt>
-    Ubicación geográfica de WebView en orígenes inseguros
-  </dt>
-
-  <dd>
-    Comenzando por las aplicaciones que hagan objetivo a Android N, solo se permitirá
-    el uso de la API de ubicación geográfica en orígenes seguros (en HTTPS). Esta política se ha diseñado para proteger
-    la información privada del usuario cuando use una conexión insegura.
-  </dd>
-
-  <dt>
-    Ahorro de datos
-  </dt>
-
-  <dd>
-    A partir de Developer Preview 3 para desarrolladores, las aplicaciones pueden usar una intent para mostrar un
-    recuadro de diálogo de sistema que permite que el usuario agregue la aplicación directamente a la lista blanca de excepciones
-    de ahorro de datos. Consulta la <a href="{@docRoot}preview/api-overview.html#data_saver">documentación
-    sobre ahorro de datos</a> para ver más detalles.
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#number-blocking">Bloqueo de números</a>
-  </dt>
-
-  <dd>
-    Ahora, si un usuario sin autorización intenta bloquear o desbloquear un número, la
-    operación fallará y arrojará el mensaje {@link java.lang.SecurityException}. (Antes,
-    la operación arrojaba el mensaje {@link java.lang.UnsupportedOperationException}).
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#tile_api">API para mosaico
-    de configuración rápida</a>
-  </dt>
-
-  <dd>
-    Ahora, el sistema utiliza metadatos de la actividad para definir el modo de mosaico.
-    (Antes, el valor de devolución de
-    <code>TileService.onTileAdded()</code> determinaba el modo de mosaico). Para obtener más información, consulta
-    <code>TileService.META_DATA_ACTIVE_TILE</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> descargable.
-  </dd>
-</dl>
-
-<h4 id="dp3-fixes">Soluciones para los errores que informaron los desarrolladores</h4>
-
-<p>
-  Se han solucionado varios errores que los desarrolladores habían informado, entre los que se incluyen:
-</p>
-
-<ul>
-  <li>Interrupción de la reproducción de audio por Bluetooth luego de una canción (error <a href="https://code.google.com/p/android/issues/detail?id=206889">206889</a>)
-  </li>
-
-  <li>Fallas continuas en Pixel C (error <a href="https://code.google.com/p/android/issues/detail?id=206962">206962</a>)
-  </li>
-
-  <li>Problemas de notificaciones en Clock and Toast (error <a href="https://code.google.com/p/android/issues/detail?id=203094">203094</a>)
-  </li>
-
-  <li>Reinicio de Pixel C cuando se lo conecta a una MacBook Pro mediante un cable USB C (error
-  <a href="https://code.google.com/p/android/issues/detail?id=205432">205432</a>)
-  </li>
-
-  <li>Diferencia de un día en el calendario (error <a href="https://code.google.com/p/android/issues/detail?id=203002">203002</a>)
-  </li>
-
-  <li>Devolución de datos no válidos de parte de TelephonyManager.getAllCellInfo (error <a href="https://code.google.com/p/android/issues/detail?id=203022">203022</a>)
-  </li>
-
-  <li>Nexus 6P - Desconexión continua de Bluetooth (error <a href="https://code.google.com/p/android/issues/detail?id=208062">208062</a>)
-  </li>
-</ul>
-
-<p>Para conocer la lista completa de errores solucionados, consulta <a href="https://goo.gl/6uCKtf">el
-seguimiento de problemas</a>.</p>
-
-<h3 id="ki">Problemas conocidos</h3>
-
-<h4>Accesibilidad</h4>
-
-<ul>
-  <li>Imposibilidad de escuchar el formato de salida TTS cuando la inclinación está cerca del nivel máximo.
-  </li>
-
-  <li>Las funciones y la configuración de accesibilidad pueden verse interrumpidas cuando el usuario agrega un
-  perfil de trabajo, como el gesto y la configuración de ampliación. El estado
-  de la accesibilidad se restablece cuando el usuario cambia la configuración asociada.
-  </li>
-</ul>
-
-<h4>Cámara</h4>
-
-<ul>
-  <li>La aplicación Cámara ha mostrado inestabilidad; puede presentar fallos en varias
-    circunstancias, como cuando se la ejecuta en el modo de ventanas múltiples.
-  </li>
-
-  <li>Si se presiona el obturador repetidas veces en el modo panorámico, la aplicación Cámara
-  puede fallar.
-  </li>
-</ul>
-
-<h4>Audio</h4>
-<ul>
-  <li>Un error en el reproductor de audio de plataforma impide que algunas aplicaciones
-  funcionen con normalidad. Este error afecta, por ejemplo, a aplicaciones como Skype y otras.
-  </li>
-</ul>
-
-<h4>Conectividad</h4>
-
-
-<ul>
-  <li>Cuando un dispositivo de rol periférico Bluetooth Low Energy (BLE) indica un
-  servicio y se conecta un dispositivo de rol central BLE, el dispositivo de rol periférico
-  se desconecta rápidamente.
-  </li>
-
-  <li>La conexión Wi-Fi puede perderse cuando la pantalla está apagada.
-  </li>
-
-  <li>Las conexiones RFCOMM son inestables y pueden provocar daños en los datos y
-  conexiones con poca estabilidad.
-  </li>
-
-  <li>El estado de red activo ({@link android.net.NetworkInfo#getState
-  NetworkInfo.getState()} y {@link android.net.NetworkInfo#getDetailedState
-  NetworkInfo.getDetailedState()}) pueden devolver valores incorrectos durante algunos
-  escenarios de fondos restringidos.
-  </li>
-</ul>
-
-
-<h4>
-  Launcher
-</h4>
-
-<ul>
-  <li>La bandeja All Apps predeterminada del lanzador puede dejar de responder luego de que
-  la pantalla se apague y se encienda. El problema se puede resolver volviendo a la pantalla de inicio y ejecutando otra vez
-  la bandeja All Apps.
-  </li>
-</ul>
-
-<h4>
-  Teclado
-</h4>
-
-<ul>
-  <li>Cuando se actualiza un dispositivo que utiliza Android 6.0 o una versión anterior a la N Developer
-  Preview, el teclado de Google no conserva los datos de preferencias como los emoji recientes
-  y la configuración de sonido.
-  </li>
-
-  <li>Google Indic Managed Keyboard puede comportarse de manera inestable.
-  </li>
-
-  <li>Cuando se ingresa texto en un campo de contraseña, el usuario puede seleccionar ruso como
-  el idioma de escritura, pero el teclado permanece en inglés. Esto impide que los
-  usuarios puedan ingresar contraseñas en ruso.
-  </li>
-</ul>
-
-<h4>
-  Configuración regional e idiomas
-</h4>
-
-<ul>
-  <li>Cuando se usa una configuración regional de derecha a izquierda (RTL), el sistema puede cambiar, de manera inesperada,
-  a una presentación de izquierda a derecha (LTR) luego de reiniciar el dispositivo.
-  </li>
-</ul>
-
-<h4>Medios</h4>
-
-<ul>
-  <li>En Nexus 9 y Nexus Player, la reproducción de medios puede no ser la correcta y presentar, entre otros,
- errores al reproducir HD.
-  </li>
-</ul>
-
-<h4>
-  Modo de ventanas múltiples
-</h4>
-
-<ul>
-  <li>El dispositivo se puede congelar cuando se cambia la orientación en el modo de ventanas múltiples.
-  </li>
-
-  <li>De momento, varias aplicaciones tienen problemas con el modo de ventanas múltiples:
-    <ul>
-      <li>La IU del sistema puede fallar cuando se cambia Settings &gt; Display &gt;
-      Screen brightness al modo de ventanas múltiples.
-      </li>
-
-      <li>La aplicación Cámara puede fallar cuando se la ejecuta en el modo de ventanas múltiples.
-      </li>
-
-      <li>YouTube puede fallar cuando se lo ejecuta en el modo de ventanas múltiples. Para solucionar el
-      problema, puedes borrar los datos de la aplicación YouTube en Storage &gt; Apps &gt;
-      YouTube.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>
-  Servicios de Google Play
-</h4>
-
-<ul>
-  <li>Las aplicaciones que usen Google Cast por medio de los servicios de Google Play pueden presentar problemas cuando
-  el usuario elige una configuración regional del sistema que usa letras y números que estén fuera del
-  rango ASCII.
-  </li>
-</ul>
-
-<h4>
-  Android for Work y Google Apps Device Policy
-</h4>
-
-<ul>
-  <li>La aplicación Device Policy puede fallar cuando el usuario desbloquea el dispositivo con la pantalla
-  "device policy status" anclada.
-  </li>
-
-  <li>Después de configurar un perfil de trabajo con la encriptación a base de archivos habilitada y
-  luego desactivar Work, los usuarios deberán desactivar el bloqueo de pantalla del perfil principal para volver
-  a acceder a las aplicaciones de Work.
-  </li>
-
-  <li>El dispositivo se reinicia cuando se quita el patrón de seguridad y se abre una
-  aplicación personal o de trabajo en el modo de ventanas múltiples.
-  </li>
-
-  <li>Configurar DISALLOW_VPN_CONFIG provoca que el diálogo de consentimiento aparezca en
-  always-on-vpn, configurado por Device Policy Client.
-  </li>
-
-  <li>El tráfico no se bloquea hasta que la VPN esté conectada en el modo always-on-vpn.
-  </li>
-</ul>
-
-<h4>
-  Almacenamiento externo
-</h4>
-
-<ul>
-  <li>Las aplicaciones pueden comenzar a funcionar mal cuando el usuario las mueve desde el almacenamiento interno a un dispositivo de
-  almacenamiento externo (entre los que se incluyen las tarjetas SD o los dispositivos conectados por
-  medio de USB).
-  </li>
-</ul>
-
-<h4>
-  Zoom de la pantalla y APK múltiples en Google Play
-</h4>
-
-<ul>
-  <li>En dispositivos que usen Android N, los servicios de Google Play 9.0.83 informan erróneamente
-  la densidad de la pantalla actual en vez de la densidad de la pantalla estable. Cuando se habilita el zoom
-  de la pantalla en estos dispositivos, esto puede provocar que Google Play seleccione una
-  versión de una aplicación con APK múltiples diseñada para pantallas más pequeñas. Este error se
-  soluciona en la siguiente versión de los servicios de Google Play, y se incluirá en un
-  lanzamiento futuro de la Developer Preview.
-  </li>
-
-  <li>De momento, en dispositivos que usen Android N, los servicios de Google Play 9.0.83 informan la compatibilidad con
-  Vulkan, pero no con qué versión. Esto puede provocar que Google Play seleccione una
-  versión de una aplicación con APK múltiples diseñada con compatibilidad inferior con Vulkan en
-  dispositivos que son compatibles con versiones más nuevas. De momento, la tienda Google Play no
-  acepta actualizaciones de aplicaciones que utilicen selección de versión de Vulkan. Esta compatibilidad
-  se agregará a la tienda Google Play en el futuro, y se solucionará en la siguiente
-  versión de los servicios Google Play (que se incluirá en una Developer Preview
-  nueva). Cualquier dispositivo N que use una versión de servicios Google Play 9.0.83 seguirá
-  recibiendo versiones de aplicaciones que tengan compatibilidad básica con Vulkan.
-  </li>
-</ul>
-
-<h4 id="">Notificaciones</h4>
-
-<ul>
-  <li>MessagingStyle no muestra notificaciones con emisor "null" (propio).
-  </li>
-</ul>
-
-<h4 id="">Herramientas de desarrollador</h4>
-
-<ul>
-  <li>
-    <code>adb</code> se puede desconectar mientras se usa la depuración JDWP.
-  </li>
-</ul>
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-
-
-
-
-
-
-
-<!-- DP2 Release Notes Archive -->
-
-<h2 id="dp2">Developer Preview 2</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Fecha: Abril de 2016<br>
-        Compilaciones: NPC91K, NPC91O<br>
-        Compatibilidad con emulador: x86 y ARM (32/64-bit)<br>
-        Servicios de Google Play: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp2-new">Novedades en DP2</h3>
-
-<ul>
-  <li>Compatibilidad con plataformas para Vulkan, una nueva API de visualización 3D que permite
-  controlar explícitamente y con baja sobrecarga la GPU (unidad de procesamiento de gráficos) y ofrece
-  un rendimiento mejorado para aplicaciones sujetas a un nivel elevado de llamadas a draw. Para ver más detalles, consulta la
-  <a href="{@docRoot}ndk/guides/graphics/index.html">documentación</a>.
-  </li>
-
-  <li>Emoji de gente nuevos con compatibilidad para tonos de piel, y glifos Unicode 9.
-  El tono de piel y los emoji nuevos no se mostrarán hasta que la versión de los teclados sea compatible con
-  ellos en la paleta. Las aplicaciones no deberían tomar ninguna acción para sacar
-  ventaja de estos emoji nuevos, a menos que la aplicación utilice una fuente que no sea del sistema. Los desarrolladores de IME
-  tienen que incorporar compatibilidad con los emoji nuevos.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/api-overview.html#launcher_shortcuts">API de accesos directos
-    al launcher</a>: Las aplicaciones pueden usar <code>ShortcutManager</code> para enviar al launcher
-    accesos directos a puntos de control dentro de sí mismos.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/features/multi-window.html">Ventanas múltiples</a>:
-    Ahora puedes especificar un alto mínimo y un ancho mínimo individual para una
-    actividad. Además, se han modificado los nombres de varias API.
-  </li>
-</ul>
-
-<h4 id="dp2-fixes">Soluciones para los errores que informaron los desarrolladores</h4>
-
-<p>
-  Se han solucionado varios errores que los desarrolladores habían informado, entre los que se incluyen:
-</p>
-
-<ul>
-  <li>No se puede establecer la conexión a SSID o Wi-Fi ocultos. (error <a href="https://code.google.com/p/android/issues/detail?id=203116">203116</a>)
-  </li>
-
-  <li>El modo silenciado del micrófono persiste en distintas actividades. (error <a href="https://code.google.com/p/android/issues/detail?id=205922">205922</a>)
-  </li>
-
-  <li>Al cambiar el foco de ventanas múltiples, YouTube se pausa. (error <a href="https://code.google.com/p/android/issues/detail?id=203424">203424</a>)
-  </li>
-
-  <li>Respuesta directa puede cerrar la actividad abierta. (error <a href="https://code.google.com/p/android/issues/detail?id=204411">204411</a>)
-  </li>
-
-  <li>Varias soluciones de estabilidad.
-  </li>
-</ul>
-
-<h3 id="dp2-general">Recomendaciones generales</h3>
-
-<p>
-  Esta versión de la Developer Preview solo se recomienda a los <strong>desarrolladores de aplicaciones</strong>
-, y está diseñada para usarla en pruebas de compatibilidad y durante etapas tempranas del desarrollo.
-  Ten en cuenta estas notas generales sobre la versión:
-</p>
-
-<ul>
-
-  <li>Para el lanzamiento de la DP2,
-  se han actualizado los componentes de herramienta de desarrollo y las bibliotecas de compatibilidad. No te olvides de actualizar tu entorno de desarrollo de Preview
-  antes de desarrollar para DP2. Para ver instrucciones sobre cómo configurar tu entorno
-  de desarrollo, consulta
-  <a href="{@docRoot}preview/setup-sdk.html">Configuración de Preview</a>.
-  </li>
-
-  <li>Esta versión presenta varios problemas de estabilidad y rendimiento en todos los dispositivos
-  que la convierten en una versión <strong>no recomendable para el uso diario en tablets o teléfonos</strong>,
- especialmente para quienes no sean desarrolladores.
-  </li>
-
-  <li>En esta
-  versión, aún no se ha optimizado el rendimiento y la vida de la batería:
-
-    <ul>
-      <li>Se sabe que el <strong>rendimiento de las aplicaciones y el sistema es lento o
-      problemático</strong>, y existe la posibilidad de que, periódicamente, los dispositivos dejen de funcionar. Estos
-      problemas se pueden agravar con el uso prolongado.
-      </li>
-
-      <li>En esta versión, la vida de la batería se puede ver afectada cuando la pantalla
-      se apaga y se enciende.
-      </li>
-    </ul>
-  </li>
-
-  <li>Algunas <strong>aplicaciones quizá no funcionen con normalidad</strong> en la Developer Preview
-  2. Entre ellas se incluyen tanto aplicaciones de Google como de otros desarrolladores.
-  </li>
-
-  <li>Esta versión temprana no ha superado <strong>el conjunto de pruebas de compatibilidad (CTS)
-  </strong>. Las aplicaciones que dependen de compilaciones que hayan aprobado el CTS no funcionarán
-  (Android Pay, por ejemplo).
-  </li>
-
-  <li>Esta versión de Preview es compatible con los siguientes dispositivos: Nexus 5X, Nexus 6,
-  Nexus 6P, Nexus 9, Pixel C y General Mobile 4G
-  (Android One). Próximamente también será compatible con Nexus Player.
-  </li>
-
-
-  <li><a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> se ha
-  actualizado para manejar cambios de API entre DP1 y DP2.
-  </li>
-</ul>
-
-<h3 id="dp2-ki">Problemas conocidos</h3>
-
-<h4>Rendimiento y batería</h4>
-
-<ul>
-  <li>Se sabe que el rendimiento de las aplicaciones y el sistema es <strong>lento o
-      problemático</strong>, y existe la posibilidad de que, periódicamente, los dispositivos dejen de funcionar. Estos
-      problemas se pueden agravar con el uso prolongado.
-  </li>
-</ul>
-
-<h4>Cuentas de Google</h4>
-
-<ul>
-  <li>En ciertas circunstancias, pueden ocurrir problemas con
-  <code>AccountManagerService</code>, que impide iniciar sesión en cuentas de Google.
-  </li>
-</ul>
-
-<h4>Actualización del sistema</h4>
-
-<ul>
-  <li>El dispositivo se puede reiniciar al momento de actualizar a DP2.
-  </li>
-</ul>
-
-<h4>Accesibilidad</h4>
-
-<ul>
-  <li>Problemas al escuchar formato de salida de texto a voz (TTS) cuando la inclinación está
-  cerca del nivel máximo.
-  </li>
-</ul>
-
-<h4>Bluetooth</h4>
-
-<ul>
-  <li>Las características GATT del Bluetooth de bajo consumo (LE) utilizan el tipo
-  de escritura equivocado, y no se enviarán a un dispositivo remoto. Por esa razón, algunos dispositivos útiles
-  para la realización de ejercicios no funcionarán.
-  </li>
-</ul>
-
-<h4>Asistente de configuración</h4>
-
-<ul>
-  <li>La opción para recuperar datos en un dispositivo nuevo (o en un dispositivo que se ha restablecido hace poco tiempo) de
-  "Your Google Account" no se puede utilizar en el asistente de configuración. Debes restablecer
-  los datos de un dispositivo existente eligiendo "another Android device" en el
-  asistente de configuración o configurarlo como un dispositivo nuevo.
-  </li>
-</ul>
-
-<h4>OEM unlock</h4>
-
-<ul>
-  <li>En algunos dispositivos, <strong>Enable OEM unlock</strong> aparecerá inhabilitado en
-  "Developer Options" al ejecutar DP2.<br>
-  <strong>Método alternativo:</strong> Apúntate para
-  el Programa Android Beta (si aún no lo has hecho) en
-  <a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a>. Luego, date de baja y acepta el
-  paso a una versión anterior (OTA). Darse de baja hará que el dispositivo pase a la versión Android 6.0. Ahora deberías
-  poder elegir la opción <strong>Enable OEM unlock</strong> en
-  "Developer Options". Cuando
-  el dispositivo se desactualiza, todos los datos personales se pierden; sin embargo, si se hubiera desbloqueado el bootloader, también se habrían eliminado esos datos.
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>Comprobación de seguridad de trabajo
-    <ul>
-      <li>Luego de migrar a N, o después de que el usuario cree perfiles de trabajo, los perfiles
-      de trabajo no pueden crear claves en el depósito de claves hasta que el usuario cambie su
-      patrón, PIN o contraseña o configure una comprobación de trabajo.
-      </li>
-
-      <li>En modo de inicio directo, aplicar restricciones de contraseña al dispositivo
-      hará que el perfil de trabajo se desbloquee, incluso si el dispositivo está bloqueado.
-      Esto permite acceder al perfil de trabajo aunque debería estar protegido
-      por la pantalla de bloqueo del dispositivo.
-      </li>
-    </ul>
-  </li>
-
-  <li>Always On VPN
-    <ul>
-      <li>Si el modo Always On VPN está activado, pero la VPN no está disponible, las aplicaciones
-      se conectarán a la red normal. Las aplicaciones deberían quedar sin conexión si no hay
-      una conexión de VPN disponible.
-      </li>
-
-      <li>Cuando el modo Always On VPN está activado, las conexiones VPN no se establecen después
-      del reinicio de un dispositivo a modo de inicio directo, incluso luego de que el usuario desbloquee la
-      pantalla de bloqueo.
-      </li>
-    </ul>
-  </li>
-
-  <li>Paquetes suspendidos
-    <ul>
-      <li>Los administradores de dispositivos pueden suspender paquetes de sistema críticos, lo que puede provocar
-      un comportamiento inesperado, como la realización de llamadas a pesar de que se muestre el recuadro de diálogo "Telephone
-      disabled".
-      </li>
-    </ul>
-  </li>
-
-  <li>Otros
-    <ul>
-      <li>Cuando se inicia, la aplicación Configuración falla si {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} está configurado como verdadero cuando el usuario
-      conecta un medio físico como una tarjeta SD.
-      </li>
-
-      <li>El primer registro en un perfil de trabajo tarda varios minutos en
-      completarse.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4 id="vulkan">Vulkan</h4>
-
-<ul>
-   <li>Nexus 5X/6P</li>
-   <ul>
-      <li>Los espacios entre números vinculantes y números distintos a cero
-      como primer número vinculante hacen que {@code vkCreateGraphicsPipeline()} falle.</li>
-      <li>Vulkan exhibe un comportamiento de muestras incorrecto en coordinadas de textura proyectada.</li>
-      <li>En la muestra multithreadCmdBuffer, {@code vkCmdClearColorImage()} falla cuando
-      se ejecuta con el controlador N-DP2.</li>
-      <li>Los valores de devolución de {@code vkGetPhysicalDeviceFormatProperties()} no configuran un valor
-      para {@code VkFormatProperties::linearTilingFeatures} que, como resultado,
-      toma el valor de 0.</li>
-      <li>Los anexos del búfer de fotogramas de punto flotante de Vulkan no se manejan de forma correcta.</li>
-    </ul>
-   <li>Nexus Player</li>
-   <ul>
-      <li>Los sombreadores SPIR-V no disparan activos del controlador.</li>
-      <li>Algunas configuraciones del proceso pueden hacer que {@code vkCreateGraphicsPipeline()}
-      falle.</li>
-  </ul>
-</ul>
-
-<h4>Problemas específicos de dispositivo</h4>
-
-<dl>
-  <dt>
-    <strong>Android One</strong>
-  </dt>
-
-  <dd>
-    La conexión de datos falla cuando un dispositivo se cambia de la ranura SIM 1 a la 2.
-  </dd>
-
-  <dt>
-    <strong>Pixel C</strong>
-  </dt>
-
-  <dd>
-    No se puede activar o desactivar la opción "Always On" de búsqueda por voz.
-  </dd>
-
-  <dt>
-    <strong>Nexus 6</strong>
-  </dt>
-
-  <dd>
-    Las fotografías de la cámara en orientación vertical están dañadas, a excepción de las fotos
-    HDR+.
-  </dd>
-
-  <dt>
-    <strong>Nexus Player</strong>
-  </dt>
-
-  <dd>
-    En Nexus Player, la reproducción de contenido Netflix HD puede fallar.
-  </dd>
-
-  <dd>
-    En Nexus Player, cualquier aplicación que dependa de cambios de resolución de video dinámico
-    puede fallar.
-  </dd>
-
-  <dd>
-    En Nexus Player, cualquier aplicación que use el códec de video VP9 puede fallar.
-  </dd>
-</dl>
-
-<!-- DP 1 release notes archive -->
-
-<h2 id="dp1">Developer Preview 1</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Fecha: Marzo de 2016<br>
-        Compilaciones: NPC56P, NPC56R, actualizado: NPC56W, NPC56X<br>
-        Compatibilidad con emulador: x86 y ARM (32/64-bit)<br>
-        Servicios de Google Play: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp1-general">Recomendaciones generales</h3>
-
-<p>
-  Esta versión de la Developer Preview solo se recomienda a los desarrolladores de aplicaciones, y está diseñada para
-  usarla en pruebas de compatibilidad y durante etapas tempranas del desarrollo. Ten en cuenta
-  estas notas generales sobre la versión:
-</p>
-<ul>
-  <li>Esta versión presenta varios problemas de estabilidad y rendimiento en todos los dispositivos
-  que la convierten en una versión <em>no recomendable para el uso diario en tablets o teléfonos</em>,
- especialmente para quienes no sean desarrolladores.
-  </li>
-
-  <li>Se sabe que el rendimiento de las aplicaciones y el sistema es <strong>lento o
-      problemático</strong>, y existe la posibilidad de que, periódicamente, los dispositivos dejen de funcionar. Estos
-      problemas se pueden agravar con el uso prolongado.
-  </li>
-
-  <li>En esta versión, la vida de la batería se puede ver afectada cuando la pantalla se apaga y
-  se enciende.
-  </li>
-
-  <li>Algunas aplicaciones quizá no funcionen con normalidad en la Developer Preview 1. Entre estas se incluyen
-  tanto aplicaciones de Google como de otros desarrolladores.
-  </li>
-
-  <li>Esta versión temprana no ha superado el conjunto de pruebas de compatibilidad(CTS). Las aplicaciones
-  que dependen de compilaciones que hayan aprobado el CTS no funcionarán  (por  ejemplo, Android Pay).
-  </li>
-
-  <li>Esta versión de Preview es compatible con los siguientes dispositivos: Nexus 5X, Nexus 6,
-  Nexus 6P, Nexus 9, Nexus Player, Pixel C y General Mobile 4G
-  (Android One).
-  </li>
-</ul>
-
-<h3 id="dp1-platform">Problemas de plataforma</h3>
-
-<h4>Rendimiento y batería</h4>
-
-<ul>
-  <li>Se sabe que el rendimiento de las aplicaciones y el sistema es <strong>lento o
-      problemático</strong>, y existe la posibilidad de que, periódicamente, los dispositivos dejen de funcionar. Estos
-      problemas se pueden agravar con el uso prolongado.
-  </li>
-
-  <li>En esta versión, la vida de la batería se puede ver afectada cuando la pantalla se apaga y
-  se enciende.
-  </li>
-</ul>
-<h4 id="dialer">Teléfono</h4>
-
-<ul>
-  <li>La aplicación Teléfono no es compatible con el inicio directo. Este tema se abordará más adelante en
-  N Developer Preview.
-  </li>
-
-  <li>La reproducción del buzón de voz no funciona.
-  </li>
-</ul>
-
-<h4>Micrófono</h4>
-
-<ul>
-   <li>El estado silencioso del micrófono en el sistema puede persistir de manera incorrecta entre aplicaciones y luego de haberlo reiniciado. Si silencias el micrófono en una aplicación y el estado persiste, abre cualquiera aplicación que tenga controles de silencio para el micrófono y reactiva el micrófono.</li>
-</ul>
-
-<h4 id="ui">IU del sistema</h4>
-
-<ul>
-  <li>Algunas cadenas nuevas o modificadas de la IU del sistema no están traducidas a todos
-  los idiomas.
-  </li>
-
-  <li>La IU de información general aún está en desarrollo y sujeta a modificaciones. Por ejemplo,
-  tenemos pensado quitar el temporizado que aparece cuando el usuario alterna entre
-  aplicaciones.
-  </li>
-
-  <li>Los controles y los cambios de configuración pueden ser lentos o no funcionar correctamente.
-  </li>
-
-  <li>El diseño visual de las notificaciones está sujeto a cambios.
-  </li>
-
-  <li>En la aplicación Gmail, el archivo directo de correos electrónicos incluidos en un
-  paquete de notificación no funciona correctamente.
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>Comprobación de seguridad de trabajo
-    <ul>
-      <li>Luego de migrar a N, o después de que el usuario cree perfiles de trabajo, los perfiles
-      de trabajo no pueden crear claves en el depósito de claves hasta que el usuario cambie su
-      patrón, PIN o contraseña o configure una comprobación de trabajo.
-      </li>
-
-      <li>En modo de inicio directo, aplicar restricciones de contraseña al dispositivo
-      hará que el perfil de trabajo se desbloquee, incluso si el dispositivo está bloqueado.
-      Esto permite acceder al perfil de trabajo aunque debería estar protegido
-      por la pantalla de bloqueo del dispositivo.
-      </li>
-
-      <li>Cuando el usuario ingresa una contraseña o un PIN incorrecto, el sistema no
-      muestra ningún mensaje informativo; en vez de eso, solo borra el campo
-     de entrada. Este problema no afecta al ingreso de huellas digitales o patrones.
-      </li>
-
-      <li>En una tablet, el fondo que se muestra durante la comprobación de trabajo es
-      desproporcionalmente pequeño.
-      </li>
-
-      <li>La versión de <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">
-        Google Apps Device Policy</a> que está integrada en la N Developer Preview
-        aún no es compatible con la función comprobación de seguridad para perfiles de trabajo.
-        Los desarrolladores debería usar <a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a>
-        para probar esta función.
-      </li>
-    </ul>
-  </li>
-
-  <li>Always On VPN
-    <ul>
-      <li>Si el modo Always On VPN está activado, pero la VPN no está disponible, las aplicaciones
-      no especificadas como excepción en la política "Always On" se conectarán
-      a la red normal. A menos que se especifiquen como excepciones en la política Always On VPN,
-      las aplicaciones deberían quedar sin conexión si no hay una conexión de VPN disponible.
-        <ul>
-          <li>Cuando el modo Always On VPN está activado, las conexiones VPN no se establecen
-          después del reinicio de un dispositivo a modo de inicio directo, incluso luego de que el usuario
-          desbloquee la pantalla de bloqueo.
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>Contactos mejorados
-    <ul>
-      <li>Los dispositivos Bluetooth PBAP/MAP no muestran el identificador de llamada para los contactos
-      de trabajo. La versión siguiente de Preview resuelve este problema.
-      </li>
-    </ul>
-  </li>
-
-  <li>Modo de trabajo
-    <ul>
-      <li>El Google Now Launcher no muestra si el modo de trabajo está activado o
-      desactivado. El launcher tampoco muestra el estado de suspensión de las aplicaciones.
-      </li>
-
-      <li>Después de que los usuarios activan o desactivan el modo de trabajo, el sistema ya no muestra
-      los widgets de aplicación del perfil de trabajo como el Calendario.
-      </li>
-    </ul>
-  </li>
-
-  <li>Paquetes suspendidos
-  </li>
-
-  <li>Los administradores de dispositivos pueden suspender paquetes de sistema críticos, lo que puede provocar
-  un comportamiento inesperado, como la realización de llamadas a pesar de que se muestre el recuadro de diálogo
-  "Telephone disabled".
-  </li>
-
-  <li>Otros
-    <ul>
-      <li>Cuando se inicia, la aplicación Configuración falla si {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} está configurado como verdadero cuando el usuario
-      conecta un medio físico como una tarjeta SD.
-      </li>
-
-      <li>El estado {@code DPM.setPackagesSuspended} no persiste cuando el
-      usuario desinstala y luego reinstala la aplicación. La aplicación debería permanecer
-      suspendida luego de desinstalarla/reinstalarla, o las aplicaciones suspendidas no deberían poder
-      desinstalarse.
-      </li>
-
-      <li>El primer registro en un perfil de trabajo tarda varios minutos en
-      completarse. Esto puede hacer que el dispositivo tarde más de lo normal en volverse
-      visible en la API Play EMM.
-      </li>
-
-      <li>Las notificaciones de las aplicaciones de perfiles de trabajo no son visibles para los oyentes de las notificaciones
-      instalados en el perfil personal. Como resultado, el sistema no
-      muestra las notificaciones como se esperaría.
-      </li>
-
-    </ul>
-  </li>
-</ul>
-
-<h4 >Teclado</h4>
-
-<ul>
-  <li>La sincronización por Bluetooth entre teclados y dispositivos Android puede comportarse de manera inestable.
-  </li>
-</ul>
-
-<h4 >Video</h4>
-
-<ul>
-<li>La reproducción de video puede interrumpirse y demorarse.</li>
-</ul>
-
-<h4>Wi-Fi</h4>
-
-<ul>
-  <li>La conexión Wi-Fi ha sufrido algunos cambios, que podrían modificar el comportamiento
-  del caso límite de la API. Específicamente, se deberían volver a probar las aplicaciones que intentan conectarse a redes
-  específicas o intentan reconectarse a redes.
-  </li>
-
-  <li>El cliente DHCP heredado se ha quitado de la plataforma. El único cliente DHCP
-  que es compatible con la plataforma es el cliente DHCP presentado en M.
-  </li>
-</ul>
-
-<h4>Inicio directo</h4>
-
-<ul>
-  <li>NFC no funciona hasta el primer desbloqueo.
-    <ul>
-      <li>Cuando se reinicia un teléfono con Bluetooth habilitado, el Bluetooth no
-   se activa de forma automática. Tendrás que rehabilitar el Bluetooth de forma manual.
-      </li>
-
-      <li>En ciertas circunstancias, el tono predeterminado no se oye cuando
-      se reciben llamadas o mensajes. Este comportamiento está corregido en la próxima versión de la N Preview
-      , con una excepción (y solución alternativa):
-      </li>
-
-      <li>En un dispositivo cuyos datos no se hayan eliminado hace poco uno que se haya iniciado
-      al menos una vez desde la activación del modo inicio directo, el tono de
-   notificación predeterminado no se oye. El usuario puede solucionar este problema eligiendo de forma manual
-      un tono del menú Configuración.
-      </li>
-
-      <li>El inicio directo no está habilitado de forma predeterminada en dispositivos que usen la versión N
-      Developer Preview. Para habilitar el inicio directo para pruebas y
-      desarrollo, ve a Developer Options y toca Convert to File Encryption.
-      En esta Developer Preview, esta opción requiere de un restablecimiento de la configuración predeterminada de fábrica para reparticionar y
-      reformatear tu dispositivo para encriptación a base de archivos.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Picture-in-picture para Android TV</h4>
-
-<ul>
-  <li>La integración PIP en la IU de Recientes no está finalizada y está sujeta a
-  cambios.
-    <ul>
-      <li>La animación de la ventana de PIP no está terminada. Este aspecto se mejorará en las
-      versiones futuras de la Preview.
-      </li>
-    </ul>
-  </li>
-
-  <li style="list-style: none">El diseño visual y la alineación del diseño de PIP se mejorarán
-  en las      versiones futuras de la Preview.
-  </li>
-</ul>
-
-<h4>Informes de errores</h4>
-
-<ul>
-  <li>Los informes de errores no siempre se completan con éxito (como solución alternativa,
-  a menudo se puede acceder a ellos a través del documento de informe de error provisto
-  en el almacenamiento interno).
-  </li>
-</ul>
-
-<h4>Ventanas múltiples con pantalla dividida</h4>
-
-<ul>
-  <li>Las aplicaciones pueden fallar, o el comportamiento de su IU puede no ser el adecuado, cuando se utiliza el modo de
-  pantalla dividida. Estos son problemas de la aplicación que el desarrollador
-  de la aplicación debe solucionar.
-  </li>
-
-  <li>Cuando una aplicación hace objetivo a una versión de la plataforma Android anterior a N, la
- aplicación quizá no funcione, y las alertas de pantalla dividida pueden aparecer en múltiples oportunidades.
-  </li>
-
-  <li>Presionar durante bastante tiempo el botón Recientes cuando se usa una aplicación con orientación fija
-  puede hacer que la aplicación se comporte de manera inesperada.
-  </li>
-
-  <li>Las aplicaciones pueden parpadear cuando se les cambia el tamaño.
-  </li>
-
-  <li>Las animaciones no están terminadas.
-  </li>
-</ul>
-
-<h4>Método de entrada.</h4>
-
-<ul>
-  <li>El teclado de Google vuelve a su versión genérica de manera inesperada
-  cuando se habilita<b> Use system language</b>, pero no es compatible con ninguno de los
-  idiomas seleccionados en las preferencias del idioma del sistema. Debería volver
-  al idioma inglés estadounidense.
-    <p>
-      Puedes sortear este problema agregado, al menos, un idioma que sea compatible con el
-      teclado de Google.
-    </p>
-  </li>
-</ul>
-
-<h4>Accesibilidad</h4>
-
-<ul>
-  <li>TalkBack tiene problemas con características como Notificaciones, mosaicos de Quick
-  Settings e imágenes en modo ventanas múltiples que pueden hacer que el sistema falle o
-  que haya pocos comentarios por voz de parte de TalkBack. Estos problemas se abordarán en las
-  versiones futuras de la Preview.
-  </li>
-</ul>
-
-<h3 id="dp1-device-sp">Problemas y notas específicas del dispositivo</h3>
-
-<h4>Nexus Player</h4>
-<ul>
-  <li>En esta versión de la Preview, está previsto que ocurran errores de estabilidad y compatibilidad con aplicaciones y de reproducción de video en
-  Nexus Player.
-  </li>
-</ul>
-
-<h4>Pixel C</h4>
-<ul>
-<li>El cambio de tamaño en el modo de ventanas múltiples puede provocar fallos.</li>
-</ul>
-
-<h4>Nexus 9</h4>
-<ul>
-<li>Los dispositivos Nexus 9 pueden no iniciar luego de recibir una actualización inalámbrica
-  mediante el Programa Android Beta. Para solventar este problema, puedes intentar
-  instalar la imagen inalámbrica de forma manual. Para obtener más información, consulta
-  <a href="{@docRoot}preview/download-ota.html">Aplicación de imágenes inalámbricas de dispositivo</a>.
-</li>
-</ul>
-
diff --git a/docs/html-intl/intl/es/preview/features/direct-boot.jd b/docs/html-intl/intl/es/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/es/preview/features/direct-boot.jd
rename to docs/html-intl/intl/es/training/articles/direct-boot.jd
index e1d99e9..0ce3f5b 100644
--- a/docs/html-intl/intl/es/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/es/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>En este documento</h2>
   <ol>
     <li><a href="#run">Solicitar acceso para ejecutar durante el inicio directo</a></li>
diff --git a/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/es/training/articles/scoped-directory-access.jd
similarity index 92%
rename from docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/es/training/articles/scoped-directory-access.jd
index e423e6a..194bfd7 100644
--- a/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/es/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>En este documento</h2>
   <ol>
     <li><a href="#accessing">Acceder a un directorio de almacenamiento externo</a></li>
@@ -71,8 +71,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>Imagen 1.</strong> Una aplicación solicitando
 acceso al directorio Pictures.</p>
 
@@ -138,8 +138,8 @@
 de usuario. Si el usuario deniega una solicitud y la aplicación solicita acceso
  nuevamente, aparece la casilla de verificación <b>Don't ask again</b> en la IU:</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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-dont-ask_2x.png 2x" />
 <p class="img-caption"><strong>Figura 1.</strong> Una aplicación que presenta una
 segunda solicitud para obtener acceso a medios extraíbles.</p>
 
diff --git a/docs/html-intl/intl/es/preview/features/security-config.jd b/docs/html-intl/intl/es/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/es/preview/features/security-config.jd
rename to docs/html-intl/intl/es/training/articles/security-config.jd
index 8c3db64..7deadbe 100644
--- a/docs/html-intl/intl/es/preview/features/security-config.jd
+++ b/docs/html-intl/intl/es/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>En este documento</h2>
 <ol>
diff --git a/docs/html-intl/intl/es/preview/features/data-saver.jd b/docs/html-intl/intl/es/training/basics/network-ops/data-saver.jd
similarity index 99%
rename from docs/html-intl/intl/es/preview/features/data-saver.jd
rename to docs/html-intl/intl/es/training/basics/network-ops/data-saver.jd
index 458e662..d1d6c34 100644
--- a/docs/html-intl/intl/es/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/es/training/basics/network-ops/data-saver.jd
@@ -4,8 +4,8 @@
 page.image=images/cards/card-nyc_2x.jpg
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>
       En este documento
     </h2>
@@ -231,4 +231,4 @@
     Se quita el UID del paquete específico de la lista blanca para bloquear el uso de datos
  medidos en segundo plano mientras el ahorro de datos está habilitado.
   </dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html-intl/intl/es/preview/features/picture-in-picture.jd b/docs/html-intl/intl/es/training/tv/playback/picture-in-picture.jd
similarity index 98%
rename from docs/html-intl/intl/es/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/es/training/tv/playback/picture-in-picture.jd
index 36c0c57..30c9e8b 100644
--- a/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/es/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>En este documento</h2>
 <ol>
@@ -59,7 +59,7 @@
 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" />
+<img src="{@docRoot}images/android-7.0/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>
@@ -116,7 +116,7 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>Imagen 1.</strong> Un botón
 PIP en una barra de control de medios.</p>
 
diff --git a/docs/html-intl/intl/es/preview/features/tv-recording-api.jd b/docs/html-intl/intl/es/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/es/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/es/training/tv/tif/content-recording.jd
index 855db8d..9e8a346 100644
--- a/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/es/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>En este documento</h2>
   <ol>
     <li><a href="#supporting">Indicar la compatibilidad para la grabación</a></li>
diff --git a/docs/html-intl/intl/in/preview/guide.jd b/docs/html-intl/intl/in/about/versions/marshmallow/android-6.0-testing.jd
similarity index 98%
rename from docs/html-intl/intl/in/preview/guide.jd
rename to docs/html-intl/intl/in/about/versions/marshmallow/android-6.0-testing.jd
index a229beb..94bc74c 100644
--- a/docs/html-intl/intl/in/preview/guide.jd
+++ b/docs/html-intl/intl/in/about/versions/marshmallow/android-6.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Dalam dokumen ini</h2>
       <ol>
         <li><a href="#runtime-permissions">Izin Pengujian</a></li>
diff --git a/docs/html-intl/intl/in/preview/behavior-changes.jd b/docs/html-intl/intl/in/about/versions/nougat/android-7.0-changes.jd
similarity index 97%
rename from docs/html-intl/intl/in/preview/behavior-changes.jd
rename to docs/html-intl/intl/in/about/versions/nougat/android-7.0-changes.jd
index 521312e..af01cd2 100644
--- a/docs/html-intl/intl/in/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/in/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Dalam dokumen ini</h2>
 
@@ -77,7 +77,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>Gambar 1.</strong> Ilustrasi tentang cara Istirahatkan menerapkan pembatasan
   aktivitas sistem level pertama untuk meningkatkan daya tahan baterai.
@@ -96,7 +96,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" />
 <p class="img-caption">
   <strong>Gambar 2.</strong> Ilustrasi tentang cara Istirahatkan menerapkan pembatasan
   aktivitas sistem level kedua setelah perangkat diam selama jangka waktu tertentu.
@@ -282,10 +282,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/in/preview/samples.jd b/docs/html-intl/intl/in/about/versions/nougat/android-7.0-samples.jd
similarity index 76%
rename from docs/html-intl/intl/in/preview/samples.jd
rename to docs/html-intl/intl/in/about/versions/nougat/android-7.0-samples.jd
index 481260c..d31c0c0 100644
--- a/docs/html-intl/intl/in/preview/samples.jd
+++ b/docs/html-intl/intl/in/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <h3 id="mw">Playground Multi-Jendela</h3>
-<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<img src="{@docRoot}images/android-7.0/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
 <p>
   Contoh ini memperagakan cara memanfaatkan antarmuka pengguna
   multi-jendela bersama aplikasi Anda.
@@ -28,7 +28,7 @@
 
 <div style="clear: both;"></div>
 <h3 id="an">Pemberitahuan Aktif</h3>
-<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<img src="{@docRoot}images/android-7.0/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   Ini adalah contoh yang sudah ada sebelumnya, menampilkan layanan sederhana yang mengirimkan
    pemberitahuan menggunakan NotificationCompat. Setiap percakapan yang belum dibaca dari pengguna
@@ -45,7 +45,7 @@
 
 <div style="clear: both;"></div>
 <h3 id="ms">Layanan Perpesanan</h3>
-<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<img src="{@docRoot}images/android-7.0/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
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
   Dapatkan di GitHub</a>
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/in/preview/guide.jd b/docs/html-intl/intl/in/about/versions/nougat/android-7.0-testing.jd
similarity index 98%
copy from docs/html-intl/intl/in/preview/guide.jd
copy to docs/html-intl/intl/in/about/versions/nougat/android-7.0-testing.jd
index a229beb..94bc74c 100644
--- a/docs/html-intl/intl/in/preview/guide.jd
+++ b/docs/html-intl/intl/in/about/versions/nougat/android-7.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Dalam dokumen ini</h2>
       <ol>
         <li><a href="#runtime-permissions">Izin Pengujian</a></li>
diff --git a/docs/html-intl/intl/in/preview/api-overview.jd b/docs/html-intl/intl/in/about/versions/nougat/android-7.0.jd
similarity index 97%
rename from docs/html-intl/intl/in/preview/api-overview.jd
rename to docs/html-intl/intl/in/about/versions/nougat/android-7.0.jd
index b652dd9..ff8af12 100644
--- a/docs/html-intl/intl/in/preview/api-overview.jd
+++ b/docs/html-intl/intl/in/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Fitur-fitur Utama bagi Pengembang</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -78,7 +78,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
 <p class="img-caption">
   <strong>Gambar 1.</strong> Aplikasi yang berjalan dalam mode layar terbagi.
 </p>
@@ -142,15 +142,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -277,7 +277,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>Gambar 4.</strong> Data Saver di Settings.
@@ -357,7 +357,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
 
 <p class="img-caption" style="padding-left:2em;">
   <strong>Gambar 5.</strong> Quick Settings Tile dalam bayangan pemberitahuan.
diff --git a/docs/html-intl/intl/in/preview/index.jd b/docs/html-intl/intl/in/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/in/preview/index.jd
rename to docs/html-intl/intl/in/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/in/preview/j8-jack.jd b/docs/html-intl/intl/in/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/in/preview/j8-jack.jd
rename to docs/html-intl/intl/in/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/in/preview/features/multi-window.jd b/docs/html-intl/intl/in/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/in/preview/features/multi-window.jd
rename to docs/html-intl/intl/in/guide/topics/ui/multi-window.jd
index 3f75def..5e7b3d9 100644
--- a/docs/html-intl/intl/in/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Dalam dokumen ini</h2>
       <ol>
         <li><a href="#overview">Ringkasan</a></li>
@@ -69,8 +69,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/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>
diff --git a/docs/html-intl/intl/in/preview/_book.yaml b/docs/html-intl/intl/in/preview/_book.yaml
deleted file mode 100644
index 88d6c71..0000000
--- a/docs/html-intl/intl/in/preview/_book.yaml
+++ /dev/null
@@ -1,342 +0,0 @@
-toc:
-- title: Ringkasan Program
-  path: /preview/overview.html
-  path_attributes:
-  - name: es-lang
-    value: Información general del programa
-  - name: in-lang
-    value: Ringkasan 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: Dukungan dan Catatan Rilis
-  path: /preview/support.html
-
-- title: Menyiapkan Pratinjau
-  path: /preview/setup-sdk.html
-  path_attributes:
-  - name: es-lang
-    value: Configurar el SDK de la versión preliminar
-  - name: in-lang
-    value: Menyiapkan Pratinjau
-  - 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: Menguji pada Perangkat
-  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: Perubahan Perilaku
-  path: /preview/behavior-changes.html
-  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: Optimalisasi Latar Belakang
-    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: Bahasa dan Lokal
-    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
-  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: Dukungan Multi-Jendela
-    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: Pemberitahuan
-    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: Perekaman TV
-    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: Konfigurasi Keamanan Jaringan
-    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: Dukungan ICU4J
-    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: Fitur Bahasa Java 8
-    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: Pembaruan Android for Work
-    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: Contoh
-  path: /preview/samples.html
-  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: Perjanjian Lisensi
-  path: /preview/license.html
-  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-intl/intl/in/preview/download-ota.jd b/docs/html-intl/intl/in/preview/download-ota.jd
deleted file mode 100644
index 4adf9bb..0000000
--- a/docs/html-intl/intl/in/preview/download-ota.jd
+++ /dev/null
@@ -1,332 +0,0 @@
-page.title=Menerapkan Citra OTA Perangkat
-
-@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 memasang
-      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 "Pratinjau" dan secara spesifik termasuk file sistem Android, paket API, dan file pustaka Pratinjau, jika disediakan) diberikan lisensinya kepada Anda sesuai dengan ketentuan Perjanjian Lisensi. Perjanjian Lisensi ini merupakan kontrak yang mengikat secara hukum antara Anda dan Google dalam kaitannya dengan penggunaan Pratinjau oleh Anda.
-
-1.2 "Android" berarti tumpukan perangkat lunak Android untuk perangkat, seperti yang tersedia di Android Open Source Project, yang ada di URL berikut: http://source.android.com/, yang selalu diperbarui.
-
-1.3 “Kompatibel dengan Android” 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 Pratinjau, Anda terlebih dahulu harus menyetujui Perjanjian Lisensi ini. Anda tidak boleh menggunakan Pratinjau jika tidak menerima Perjanjian Lisensi.
-
-2.2 Dengan mengklik untuk menerima dan/atau menggunakan Pratinjau, berarti Anda menyetujui ketentuan Perjanjian Lisensi.
-
-2.3 Anda tidak boleh menggunakan Pratinjau dan tidak boleh menerima Perjanjian Lisensi jika Anda adalah orang yang dilarang menerima Pratinjau berdasarkan hukum Amerika Serikat atau negara lainnya termasuk negara di mana Anda tinggal atau dari mana Anda menggunakan Pratinjau.
-
-2.4 Jika Anda akan menggunakan Pratinjau 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 Pratinjau atas nama perusahaan Anda atau entitas lainnya.
-
-3. Lisensi Pratinjau dari Google
-
-3.1 Sesuai dengan ketentuan Perjanjian Lisensi ini, Google memberi Anda lisensi yang tidak bisa disublisensikan, non-eksklusif, tidak bisa dialihkan, bebas royalti, bersifat global dan terbatas dalam menggunakan Pratinjau hanya untuk keperluan pengembangan aplikasi yang kompatibel untuk diimplementasikan pada Android.
-
-3.2 Anda tidak boleh menggunakan Pratinjau ini untuk mengembangkan aplikasi platform lain (termasuk implementasi yang tidak kompatibel pada Android) atau untuk mengembangkan SDK lain. Anda tentu saja bebas mengembangkan aplikasi untuk platform lain, termasuk implementasi yang tidak kompatibel pada Android, karena Pratinjau ini tidak digunakan untuk tujuan tersebut.
-
-3.3 Anda setuju bahwa Google atau pihak ketiga memiliki semua hak, kuasa dan kepentingan hukum dalam dan pada Pratinjau, termasuk Hak Kekayaan Intelektual yang terdapat dalam Pratinjau. "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 Pratinjau untuk tujuan apa pun yang tidak secara tersurat diizinkan dalam Perjanjian Lisensi ini. 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 Pratinjau atau bagian apa pun dari Pratinjau; atau (b) memuat bagian apa pun dari Pratinjau ke sebuah handset ponsel atau perangkat keras selain komputer pribadi, menggabungkan suatu bagian dari Pratinjau dengan perangkat lunak lain, atau mendistribusikan perangkat lunak atau perangkat yang menggabungkan suatu bagian dari Pratinjau.
-
-3.5 Penggunaan, reproduksi dan distribusi komponen Pratinjau 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 Pratinjau yang disediakan oleh Google dapat berubah tanpa pemberitahuan sebelumnya kepada Anda dan bahwa versi Pratinjau mendatang mungkin tidak kompatibel dengan aplikasi yang dikembangkan di versi Pratinjau sebelumnya. Anda setuju bahwa Google boleh menghentikan (secara permanen atau sementara) penyediaan Pratinjau (atau fitur apa pun dalam Pratinjau) 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 membuang, mengaburkan, atau mengubah pernyataan hak kepemilikan apa pun (termasuk pemberitahuan hak cipta dan merek dagang) yang terlampir atau termuat dalam Pratinjau.
-
-4. Penggunaan Pratinjau oleh Anda
-
-4.1 Google setuju bahwa Perjanjian Lisensi ini tidak memberi Google hak, kuasa, dan kepentingan hukum dari Anda (atau pemberi lisensi Anda) dalam atau pada aplikasi perangkat lunak apa pun yang Anda kembangkan menggunakan Pratinjau ini, termasuk kekayaan intelektual yang ada dalam aplikasi tersebut.
-
-4.2 Anda setuju untuk menggunakan Pratinjau dan menulis aplikasi hanya untuk tujuan yang diizinkan oleh (a) Perjanjian Lisensi, dan (b) hukum yang berlaku, peraturan atau praktik yang diterima secara umum atau panduan dalam yurisdiksi terkait (termasuk hukum mengenai ekspor data atau perangkat lunak ke dan dari Amerika Serikat atau negara lain yang terkait).
-
-4.3 Anda setuju jika Anda menggunakan Pratinjau untuk mengembangkan aplikasi, Anda akan melindungi hak privasi dan hak hukum pengguna. Jika pengguna memberikan nama pengguna, sandi, atau informasi login atau informasi pribadinya, Anda harus membuat pengguna tersebut menyadari bahwa informasi yang diberikannya 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 saat, dan untuk tujuan terbatas di mana, pengguna tersebut telah memberikan izin kepada Anda untuk melakukannya.
-
-4.4 Anda setuju bahwa Anda tidak akan terlibat dalam aktivitas apa pun dengan Pratinjau, termasuk pengembangan atau distribusi aplikasi yang mengganggu, mengacaukan, merusak, atau mengakses secara tidak sah server, jaringan atau properti layanan Google atau pihak ketiga lainnya.
-
-4.5 Anda setuju bertanggung jawab penuh untuk (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) data, materi, 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).
-
-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 lainnya) akibat pelanggaran tersebut.
-
-4.7 Pratinjau ini dalam tahap pengembangan, dan pengujian serta masukan Anda merupakan bagian penting dalam proses pengembangan. Dengan menggunakan Pratinjau, Anda mengakui bahwa implementasi beberapa fitur masih dalam tahap pengembangan dan bahwa Anda tidak seharusnya mengandalkan Pratinjau berfungsi sepenuhnya sebagaimana pada rilis stabil. Anda setuju untuk tidak mendistribusikan atau mengirimkan untuk umum penggunaan aplikasi menggunakan Pratinjau karena Pratinjau ini tidak akan lagi didukung setelah Android SDK dirilis secara resmi.
-
-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 Pratinjau, 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 Pratinjau dan cara penggunaannya. Sebelum informasi ini dikumpulkan, Pratinjau 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 Pratinjau 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 Pratinjau untuk menjalankan aplikasi yang dikembangkan oleh pihak ketiga atau yang mengakses data, materi atau sumber daya yang disediakan oleh pihak ketiga, Anda setuju bahwa Google tidak bertanggung jawab terhadap aplikasi, data, materi atau sumber daya tersebut. Anda memahami bahwa semua data, materi 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, materi, atau sumber daya pihak ketiga tersebut.
-
-7.2 Anda harus menyadari bahwa data, materi 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, materi, 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, materi, atau sumber daya pihak ketiga semacam itu tunduk pada ketentuan terpisah antara Anda dan pihak ketiga yang bersangkutan.
-
-8. Menggunakan Google API
-
-8.1 Google API
-
-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 Pratinjau 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 Pratinjau atau bagian Pratinjau 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 Pratinjau, 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 PRATINJAU OLEH ANDA MERUPAKAN RISIKO ANDA SENDIRI DAN BAHWA PRATINJAU INI DISEDIAKAN "APA ADANYA" DAN "SEBAGAIMANA TERSEDIA" TANPA JAMINAN DALAM BENTUK APA PUN DARI GOOGLE.
-
-10.2 PENGGUNAAN PRATINJAU DAN MATERI APA PUN YANG DIUNDUH ATAU DIPEROLEH MELALUI PENGGUNAAN PRATINJAU 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 PENGGUNAAN TERSEBUT. TANPA MEMBATASI HAL TERSEBUT, ANDA MEMAHAMI BAHWA PRATINJAU 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 Pratinjau oleh Anda, (b) aplikasi apa pun yang Anda kembangkan dari Pratinjau 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 pada Perjanjian Lisensi
-
-13.1 Google boleh membuat perubahan pada Perjanjian Lisensi saat mendistribusikan versi baru Pratinjau. Saat perubahan tersebut dibuat, Google akan menyediakan versi baru Perjanjian Lisensi di situs web penyediaan Pratinjau.
-
-14. Ketentuan Hukum Umum
-
-14.1 Perjanjian Lisensi ini merupakan perjanjian hukum antara Anda dan Google dan mengatur penggunaan Pratinjau 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 Pratinjau.
-
-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 valid, 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. PRATINJAU TUNDUK PADA HUKUM DAN PERATURAN EKSPOR AMERIKA SERIKAT. ANDA HARUS MEMATUHI SEMUA HUKUM DAN PERATURAN NASIONAL DAN INTERNASIONAL YANG BERLAKU PADA PRATINJAU. 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 pihak lain.
-
-14.7 Perjanjian Lisensi ini, dan hubungan Anda dengan Google berdasarkan Perjanjian Lisensi ini, akan 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">
-
-<p>
-  Halaman ini menyediakan tautan ke citra perangkat lewat jaringan seluler (OTA) dan menjelaskan
-  cara menerapkan pembaruan OTA secara manual ke suatu perangkat. Prosedur ini berguna
-  untuk memulihkan perangkat yang menerima pembaruan OTA melalui Android Beta
-  Program dan tidak jalan setelah pembaruan dipasang.
-</p>
-
-<h2 id="install-ota">Memasang Citra OTA</h2>
-
-<p></p>
-
-<p>Untuk pasang OTA pada perangkat:</p>
-
-<ol>
-  <li>Unduh citra perangkat OTA dari tabel di bawah.</li>
-  <li>Boot ulang perangkat ke dalam mode Recovery. Untuk informasi selengkapnya mengenai cara masuk ke mode ini
-    di perangkat Nexus, lihat
-    <a href="https://support.google.com/nexus/answer/4596836">Setel ulang perangkat Nexus
-      Anda ke setelan pabrik</a>.
-  </li>
-  <li>Pada perangkat, pilih <strong>ADB sideload</strong>.</li>
-  <li>Hubungkan perangkat ke komputer dengan lingkungan pengembangan Android
-     yang telah dimuat dan alat Android Debug Bridge (adb) yang telah dipasang.</li>
-  <li>Jalankan perintah berikut:
-    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
-  </li>
-</ol>
-
-
-
-<h2 id="ota-images">Citra OTA Perangkat</h2>
-
-<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-ota-npd90g-0a874807.zip</a><br>
-      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
-      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd90g-06f5d23d.zip</a><br>
-      MD5: 513570bb3a91878c2d1a5807d2340420<br>
-      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd90g-5baa69c2.zip</a><br>
-      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
-      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd90g-c04785e1.zip</a><br>
-      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
-      SHA-1: 31633180635b831e59271a7d904439f278586f49
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
-      MD5: 0493fa79763d67bcdde8007299e1888d<br>
-      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd90g-3a0643ae.zip</a><br>
-      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
-      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd90g-ec931914.zip</a><br>
-      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
-      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
-      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
-      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
-    </td>
-  </tr>
-
-</table>
-
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verifikasi apakah TOS disetujui */
-    if ($("input#agree").is(":checked")) {
-      /* tampilkan tombol unduh */
-      $("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/download.jd b/docs/html-intl/intl/in/preview/download.jd
deleted file mode 100644
index e6714bb..0000000
--- a/docs/html-intl/intl/in/preview/download.jd
+++ /dev/null
@@ -1,544 +0,0 @@
-page.title=Menguji pada Perangkat
-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">Sebelum mengunduh dan memasang
-      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 "Pratinjau" dan secara spesifik termasuk file sistem Android, paket API, dan file pustaka Pratinjau, jika disediakan) diberikan lisensinya kepada Anda sesuai dengan ketentuan Perjanjian Lisensi. Perjanjian Lisensi ini merupakan kontrak yang mengikat secara hukum antara Anda dan Google dalam kaitannya dengan penggunaan Pratinjau oleh Anda.
-
-1.2 "Android" berarti tumpukan perangkat lunak Android untuk perangkat, seperti yang tersedia di Android Open Source Project, yang ada di URL berikut: http://source.android.com/, yang selalu diperbarui.
-
-1.3 “Kompatibel dengan Android” 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 Pratinjau, Anda terlebih dahulu harus menyetujui Perjanjian Lisensi ini. Anda tidak boleh menggunakan Pratinjau jika tidak menerima Perjanjian Lisensi.
-
-2.2 Dengan mengklik untuk menerima dan/atau menggunakan Pratinjau, berarti Anda menyetujui ketentuan Perjanjian Lisensi.
-
-2.3 Anda tidak boleh menggunakan Pratinjau dan tidak boleh menerima Perjanjian Lisensi jika Anda adalah orang yang dilarang menerima Pratinjau berdasarkan hukum Amerika Serikat atau negara lainnya termasuk negara di mana Anda tinggal atau dari mana Anda menggunakan Pratinjau.
-
-2.4 Jika Anda akan menggunakan Pratinjau 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 Pratinjau atas nama perusahaan Anda atau entitas lainnya.
-
-3. Lisensi Pratinjau dari Google
-
-3.1 Sesuai dengan ketentuan Perjanjian Lisensi ini, Google memberi Anda lisensi yang tidak bisa disublisensikan, non-eksklusif, tidak bisa dialihkan, bebas royalti, bersifat global dan terbatas dalam menggunakan Pratinjau hanya untuk keperluan pengembangan aplikasi yang kompatibel untuk diimplementasikan pada Android.
-
-3.2 Anda tidak boleh menggunakan Pratinjau ini untuk mengembangkan aplikasi platform lain (termasuk implementasi yang tidak kompatibel pada Android) atau untuk mengembangkan SDK lain. Anda tentu saja bebas mengembangkan aplikasi untuk platform lain, termasuk implementasi yang tidak kompatibel pada Android, karena Pratinjau ini tidak digunakan untuk tujuan tersebut.
-
-3.3 Anda setuju bahwa Google atau pihak ketiga memiliki semua hak, kuasa dan kepentingan hukum dalam dan pada Pratinjau, termasuk Hak Kekayaan Intelektual yang terdapat dalam Pratinjau. "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 Pratinjau untuk tujuan apa pun yang tidak secara tersurat diizinkan dalam Perjanjian Lisensi ini. 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 Pratinjau atau bagian apa pun dari Pratinjau; atau (b) memuat bagian apa pun dari Pratinjau ke sebuah handset ponsel atau perangkat keras selain komputer pribadi, menggabungkan suatu bagian dari Pratinjau dengan perangkat lunak lain, atau mendistribusikan perangkat lunak atau perangkat yang menggabungkan suatu bagian dari Pratinjau.
-
-3.5 Penggunaan, reproduksi dan distribusi komponen Pratinjau 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 Pratinjau yang disediakan oleh Google dapat berubah tanpa pemberitahuan sebelumnya kepada Anda dan bahwa versi Pratinjau mendatang mungkin tidak kompatibel dengan aplikasi yang dikembangkan di versi Pratinjau sebelumnya. Anda setuju bahwa Google boleh menghentikan (secara permanen atau sementara) penyediaan Pratinjau (atau fitur apa pun dalam Pratinjau) 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 membuang, mengaburkan, atau mengubah pernyataan hak kepemilikan apa pun (termasuk pemberitahuan hak cipta dan merek dagang) yang terlampir atau termuat dalam Pratinjau.
-
-4. Penggunaan Pratinjau oleh Anda
-
-4.1 Google setuju bahwa Perjanjian Lisensi ini tidak memberi Google hak, kuasa, dan kepentingan hukum dari Anda (atau pemberi lisensi Anda) dalam atau pada aplikasi perangkat lunak apa pun yang Anda kembangkan menggunakan Pratinjau ini, termasuk kekayaan intelektual yang ada dalam aplikasi tersebut.
-
-4.2 Anda setuju untuk menggunakan Pratinjau dan menulis aplikasi hanya untuk tujuan yang diizinkan oleh (a) Perjanjian Lisensi, dan (b) hukum yang berlaku, peraturan atau praktik yang diterima secara umum atau panduan dalam yurisdiksi terkait (termasuk hukum mengenai ekspor data atau perangkat lunak ke dan dari Amerika Serikat atau negara lain yang terkait).
-
-4.3 Anda setuju jika Anda menggunakan Pratinjau untuk mengembangkan aplikasi, Anda akan melindungi hak privasi dan hak hukum pengguna. Jika pengguna memberikan nama pengguna, sandi, atau informasi login atau informasi pribadinya, Anda harus membuat pengguna tersebut menyadari bahwa informasi yang diberikannya 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 saat, dan untuk tujuan terbatas di mana, pengguna tersebut telah memberikan izin kepada Anda untuk melakukannya.
-
-4.4 Anda setuju bahwa Anda tidak akan terlibat dalam aktivitas apa pun dengan Pratinjau, termasuk pengembangan atau distribusi aplikasi yang mengganggu, mengacaukan, merusak, atau mengakses secara tidak sah server, jaringan atau properti layanan Google atau pihak ketiga lainnya.
-
-4.5 Anda setuju bertanggung jawab penuh untuk (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) data, materi, 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).
-
-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 lainnya) akibat pelanggaran tersebut.
-
-4.7 Pratinjau ini dalam tahap pengembangan, dan pengujian serta masukan Anda merupakan bagian penting dalam proses pengembangan. Dengan menggunakan Pratinjau, Anda mengakui bahwa implementasi beberapa fitur masih dalam tahap pengembangan dan bahwa Anda tidak seharusnya mengandalkan Pratinjau berfungsi sepenuhnya sebagaimana pada rilis stabil. Anda setuju untuk tidak mendistribusikan atau mengirimkan untuk umum penggunaan aplikasi menggunakan Pratinjau karena Pratinjau ini tidak akan lagi didukung setelah Android SDK dirilis secara resmi.
-
-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 Pratinjau, 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 Pratinjau dan cara penggunaannya. Sebelum informasi ini dikumpulkan, Pratinjau 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 Pratinjau 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 Pratinjau untuk menjalankan aplikasi yang dikembangkan oleh pihak ketiga atau yang mengakses data, materi atau sumber daya yang disediakan oleh pihak ketiga, Anda setuju bahwa Google tidak bertanggung jawab terhadap aplikasi, data, materi atau sumber daya tersebut. Anda memahami bahwa semua data, materi 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, materi, atau sumber daya pihak ketiga tersebut.
-
-7.2 Anda harus menyadari bahwa data, materi 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, materi, 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, materi, atau sumber daya pihak ketiga semacam itu tunduk pada ketentuan terpisah antara Anda dan pihak ketiga yang bersangkutan.
-
-8. Menggunakan Google API
-
-8.1 Google API
-
-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 Pratinjau 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 Pratinjau atau bagian Pratinjau 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 Pratinjau, 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 PRATINJAU OLEH ANDA MERUPAKAN RISIKO ANDA SENDIRI DAN BAHWA PRATINJAU INI DISEDIAKAN "APA ADANYA" DAN "SEBAGAIMANA TERSEDIA" TANPA JAMINAN DALAM BENTUK APA PUN DARI GOOGLE.
-
-10.2 PENGGUNAAN PRATINJAU DAN MATERI APA PUN YANG DIUNDUH ATAU DIPEROLEH MELALUI PENGGUNAAN PRATINJAU 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 PENGGUNAAN TERSEBUT. TANPA MEMBATASI HAL TERSEBUT, ANDA MEMAHAMI BAHWA PRATINJAU 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 Pratinjau oleh Anda, (b) aplikasi apa pun yang Anda kembangkan dari Pratinjau 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 pada Perjanjian Lisensi
-
-13.1 Google boleh membuat perubahan pada Perjanjian Lisensi saat mendistribusikan versi baru Pratinjau. Saat perubahan tersebut dibuat, Google akan menyediakan versi baru Perjanjian Lisensi di situs web penyediaan Pratinjau.
-
-14. Ketentuan Hukum Umum
-
-14.1 Perjanjian Lisensi ini merupakan perjanjian hukum antara Anda dan Google dan mengatur penggunaan Pratinjau 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 Pratinjau.
-
-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 valid, 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. PRATINJAU TUNDUK PADA HUKUM DAN PERATURAN EKSPOR AMERIKA SERIKAT. ANDA HARUS MEMATUHI SEMUA HUKUM DAN PERATURAN NASIONAL DAN INTERNASIONAL YANG BERLAKU PADA PRATINJAU. 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 pihak lain.
-
-14.7 Perjanjian Lisensi ini, dan hubungan Anda dengan Google berdasarkan Perjanjian Lisensi ini, akan 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">Mencopot pemasangan</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 waktu proses
-  Android N. Anda bisa melakukannya dengan salah satu cara ini:
-</p>
-
-<ul>
-  <li>Pasang 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 Android N API baru,
-  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 secara teratur 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 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">Daftarkan 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 pratinjau 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 penyetelan ulang
-  perangkat secara penuh, jadi data pengguna pada perangkat itu akan dibuang. 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 penyetelan 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 kapan saja. Lihat tabel di bawah untuk mengunduh citra
- sistem perangkat pengujian Anda. Mem-flash perangkat secara manual berguna jika Anda harus
-  mengontrol secara persis lingkungan pengujian tersebut atau harus memasang ulang secara rutin,
-  misalnya untuk pengujian otomatis.
-</p>
-
-<!-- You can flash by ota or system image --><p>
-  Memasang citra sistem pada perangkat <strong>akan membuang 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 petunjuk 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>
-  Citra sistem yang di-flash 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 Pratinjau
-  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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="revertDevice">Mencopot pemasangan Pratinjau dari perangkat</h3>
-
-<p>
-  Jika Anda ingin mencopot pemasangan Pratinjau 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 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 lainnya</strong>, hubungi produsen perangkat
-        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 telah 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 penyetelan ulang perangkat secara penuh, jadi data pengguna pada perangkat itu akan
-    dibuang. Pastikan Anda <strong>mencadangkan data penting</strong> sebelum
-    membatalkan pendaftaran perangkat.
-  </p>
-  </li>
-</ul>
-
-<p class="note"><strong>Catatan:</strong>
-  Mencopot pemasangan citra sistem Developer Preview sebelum
-  program berakhir mengharuskan penyetelan ulang perangkat secara penuh dan membuang 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 lewati 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 centang
-  <strong>Android N Preview</strong>.</li>
-
-  <li>Klik tab <strong>SDK Tools</strong>, kemudian pilih
-    kotak centang <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 dipasang.
-  </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 Android Emulator
-untuk Android N Preview.)
-  <li>Selesaikan konfigurasi AVD selanjutnya dan klik
-    <strong>Finish</strong>.</li>
-</ol>
-
-<p>Anda sekarang bisa meluncurkan Android Emulator dengan Android N Preview AVD.</p>
-
-<p>
-Untuk mendapatkan pengalaman terbaik di Android Emulator, pastikan Anda menggunakan
-Android Studio 2.1 atau yang lebih tinggi, yang mendukung <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>
-dengan kinerja jauh lebih cepat dibandingkan Emulator di
-Android Studio 1.5.</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() {
-    /* verifikasi apakah TOS disetujui */
-    if ($("input#agree").is(":checked")) {
-      /* tampilkan tombol unduh */
-      $("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/afw.jd b/docs/html-intl/intl/in/preview/features/afw.jd
deleted file mode 100644
index 643fab2..0000000
--- a/docs/html-intl/intl/in/preview/features/afw.jd
+++ /dev/null
@@ -1,552 +0,0 @@
-page.title=Pembaruan Android for Work
-page.metaDescription=API dan fitur baru Android for Work di Android N.
-page.keywords="android for work", "android N", "enterprise", "QR code"
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Dalam dokumen ini</h2>
-      <ol>
-        <li><a href="#qr">Penyediaan Kode QR
-                </a></li>
-
-        <li><a href="#sec-challenge">Pertanyaan Keamanan Profil Kerja
-                </a></li>
-
-        <li><a href="#suspend">Menonaktifkan Akses ke Aplikasi
-                </a></li>
-
-        <li><a href="#toggle-work">Beralih Mode Kerja
-                </a></li>
-
-        <li><a href="#always-on-vpn">Always-On VPN
-                </a></li>
-
-        <li><a href="#contacts">Integrasi Kontak dengan Profil Kerja
-                </a></li>
-
-        <li><a href="#remote-reboot">Boot Ulang Jarak Jauh
-                </a></li>
-
-        <li><a href="#disable-roaming">Menonaktifkan Roaming Data
-                </a></li>
-
-        <li><a href="#process-logging">Pencatatan Proses Enterprise
-                </a></li>
-
-        <li><a href="#bug-reports">Laporan Bug Jarak Jauh
-                </a></li>
-
-        <li><a href="#remove-cert">Membuang Sertifikat Klien
-                </a></li>
-
-        <li><a href="#grant-cert-on-install">Memberi Akses ke Sertifikat Klien
-                saat Pemasangan</a></li>
-
-        <li><a href="#ui-policy">Transparansi Kebijakan UI Sistem
-                </a></li>
-
-        <li><a href="#restrictions-mgmt">Penyempurnaan Manajemen Pembatasan Aplikasi
-                </a></li>
-
-        <li><a href="#location-off">Tombol Lokasi Nonaktif
-                </a></li>
-
-        <li><a href="#custom-provisioning">Penyediaan yang Disesuaikan
-                </a></li>
-
-        <li><a href="#multi-wifi-ca">Multi-Sertifikat CA Wi-Fi
-                </a></li>
-
-        <li><a href="#custom-lock">Pesan Layar Kunci yang Disesuaikan
-                </a></li>
-
-        <li><a href="#work-connectionservice">ConnectionService Profil Kerja
-                </a></li>
-
-        <li><a href="#lock-wp">Mengunci Wallpaper
-                </a></li>
-
-        <li><a href="#lock-user-icon">Mengunci Ikon Pengguna
-                </a></li>
-
-        <li><a href="#health-monitoring">Pemantauan Kesehatan Perangkat
-                </a></li>
-
-      </ol>
-
-    <h2>Lihat Juga</h2>
-    <ul>
-      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
-            N Preview SDK</a></li>
-    </ul>
-  </div>
-</div>
-
-<p>Dokumen ini menjelaskan fitur baru Android for Work yang disediakan di
-Android N.</p>
-
-<h2 id="qr">Penyediaan Kode QR</h2>
-
-<p>
-  Android for Work kini mendukung penggunaan kode QR untuk penyediaan perangkat
-  milik perusahaan. Wizard persiapan kini memungkinkan Anda memindai kode QR untuk penyediaan
-  perangkat.
-</p>
-
-<h2 id="sec-challenge">Pertanyaan Keamanan Profil Kerja</h2>
-
-<p>
-  Pemilik profil bisa mengharuskan pengguna menetapkan pertanyaan keamanan untuk aplikasi
-  yang berjalan dalam profil kerja. Sistem akan menampilkan pertanyaan keamanan bila
-  pengguna mencoba membuka aplikasi kerja apa pun. Jika pengguna berhasil menyelesaikan
-  pertanyaan keamanan, sistem akan membuat profil kerja dan mendekripsinya
-  jika diperlukan.
-</p>
-
-<p>
-  Jika pemilik profil mengirim intent {@link
-  android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD} , sistem
-  akan menampilkan pertanyaan keamanan kepada pengguna. Pemilik profil juga dapat
-  mengirim intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> untuk
-  meminta pengguna menyetel kunci perangkat.
-</p>
-
-<p>
-  Pemilik profil dapat memilih untuk menyetel kebijakan sandi untuk pertanyaan pekerjaan
-  yang berbeda dari kebijakan sandi perangkat lainnya. Misalnya, panjang minimum
-  jawaban pertanyaan perangkat bisa berbeda dari panjang
-  yang diperlukan untuk sandi lainnya. Pemilik profil menyetel kebijakan pertanyaan
-  menggunakan metode{@link android.app.admin.DevicePolicyManager}
-  biasa, seperti {@link
-  android.app.admin.DevicePolicyManager#setPasswordQuality
-  setPasswordQuality()} dan {@link
-  android.app.admin.DevicePolicyManager#setPasswordMinimumLength
-  setPasswordMinimumLength()}. Pemilik profil juga bisa menyetel penguncian perangkat,
-  dengan menggunakan instance {@link android.app.admin.DevicePolicyManager} yang dikembalikan secara langsung
-  oleh metode <code>DevicePolicyManager.getParentProfileInstance()</code>
-  baru. Selain itu, pemilik profil dapat menyesuaikan layar kredensial untuk
-  pertanyaan kerja menggunakan kelas {@link android.app.admin.DevicePolicyManager}
-  dengan metode <code>setOrganizationColor()</code> dan
-  <code>setOrganizationName()</code> baru.
-</p>
-
-<p>
-  Untuk mengetahui detail tentang kelas dan metode berikut, lihat halaman referensi
-  <code>DevicePolicyManager</code> di <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi N Preview SDK</a>.
-</p>
-
-<h2 id="suspend">Menonaktifkan Akses ke Aplikasi</h2>
-
-<p>
-  Pemilik perangkat dan pemilik profil bisa menangguhkan akses untuk sementara ke paket
-  dengan memanggil metode <code>DevicePolicyManager.setPackagesSuspended()</code>
-  baru. Pemilik bisa menggunakan metode yang sama untuk mengaktifkan kembali paket tersebut.
-</p>
-
-<p>
-  Selagi paket ditangguhkan, maka tidak bisa memulai aktivitas, pemberitahuan ke
-  paket akan disembunyikan, dan entri aplikasi dalam <a href="{@docRoot}guide/components/recents.html">layar ringkasan</a> akan disembunyikan.
-  Paket yang ditangguhkan tidak muncul di <a href="{@docRoot}guide/components/recents.html">layar ringkasan</a>, dan
-  tidak bisa menampilkan dialog (termasuk toast dan snackbar). Juga tidak bisa memutar
-  audio atau menggetarkan perangkat.
-</p>
-
-<p>
-  Launcher harus menerapkan UI berbeda pada aplikasi yang ditangguhkan untuk menunjukkan
-  aplikasi saat ini tidak tersedia; misalnya, bisa merender ikon aplikasi
-  dalam warna abu-abu. Launcher bisa mengetahui apakah aplikasi ditangguhkan dengan memanggil metode
-  <code>DevicePolicyManager.getPackageSuspended()</code> baru.
-</p>
-
-<h2 id="toggle-work">Beralih Mode Kerja</h2>
-
-<p>
-  Pada perangkat dua-profil, pengguna bisa mengaktifkan dan menonaktifkan mode kerja. Selagi mode
-  kerja dinonaktifkan, profil yang dikelola akan dinonaktifkan untuk sementara. Aplikasi Profil Kerja,
-  sinkronisasi latar belakang, dan pemberitahuan semuanya dinonaktifkan, termasuk
-  aplikasi pemilik profil. Selagi profil kerja dinonaktifkan, sistem
-  akan menampilkan ikon status tetap untuk mengingatkan pengguna bahwa mereka tidak bisa meluncurkan aplikasi
-  kerja. Peluncur sistem menunjukkan bahwa aplikasi kerja dan widget tidak bisa
-  diakses.
-</p>
-
-<h2 id="always-on-vpn">Always-On VPN</h2>
-
-<p>
-  Pemilik perangkat dan pemilik profil bisa mengharuskan aplikasi kerja selalu terhubung
-  ke jaringan melalui VPN yang ditetapkan. Jika pemilik menyetel persyaratan ini,
-  perangkat secara otomatis akan memulai VPN itu saat booting.
-</p>
-
-<p>
-  Pemilik bisa menggunakan VPN dengan memanggil metode
-  <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code> baru. Untuk mengetahui
-  apakah pemilik telah menyetel persyaratan VPN, panggil metode
-  <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code> baru.
-</p>
-
-<p>
-  Karena sistem bisa secara langsung mengikat layanan VPN tanpa interaksi aplikasi,
-  klien VPN perlu menangani titik masuk baru untuk Always-On VPN. Seperti sebelumnya,
-  Anda bisa menemukan layanan aktif dengan menggunakan filter intent yang cocok dengan tindakan
-  {@link android.net.VpnService android.net.VpnService}.
-</p>
-
-<p>
-  Pengguna bisa secara manual menyetel klien Always-On VPN yang mengimplementasikan {@link
-  android.net.VpnService} dengan menggunakan layar <strong>Settings &gt; More &gt;
-  VPN</strong>.
-</p>
-
-<h2 id="contacts">Integrasi Kontak dengan Profil Kerja</h2>
-
-<p>
-  Pemilik profil bisa mengizinkan penelusuran lokal dan pencarian direktori kontak kerja
-  dari pengguna utama. Misalnya, seorang pengguna bisa mengakses kontak direktori pribadi dan pekerjaan
-  dari telepon pribadi atau aplikasi kontak mereka (jika
-  diizinkan oleh administrator profil mereka).
-</p>
-
-<p>
-  Pengembang yang memanfaatkan Contact Provider bisa menggunakan Enterprise Contacts
-  API untuk mengakses entri direktori profil kerja dari pengguna utama jika diizinkan
-  oleh kebijakan:
-</p>
-
-<ul>
-  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
-  </li>
-</ul>
-
-<p>
-  Pemilik profil bisa mengendalikan visibilitas kontak kerja di
-  pengguna utama menggunakan metode baru berikut:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
-  </li>
-</ul>
-
-<h2 id="remote-reboot">Boot Ulang Jarak Jauh</h2>
-
-<p>
-  Pemilik perangkat bisa mem-boot ulang perangkat dari jarak jauh. Di beberapa kasus, perangkat yang diluncurkan di
-  tempat umum dalam pembatas bisa mencegah akses ke tombol daya. Jika
-  perangkat perlu di-boot ulang, administrator bisa melakukannya dengan metode
-  <code>DevicePolicyManager.reboot()</code> baru.
-</p>
-
-<h2 id="disable-roaming">Menonaktifkan Roaming Data</h2>
-
-<p>
-  Pemilik perangkat bisa menonaktifkan roaming data menggunakan pembatasan pengguna {@link
-  android.os.UserManager} <code>DISALLOW_DATA_ROAMING</code> baru.
-</p>
-
-<h2 id="process-logging">Pencatatan Proses Enterprise</h2>
-
-<p>
-  Pemilik perangkat bisa mengenali aktivitas mencurigakan dengan melacak perangkat dari jarak jauh,
-  termasuk peluncuran aplikasi, aktivitas adb, dan pembukaan kunci layar. Log proses
-  tidak memerlukan persetujuan pengguna. Untuk mengambil log, pemilik perangkat mengaktifkan
-  pencatatan perangkat menggunakan <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
-</p>
-
-<p>
-  Perubahan API meliputi:
-</p>
-
-<ul>
-
-  <li>
-    Kelas <code>android.app.admin.SecurityLog</code> baru dan
-    metodenya
-  </li>
-
-  <li>
-    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrieveSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
-  </li>
-</ul>
-
-<h2 id="bug-reports">Laporan Bug Jarak Jauh</h2>
-
-<p>
-  Pemilik perangkat bisa memicu dari jarak jauh dan mengambil laporan bug yang berisi
-  file dump status perangkat, yang memungkinkan penyelidikan forensik atas
-  kesalahan yang diketahui atau perangkat yang telah diutak-atik. Dikarenakan sifat detail laporan bug,
-  maka diperlukan persetujuan pengguna.
-</p>
-
-<p>
-  Android N menyertakan tambahan API berikut untuk mendukung fitur ini. Untuk detailnya, lihat
-  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
-  N Preview SDK</a>.
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.requestBugreport()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportFailed()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportShared()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
-  </li>
-</ul>
-
-<h2 id="remove-cert">Membuang Sertifikat Klien</h2>
-
-<p>
-  Pemilik profil dan pemilik perangkat kini bisa membuang sertifikat klien yang telah dipasang melalui
-  {@link android.app.admin.DevicePolicyManager#installKeyPair
-  installKeyPair()} dengan memanggil metode baru
-  <code>DevicePolicyManager.removeKeyPair()</code>.
-</p>
-
-<h2 id="grant-cert-on-install">Memberi Akses ke Sertifikat Klien
-  saat Pemasangan</h2>
-
-<p>
-  Jika pemilik profil dan pemilik perangkat memberikan kemampuan kepada aplikasi pihak ketiga untuk
-  mengelola sertifikat, aplikasi bisa memberikan akses pada dirinya sendiri ke sertifikat
-  yang dipasangnya tanpa intervensi dari pemilik.
-</p>
-
-<p>
-  API yang sudah ada untuk mengelola sertifikat diperluas untuk mencakup:
-</p>
-
-<ul>
-  <li><code>DevicePolicyManager.installKeyPair()</code>
-  </li>
-</ul>
-
-<h2 id="ui-policy">Transparansi Kebijakan UI Sistem</h2>
-
-<p>
-  Kebijakan yang memengaruhi pengalaman pengguna atau membatasi Settings pengguna sepenuhnya
-  diungkapkan kepada pengguna, serta pemilik profil dan pemilik perangkat bisa memberlakukan
-  kebijakannya kepada departemen TI perusahaan mereka. Selain pesan “Action
-  not allowed” yang konsisten di Settings, administrator TI bisa menyetel
-  pesan dukungan khusus-organisasi di setelan perangkat dengan metode
-  {@link android.app.admin.DevicePolicyManager} baru berikut:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setShortSupportMessage()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.setLongSupportMessage()</code>
-  </li>
-</ul>
-
-<h2 id="restrictions-mgmt">Penyempurnaan Manajemen Pembatasan Aplikasi</h2>
-
-<p>
-  Pemilik perangkat atau profil bisa mengaktifkan aplikasi lain untuk mengelola
-  pembatasan aplikasi melalui metode
-  <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
-  baru. Aplikasi yang dipilih bisa memeriksa apakah izin ini telah
-  diberikan dengan memanggil
-  <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
-</p>
-
-<p>
-  Aplikasi yang dipilih untuk mengelola pembatasan aplikasi bisa memanggil {@link
-  android.app.admin.DevicePolicyManager#setApplicationRestrictions
-  setApplicationRestrictions()} dan {@link
-  android.app.admin.DevicePolicyManager#getApplicationRestrictions
-  getApplicationRestrictions()} untuk paket apa pun di pengguna atau profil itu.
-</p>
-
-<h2 id="location-off">Tombol Lokasi Nonaktif</h2>
-
-<p>
-  Pengguna bisa menonaktifkan izin lokasi untuk aplikasi kerja sambil melanjutkan
-  akses informasi lokasi di aplikasi pribadi mereka. Tombol akses
-  lokasi yang terpisah di Location Settings memungkinkan pengguna untuk menolak pembaruan lokasi atau
-  kueri lokasi terakhir untuk aplikasi yang berjalan di profil kerja.
-</p>
-
-<p>
-  Tombol lokasi nonaktif level teratas menonaktifkan akses lokasi untuk
-  profil utama dan profil yang dikelola.
-</p>
-
-<h2 id="custom-provisioning">Penyediaan yang Disesuaikan</h2>
-
-<p>
-  Aplikasi bisa menyesuaikan alur penyediaan pemilik profil dan pemilik perangkat
-  dengan warna dan logo perusahaan.
-</p>
-
-<dl>
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
-  </dt>
-
-  <dd>
-    Menyesuaikan warna alur.
-  </dd>
-
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
-  </dt>
-
-  <dd>
-    Menyesuaikan alur dengan logo perusahaan.
-  </dd>
-</dl>
-
-<h2 id="multi-wifi-ca">Multi-Sertifikat CA Wi-Fi</h2>
-
-<p>
-  Pemilik profil dan pemilik perangkat bisa menyetel beberapa sertifikat CA sekaligus untuk
-  konfigurasi Wi-Fi yang diberikan. Bila jaringan Wi-Fi perusahaan memiliki CA terpisah untuk
-  titik akses yang terpisah dengan SSID yang sama, administrator TI bisa menyertakan semua
-  CA yang relevan dalam konfigurasi Wi-Fi menggunakan metode
-  <code>setCaCertificates()</code> baru.
-</p>
-
-<p>
-  API yang ditambah adalah:
-</p>
-
-<ul>
-  <li>
-    <code>WifiEnterpriseConfig.setCaCertificates()</code>
-  </li>
-
-  <li>
-    <code>WifiEnterpriseConfig.getCaCertificates()</code>
-  </li>
-</ul>
-
-<h2 id="custom-lock">Pesan Layar Terkunci yang Disesuaikan</h2>
-
-<p>
-  Pemilik perangkat bisa menyediakan informasi pemilik agar ditampilkan di layar kunci.
-  Informasi ini lebih diprioritaskan dari pesan layar kunci pengguna (jika sudah ada
-  yang disetel). Metode {@link android.app.admin.DevicePolicyManager} baru adalah:
-</p>
-
-<ul>
-  <li>
-    <code>setDeviceOwnerLockScreenInfo()</code>
-  </li>
-
-  <li>
-    <code>getDeviceOwnerLockScreenInfo()</code>
-  </li>
-</ul>
-
-<h2 id="work-connectionservice">ConnectionService Profil Kerja</h2>
-
-<p>
-  Pemilik profil bisa menetapkan aplikasi telepon kerja yang menggunakan
-  {@link android.telecom.ConnectionService} khusus-kerja untuk
-  backend panggilan (akun panggilan). Telepon kerja hanya menyimpan log panggilan kerja
-  dan hanya mengandalkan kontak kerja. Pengguna memiliki pengalaman UI
-  saat-panggilan yang konsisten, apa pun aplikasi panggilannya. Panggilan telepon kerja yang masuk ke akun panggilan kerja
-  dibedakan dari telepon pribadi yang masuk
-  ke akun panggilan pribadi.
-</p>
-
-<p>
-  Penelepon harus memeriksa tanda baru
-  <code>android.telecom.Call.PROPERTY_WORK_CALL</code> untuk menentukan apakah telepon tersebut merupakan
-  telepon kerja. Jika merupakan telepon kerja, penelepon harus menunjukkannya,
-  misalnya dengan menambahkan lencana kerja.
-</p>
-
-<h2 id="lock-wp">Mengunci Wallpaper</h2>
-
-<p>
-  Pembatasan pengguna baru (<code>DISALLOW_SET_WALLPAPER</code>) mencegah
-  pengguna mengubah wallpaper mereka. Pemilik perangkat atau pemilik profil tetap bisa
-  mengubah wallpaper, namun mereka hanya bisa mengubah wallpaper
-  untuk pengguna atau profil yang mereka kontrol. Misalnya, pemilik profil tidak bisa mengubah
-  wallpaper pengguna induk, namun pemilik profil utama di profil utama atau
-  pemilik perangkat bisa melakukannya. Pemilik profil atau pemilik perangkat yang ingin mengubah
-  wallpapernya harus memeriksa apakah pengguna atau profil
-  yang mereka kelola memiliki wallpaper ({@link android.app.WallpaperManager#isWallpaperSupported
-  isWallpaperSupported()}) dan apakah mereka diperbolehkan untuk mengubahnya (dengan metode
-  baru<code>WallpaperManager.isWallpaperSettingAllowed()</code>)
-</p>
-
-<h2 id="lock-user-icon">Mengunci Ikon Pengguna</h2>
-
-<p>
-  Pembatasan pengguna baru (<code>DISALLOW_SET_USER_ICON</code>) mencegah
-  pengguna mengubah ikon pengguna mereka. Pemilik perangkat atau pemilik profil pengguna
-  tetap bisa mengubah ikon. Akan tetapi, pemilik profil hanya bisa mengubah ikon
-  pengguna untuk profil yang dikontrolnya.
-</p>
-
-<h2 id="health-monitoring">Pemantauan Kesehatan Perangkat</h2>
-
-<p>
-  Pemilik perangkat atau pemilik profil bisa menggunakan antarmuka
-  <code>HardwarePropertiesManager</code> baru untuk mengambil informasi
-  tentang kesehatan perangkat, seperti suhu CPU atau GPU dan penggunaan CPU. Antarmuka pemantauan
-  baru ini khususnya berguna untuk memantau berjalannya perangkat yang tidak diawasi
-  di lokasi yang jauh.
-</p>
diff --git a/docs/html-intl/intl/in/preview/license.jd b/docs/html-intl/intl/in/preview/license.jd
deleted file mode 100644
index 56ae58a..0000000
--- a/docs/html-intl/intl/in/preview/license.jd
+++ /dev/null
@@ -1,145 +0,0 @@
-page.title=Perjanjian Lisensi
-
-@jd:body
-
-<p>
-Untuk mulai Android SDK Preview, Anda harus menyetujui ketentuan dan persyaratan berikut.
-Seperti dijelaskan di bawah ini, perhatikan bahwa ini adalah versi pratinjau Android SDK, bisa saja berubah, yang Anda gunakan dengan risiko sendiri.  Android SDK Preview bukan rilis stabil, dan mungkin berisi kesalahan serta cacat yang bisa mengakibatkan kerusakan serius pada sistem komputer, perangkat dan data Anda.
-</p>
-
-<p>
-Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Pengantar
-
-1.1 Android SDK Preview (dalam Perjanjian Lisensi ini disebut "Pratinjau" dan secara spesifik termasuk file sistem Android, paket API, dan file pustaka Pratinjau, jika disediakan) diberikan lisensinya kepada Anda sesuai dengan ketentuan Perjanjian Lisensi. Perjanjian Lisensi ini merupakan kontrak yang mengikat secara hukum antara Anda dan Google dalam kaitannya dengan penggunaan Pratinjau oleh Anda.
-
-1.2 "Android" berarti tumpukan perangkat lunak Android untuk perangkat, seperti yang tersedia di Android Open Source Project, yang ada di URL berikut: http://source.android.com/, yang selalu diperbarui.
-
-1.3 “Kompatibel dengan Android” 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 Pratinjau, Anda terlebih dahulu harus menyetujui Perjanjian Lisensi ini. Anda tidak boleh menggunakan Pratinjau jika tidak menerima Perjanjian Lisensi.
-
-2.2 Dengan mengklik untuk menerima dan/atau menggunakan Pratinjau, berarti Anda menyetujui ketentuan Perjanjian Lisensi.
-
-2.3 Anda tidak boleh menggunakan Pratinjau dan tidak boleh menerima Perjanjian Lisensi jika Anda adalah orang yang dilarang menerima Pratinjau berdasarkan hukum Amerika Serikat atau negara lainnya termasuk negara di mana Anda tinggal atau dari mana Anda menggunakan Pratinjau.
-
-2.4 Jika Anda akan menggunakan Pratinjau 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 Pratinjau atas nama perusahaan Anda atau entitas lainnya.
-
-3. Lisensi Pratinjau dari Google
-
-3.1 Sesuai dengan ketentuan Perjanjian Lisensi ini, Google memberi Anda lisensi yang tidak bisa disublisensikan, non-eksklusif, tidak bisa dialihkan, bebas royalti, bersifat global dan terbatas dalam menggunakan Pratinjau hanya untuk keperluan pengembangan aplikasi yang kompatibel untuk diimplementasikan pada Android.
-
-3.2 Anda tidak boleh menggunakan Pratinjau ini untuk mengembangkan aplikasi platform lain (termasuk implementasi yang tidak kompatibel pada Android) atau untuk mengembangkan SDK lain. Anda tentu saja bebas mengembangkan aplikasi untuk platform lain, termasuk implementasi yang tidak kompatibel pada Android, karena Pratinjau ini tidak digunakan untuk tujuan tersebut.
-
-3.3 Anda setuju bahwa Google atau pihak ketiga memiliki semua hak, kuasa dan kepentingan hukum dalam dan pada Pratinjau, termasuk Hak Kekayaan Intelektual yang terdapat dalam Pratinjau. "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 Pratinjau untuk tujuan apa pun yang tidak secara tersurat diizinkan dalam Perjanjian Lisensi ini. 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 Pratinjau atau bagian apa pun dari Pratinjau; atau (b) memuat bagian apa pun dari Pratinjau ke sebuah handset ponsel atau perangkat keras selain komputer pribadi, menggabungkan suatu bagian dari Pratinjau dengan perangkat lunak lain, atau mendistribusikan perangkat lunak atau perangkat yang menggabungkan suatu bagian dari Pratinjau.
-
-3.5 Penggunaan, reproduksi dan distribusi komponen Pratinjau 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 Pratinjau yang disediakan oleh Google dapat berubah tanpa pemberitahuan sebelumnya kepada Anda dan bahwa versi Pratinjau mendatang mungkin tidak kompatibel dengan aplikasi yang dikembangkan di versi Pratinjau sebelumnya. Anda setuju bahwa Google boleh menghentikan (secara permanen atau sementara) penyediaan Pratinjau (atau fitur apa pun dalam Pratinjau) 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 membuang, mengaburkan, atau mengubah pernyataan hak kepemilikan apa pun (termasuk pemberitahuan hak cipta dan merek dagang) yang terlampir atau termuat dalam Pratinjau.
-
-4. Penggunaan Pratinjau oleh Anda
-
-4.1 Google setuju bahwa Perjanjian Lisensi ini tidak memberi Google hak, kuasa, dan kepentingan hukum dari Anda (atau pemberi lisensi Anda) dalam atau pada aplikasi perangkat lunak apa pun yang Anda kembangkan menggunakan Pratinjau ini, termasuk kekayaan intelektual yang ada dalam aplikasi tersebut.
-
-4.2 Anda setuju untuk menggunakan Pratinjau dan menulis aplikasi hanya untuk tujuan yang diizinkan oleh (a) Perjanjian Lisensi, dan (b) hukum yang berlaku, peraturan atau praktik yang diterima secara umum atau panduan dalam yurisdiksi terkait (termasuk hukum mengenai ekspor data atau perangkat lunak ke dan dari Amerika Serikat atau negara lain yang terkait).
-
-4.3 Anda setuju jika Anda menggunakan Pratinjau untuk mengembangkan aplikasi, Anda akan melindungi hak privasi dan hak hukum pengguna. Jika pengguna memberikan nama pengguna, sandi, atau informasi login atau informasi pribadinya, Anda harus membuat pengguna tersebut menyadari bahwa informasi yang diberikannya 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 saat, dan untuk tujuan terbatas di mana, pengguna tersebut telah memberikan izin kepada Anda untuk melakukannya.
-
-4.4 Anda setuju bahwa Anda tidak akan terlibat dalam aktivitas apa pun dengan Pratinjau, termasuk pengembangan atau distribusi aplikasi yang mengganggu, mengacaukan, merusak, atau mengakses secara tidak sah server, jaringan atau properti layanan Google atau pihak ketiga lainnya.
-
-4.5 Anda setuju bertanggung jawab penuh untuk (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) data, materi, 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).
-
-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 lainnya) akibat pelanggaran tersebut.
-
-4.7 Pratinjau ini dalam tahap pengembangan, dan pengujian serta masukan Anda merupakan bagian penting dalam proses pengembangan. Dengan menggunakan Pratinjau, Anda mengakui bahwa implementasi beberapa fitur masih dalam tahap pengembangan dan bahwa Anda tidak seharusnya mengandalkan Pratinjau berfungsi sepenuhnya sebagaimana pada rilis stabil. Anda setuju untuk tidak mendistribusikan atau mengirimkan untuk umum penggunaan aplikasi menggunakan Pratinjau karena Pratinjau ini tidak akan lagi didukung setelah Android SDK dirilis secara resmi.
-
-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 Pratinjau, 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 Pratinjau dan cara penggunaannya. Sebelum informasi ini dikumpulkan, Pratinjau 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 Pratinjau 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 Pratinjau untuk menjalankan aplikasi yang dikembangkan oleh pihak ketiga atau yang mengakses data, materi atau sumber daya yang disediakan oleh pihak ketiga, Anda setuju bahwa Google tidak bertanggung jawab terhadap aplikasi, data, materi atau sumber daya tersebut. Anda memahami bahwa semua data, materi 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, materi, atau sumber daya pihak ketiga tersebut.
-
-7.2 Anda harus menyadari bahwa data, materi 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, materi, 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, materi, atau sumber daya pihak ketiga semacam itu tunduk pada ketentuan terpisah antara Anda dan pihak ketiga yang bersangkutan.
-
-8. Menggunakan Google API
-
-8.1 Google API
-
-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 Pratinjau 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 Pratinjau atau bagian Pratinjau 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 Pratinjau, 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 PRATINJAU OLEH ANDA MERUPAKAN RISIKO ANDA SENDIRI DAN BAHWA PRATINJAU INI DISEDIAKAN "APA ADANYA" DAN "SEBAGAIMANA TERSEDIA" TANPA JAMINAN DALAM BENTUK APA PUN DARI GOOGLE.
-
-10.2 PENGGUNAAN PRATINJAU DAN MATERI APA PUN YANG DIUNDUH ATAU DIPEROLEH MELALUI PENGGUNAAN PRATINJAU 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 PENGGUNAAN TERSEBUT. TANPA MEMBATASI HAL TERSEBUT, ANDA MEMAHAMI BAHWA PRATINJAU 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 Pratinjau oleh Anda, (b) aplikasi apa pun yang Anda kembangkan dari Pratinjau 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 pada Perjanjian Lisensi
-
-13.1 Google boleh membuat perubahan pada Perjanjian Lisensi saat mendistribusikan versi baru Pratinjau. Saat perubahan tersebut dibuat, Google akan menyediakan versi baru Perjanjian Lisensi di situs web penyediaan Pratinjau.
-
-14. Ketentuan Hukum Umum
-
-14.1 Perjanjian Lisensi ini merupakan perjanjian hukum antara Anda dan Google dan mengatur penggunaan Pratinjau 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 Pratinjau.
-
-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 valid, 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. PRATINJAU TUNDUK PADA HUKUM DAN PERATURAN EKSPOR AMERIKA SERIKAT. ANDA HARUS MEMATUHI SEMUA HUKUM DAN PERATURAN NASIONAL DAN INTERNASIONAL YANG BERLAKU PADA PRATINJAU. 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 pihak lain.
-
-14.7 Perjanjian Lisensi ini, dan hubungan Anda dengan Google berdasarkan Perjanjian Lisensi ini, akan 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>
\ 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
deleted file mode 100644
index c38a579..0000000
--- a/docs/html-intl/intl/in/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-page.title=Ringkasan Program
-page.metaDescription=Persiapkan aplikasi Anda untuk versi Android berikutnya
-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>
-  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 mulai 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 Pratinjau, 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 masukan 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>
-        Masukan dan dukungan
-      </h5>
-
-      <p>
-        Laporkan masalah dan berikan masukan 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 resmi Android N
-  final ke AOSP dan OEM, yang direncanakan selama Kuartal 3 2016.
-</p>
-
-<p>
-  Pada tahapan pencapaian pengembangan yang penting kami akan mengirimkan pembaruan untuk lingkungan pengujian dan
-  pengembangan Anda. Pada umumnya Anda diharapkan sudah memperoleh pembaruan setiap bulan (dengan interval 4 sampai 6
-  minggu). Tahapan pencapaian tersebut tercantum di bawah ini.
-</p>
-
-<ul>
-  <li><strong><a href="{@docRoot}preview/support.html#dp1">Pratinjau 1</a></strong> (rilis pertama, alfa)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Pratinjau 2</a></strong> (pembaruan bertahap, alfa)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp3">Pratinjau 3</a></strong> (pembaruan bertahap, beta)</li>
-  <li><strong>Pratinjau 4</strong> (API final dan SDK resmi, publikasi di Play)</li>
-  <li><strong>Pratinjau 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 pratinjau, emulator, dokumentasi
-  referensi, dan diff API.
-</p>
-
-<p>
-  <strong>Tiga tahapan pencapaian pratinjau pertama</strong> memberikan <strong>ujian
-  pertama 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 masukan dari Anda tentang fitur dan API serta masalah kompatibilitas file
-  &mdash; untuk semua ini, gunakan <a href="{@docRoot}preview/bug">Issue
-  Tracker</a>. Anda bisa mengharapkan beberapa perubahan API dalam pembaruan ini.
-</p>
-
-<p>
-  Pada <strong>pratinjau 4 dan 5</strong> Anda akan memiliki akses ke <strong>
- API dan SDK N final</strong> untuk digunakan dalam pengembangan, serta citra sistem hampir-final
-  untuk menguji perilaku dan fitur sistem. Android N akan memberikan level API
-  standar pada saat ini. Anda bisa memulai pengujian kompatibilitas final dari aplikasi
-  lawas dan menyaring setiap kode baru yang menggunakan API atau fitur N.
-</p>
-
-<p>
-  Juga, mulai pratinjau 4, Anda akan bisa <strong>mempublikasikan aplikasi ke
-  perangkat</strong> yang menjalankan Android N pada level API resmi, seperti
-  perangkat konsumen yang telah mengikuti program Android Beta. Anda bisa
-  mempublikasikan ke saluran alfa dan beta Google Play terlebih dahulu, agar 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 pratinjau
-  dirilis. Untuk mempermudah prosesnya, Anda bisa mendaftarkan perangkat pengujian di
-  program Android Beta dan mendapatkan <strong>pembaruan lewat jaringan seluler (OTA)</strong>
-  pada setiap tahapan pencapaian. Sebagai alternatif, citra pratinjau terbaru telah tersedia agar Anda
-  bisa mengunduh dan mem-flash secara manual.
-</p>
-
-<p>
-  Kami akan memberi tahu Anda bila pembaruan pratinjau 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}studio/intro/update.html">Android Studio</a>:</p>
-
-<ul>
-  <li> SDK dan alat <strong>N Developer Preview</strong>
-  <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 mengirimkan citra sistem terbaru untuk perangkat ini pada setiap tahapan pencapaian. Anda
-  bisa mengunduh dan mem-flash citra sistem yang diperbarui untuk 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
-  pratinjau 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 pratinjau 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 mendaftar 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 penyetelan 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
-  memasangnya. Anda perlu terus mengikuti perubahan terbaru
- dalam 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 membatalkan pendaftaran, <strong>perangkat Anda akan dikembalikan ke setelan pabrik</strong>
-  ke versi terbaru
-  Android 6.0 Marshmallow (tidak harus ke versi yang telah Anda
-  pasang sebelum mendaftarkan perangkat). Untuk memastikan pemasangan 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
- petunjuk 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">Ringkasan 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
-  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 pratinjau 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 masukan.
-</p>
-
-<ul>
-  <li> <a href="https://code.google.com/p/android-developer-preview/">N Developer Preview Issue
-    Tracker</a> adalah <strong>saluran masukan Anda.</strong> Anda bisa melaporkan bug, masalah
-    kinerja, dan masukan umum melalui Issue Tracker. Anda juga bisa memeriksa
-<a href="{@docRoot}preview/bugs">masalah yang diketahui</a> dan
-    mencari langkah-langkah solusinya. Kami akan terus mengabari Anda mengenai masalah tersebut bila telah disortir 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 pratinjau, dan mempublikasikan</h3>
-
-<p>
-  N Developer Preview menyediakan sistem pengembangan saja dan pustaka
-  Android yang <strong>tidak memiliki API level standar</strong>. Jika Anda tidak ingin
-  mengikuti perilaku kompatibilitas untuk menguji aplikasi (yang sangat
-  disarankan), Anda bisa menargetkan versi pratinjau Android N dengan menyetel
-  <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 pratinjau</strong>
-  &mdash; API ini tidak akan resmi hingga SDK final dirilis,
-  yang saat ini direncanakan untuk kuartal ketiga 2016. Berarti Anda bisa
-  <strong>mengharapkan ada banyak perubahan kecil pada API</strong> selama waktu ini, terutama selama
-  minggu-minggu awal program. Kami akan menyediakan rangkuman perubahan kepada Anda bersama
-  setiap pembaruan Android N Developer Preview.
-</p>
-
-<p class="note">
-  <strong>Catatan</strong>: Meskipun API pratinjau mungkin berubah, perilaku dasar
-  sistem sudah stabil dan siap diuji.
-
-</p>
-
-<p>
-  Google Play <strong>mencegah publikasi aplikasi yang menargetkan N Developer
-  Preview</strong>. Bila Android N final SDK tersedia, Anda akan bisa
-  menargetkan level API Android N 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
-  dengan mengunduh langsung dari situs Anda.
-</p>
-
-<p>
-  Saat rilis penuh Android N ke AOSP dan OEM, yang direncanakan pada Kuartal 3 2016,
-  Anda akan bisa mempublikasikan aplikasi yang menargetkan Android N ke saluran
-  rilis resmi di Google Play.
-</p>
-
-
-<h2 id="how_to_get_started">Cara mulai</h2>
-
-<p>
-  Untuk mulai menguji aplikasi Anda dengan Android N:
-</p>
-
-<ol>
-  <li> Tinjau <a href="{@docRoot}preview/api-overview.html">Ringkasan 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 petunjuk berikut untuk <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan SDK Pratinjau</a>
-  dan mengonfigurasi perangkat pengujian.</li>
-  <li> Ikuti <a href="https://developers.google.com/android/nexus/images">petunjuk
-  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/preview_toc.cs b/docs/html-intl/intl/in/preview/preview_toc.cs
deleted file mode 100644
index 5868e4d..0000000
--- a/docs/html-intl/intl/in/preview/preview_toc.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-<ul id="nav">
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="程式總覽"> Ringkasan Program</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/support.html"> Dukungan dan Catatan Rilis</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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">Menyiapkan Pratinjau</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="在裝置上測試">Menguji pada Perangkat</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="行為變更">Perubahan Perilaku </a></div>
-      <ul>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/background-optimization.html" 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="背景最佳化">Optimalisasi Latar Belakang</a></li>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/multilingual-support.html" 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="語言和地區設定">Bahasa dan Lokal</a></li>
-      </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="&lt;?cs var:toroot ?&gt;preview/features/multi-window.html" 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="多視窗支援">Dukungan Multi-Jendela</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/notification-updates.html" 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="通知">Pemberitahuan</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/data-saver.html"> Data Saver</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/tv-recording-api.html" 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="電視錄製">Perekaman TV</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/security-config.html" 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="網路安全性設定">Konfigurasi Keamanan Jaringan</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/icu4j-framework.html" 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"> Dukungan ICU4J</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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 語言功能">Fitur Bahasa Java 8</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/afw.html"> Pembaruan Android for Work</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/samples.html" es-lang="Ejemplos" in-lang="Contoh" ja-lang="サンプル" ko-lang="샘플" pt-br-lang="Exemplos" ru-lang="Примеры" zh-cn-lang="示例" zh-tw-lang="範例"> Contoh</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/license.html" es-lang="Contrato de licencia" ja-lang="使用許諾契約" ko-lang="라이선스 계약" pt-br-lang="Contrato de licença" ru-lang="Лицензионное соглашение" zh-cn-lang="许可协议" zh-tw-lang="授權協議"> Perjanjian Lisensi</a></div>
-  </li>
-
-</ul> 
\ 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
deleted file mode 100644
index c03f388..0000000
--- a/docs/html-intl/intl/in/preview/setup-sdk.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Menyiapkan Pratinjau
-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</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</h2>
-
-<p>Platform Android N menambahkan dukungan untuk <a href="{@docRoot}preview/j8-jack.html">fitur bahasa Java 8</a>,
-yang memerlukan compiler baru bernama Jack. Jack versi terbaru
-saat ini hanya didukung di Android Studio 2.1. Jadi, jika Anda ingin
-menggunakan fitur bahasa Java 8, Anda harus menggunakan Android Studio 2.1 untuk
-membangun aplikasi. Jika tidak, Anda tidak perlu menggunakan compiler Jack, namun Anda
-tetap harus memperbarui JDK 8 untuk mengompilasi pada platform Android N,
-seperti dijelaskan di bawah ini.</p>
-
-<p>Jika sudah memasang Android Studio, pastikan Anda memiliki Android
-Studio 2.1 atau yang lebih tinggi dengan mengklik <strong>Help &gt; Check for Update</strong>
-(pada Mac, <strong>Android Studio &gt; Check for Updates</strong>).</p>
-
-<p>Jika Anda tidak memilikinya, <a href="{@docRoot}studio/">unduh Android Studio
-2.1 di sini</a>.</p>
-
-
-<h2 id="get-sdk">Dapatkan N Preview SDK</h2>
-
-<p>Untuk mulai mengembangkan dengan Android N API, Anda perlu pasang
-Android N Preview SDK di Android Studio sebagai berikut:</p>
-
-<ol>
-  <li>Buka SDK Manager dengan mengklik <strong>Tools &gt; Android &gt;
-  SDK Manager</strong>.</li>
-
-  <li>Di tab <strong>SDK Platforms</strong> pilih
-kotak centang <strong>Android N Preview</strong>.</li>
-
-  <li>Klik tab <strong>SDK Tools</strong>, kemudian pilih
-    kotak centang <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 dipasang.
-  </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 situs web pengembang Android yang disederhanakan,
-  dan termasuk referensi API yang diperbarui untuk Android N API serta
-  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-3-docs.zip">n-preview-3-docs.zip</a></td>
-    <td width="100%">
-      MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
-    </td>
-  </tr>
-<table>
-
-
-
-<h2 id="java8">Dapatkan Java 8 JDK</h2>
-
-<p>Untuk mengompilasi aplikasi Anda pada platform Android N dan menggunakan beberapa alat bersama
-Android Studio 2.1, Anda perlu pasang Java 8 Developer Kit (JDK 8). Jadi, jika
-Anda belum mempunyai versi terbaru, unduh JDK 8 sekarang.</p>
-
-<p>Kemudian, setel 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 menyetel 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 menjelajah 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-rc3'</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 (Pratinjau)</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/in/preview/support.jd b/docs/html-intl/intl/in/preview/support.jd
deleted file mode 100644
index 885e7c7..0000000
--- a/docs/html-intl/intl/in/preview/support.jd
+++ /dev/null
@@ -1,1188 +0,0 @@
-page.title=Dukungan dan Catatan Rilis
-meta.keywords="preview", "android"
-page.tags="preview", "developer preview"
-page.image=images/cards/card-n-support_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Dalam dokumen ini</h2>
-
-<ul>
-  <li><a href="#dp3">Developer Preview 3</a>
-    <ul>
-      <li><a href="#general">Saran umum</a></li>
-      <li><a href="#new">Yang baru di DP3</a></li>
-      <li><a href="#ki">Masalah yang diketahui</a></li>
-    </ul>
-  </li>
-  <li><a href="#dp2">Developer Preview 2</a></li>
-  <li><a href="#dp1">Developer Preview 1</a></li>
-</ul>
-
-<!--
-<h2>See Also</h2>
-<ol>
-  <li></li>
-</ol>
--->
-
-</div>
-</div>
-
-<p>
-  Dua saluran dukungan utama tersedia untuk Anda saat mengembangkan dan menguji
-  dengan Android N Developer Preview: Laporkan bug di <a href="https://developer.android.com/preview/bug">https://developer.android.com/preview/bug</a> untuk
-  bug perangkat tertentu, sistem, dan Google App. Untuk masalah di aplikasi lain,
-  hubungi pengembang secara langsung.
-</p>
-
-<p>Untuk mendiskusikan masalah atau gagasan dengan pengembang lain yang menangani Android N, bergabunglah dengan
-<a href="{@docRoot}preview/dev-community">komunitas Google+ untuk Developer Preview</a>.</p>
-
-<h2 id="dp3">Developer Preview 3</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Tanggal: Mei 2016<br>
-        Build: NPD35K<br>
-        Dukungan emulator: x86 &amp; ARM (32/64-bit)<br>
-        Google Play Services: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="general">Saran umum</h3>
-
-<p>
-  Rilis Developer Preview ini adalah untuk <strong>pengembang aplikasi dan pengguna
-  awal lainnya</strong> serta tersedia untuk penggunaan sehari-hari, pengembangan, atau
-  pengujian kompatibilitas. Harap perhatikan catatan umum tentang
-  rilis ini:
-</p>
-
-<ul>
-  <li>Rilis ini mungkin memiliki berbagai <strong>masalah stabilitas</strong> pada
-    perangkat yang didukung. Pengguna mungkin mengalami ketidakstabilan sistem, seperti  kernel
-    yang panik dan mogok.
-  </li>
-
-  <li>Beberapa aplikasi <strong>mungkin tidak berfungsi seperti yang diharapkan</strong> pada versi
-  platform baru. Hal ini termasuk aplikasi Google serta aplikasi lainnya.
-  </li>
-
-  <li>Developer Preview 3 adalah <strong>Compatibility Test Suite (CTS)
- yang disetujui</strong> pada perangkat ini: Nexus 5X, Nexus 6, Nexus 6P, dan Pixel
-  C. Aplikasi yang bergantung pada build yang disetujui CTS seharusnya
-  berfungsi secara normal pada perangkat ini (Android Pay misalnya).
-  </li>
-
-  <li>Developer Preview 3 <strong>tersedia pada semua perangkat
-  yang didukung:</strong> Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player, Pixel
-  C, General Mobile 4G (Android One), serta Sony Xperia Z3 (model D6603 dan
-  D6653).
-
-  </li>
-</ul>
-
-
-<h3 id="new">Yang baru di DP3</h3>
-
-<h4 id="">VR Mode untuk Android</h4>
-
-<p>
-  Android N menambahkan dukungan platform dan optimalisasi untuk VR Mode baru yang memungkinkan
-  pengembang membuat pengalaman VR berkualitas tinggi di seluler bagi para pengguna. Ada
-  banyak penyempurnaan kinerja, termasuk akses ke inti CPU yang eksklusif
-  untuk aplikasi VR. Dalam aplikasi, Anda bisa memanfaatkan pemantauan kepala
- yang cerdas, dan pemberitahuan stereo yang bekerja untuk VR. Yang terpenting,
-  Android N memberikan grafis latensi sangat rendah.
-</p>
-
-<p>
-  Untuk informasi selengkapnya, lihat <a href="https://developers.google.com/vr/android/">Google VR SDK untuk Android</a>.
-</p>
-
-<h4 id="">Mode kinerja kontinu</h4>
-
-<p>
-  Android N menyertakan dukungan opsional untuk <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">mode
-  kinerja kontinu</a>, yang memungkinkan OEM memberikan petunjuk mengenai kapabilitas kinerja
-  perangkat untuk aplikasi yang berjalan dalam waktu lama. Pengembang aplikasi nanti bisa menggunakan
-  petunjuk ini untuk menyesuaikan aplikasi agar kinerja
-  perangkat bisa diprediksi pada level yang konsisten dalam jangka waktu lama. Pengembang aplikasi bisa mencoba API
-  baru ini dalam Developer Preview pada perangkat Nexus 6P saja.
-</p>
-
-<h4>Multiprocess WebView</h4>
-
-<p>
-  Mulai versi 51 di Android N, WebView akan menjalankan materi web dalam
-  proses sandbox terpisah bila opsi pengembang "Multiprocess Webview"
-  diaktifkan. Tim WebView menunggu masukan mengenai kompatibilitas dan
- kinerja waktu proses di N sebelum mengaktifkan Multiprocess WebView di versi Android
-  yang akan datang. Dalam versi ini, diharapkan adanya regresi waktu startup, penggunaan
-  memori total dan kinerja render perangkat lunak.
-</p>
-
-<p>
-  Jika Anda menemukan masalah yang tidak diharapkan dalam mode multiproses, kami ingin
-  mengetahuinya. Hubungi tim WebView dengan <a href="https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">
-  melaporkan bug</a>.
-</p>
-
-<h4 id="">Keyboard Shortcuts Helper</h4>
-
-<p>
-  Android N memungkinkan pengguna menekan <code>Meta+/</code> untuk memunculkan layar <strong>Keyboard
-  Shortcuts</strong> yang menampilkan semua pintasan yang tersedia baik dari
-  sistem maupun dari aplikasi yang sedang mendapatkan fokus. Pengembang bisa menambahkan pintasan sendiri atau
-  memunculkan layar Shortcuts dari aplikasi mereka. Lihat <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Keyboard
-  Shortcuts Helper</a> untuk detailnya.
-</p>
-
-<h4 id="">FrameMetrics API</h4>
-
-<p>
-  DP3 memperkenalkan <a href="{@docRoot}preview/api-overview.html#framemetrics_api">FrameMetrics API</a>
-  baru yang memungkinkan aplikasi memantau kinerja render UI dengan mengekspos
-  streaming pubsub API untuk mentransfer informasi frame-timing jendela aplikasi
-  saat ini. <code>FrameMetricsListener</code> bisa digunakan untuk mengukur
-  kinerja UI level interaksi di produksi dengan tingkat kejelasan yang lebih tinggi dan
-  tidak memerlukan koneksi USB.
-</p>
-
-<h4 id="api-changes">Fitur dan perubahan API</h4>
-
-<dl>
-  <dt>
-    Pintasan Peluncur dan Launcher Shortcuts API
-  </dt>
-
-  <dd>
-    Kami memutuskan untuk menunda fitur ini pada rilis Android yang akan datang. Kami berencana
-    membuang Launcher Shortcuts API (ShortcutManager dan lainnya) dari
-   Android N API publik mulai dalam Developer Preview berikutnya.
-  </dd>
-
-  <dt>
-    WebView Javascript berjalan sebelum halaman dimuat
-  </dt>
-
-  <dd>
-    Mulai dengan aplikasi yang menargetkan Android N, konteks Javascript disetel ulang
-  saat halaman baru telah dimuat. Saat ini, konteks tersebut dibawa untuk
-  halaman pertama yang dimuat di instance {@link android.webkit.WebView} yang baru.
-    Pengembang yang ingin menginjeksikan Javascript ke dalam {@link
-android.webkit.WebView} harus mengeksekusi skrip setelah halaman
- mulai dimuat.
-  </dd>
-
-  <dt>
-    WebView Geolocation pada sumber yang tidak aman
-  </dt>
-
-  <dd>
-    Mulai dengan aplikasi yang menargetkan Android N, API geolokasi hanya akan
-  diizinkan pada sumber yang aman (melalui HTTPS). Kebijakan ini didesain untuk melindungi
-    informasi privat pengguna saat mereka menggunakan koneksi yang tidak aman.
-  </dd>
-
-  <dt>
-    Data Saver
-  </dt>
-
-  <dd>
-    Mulai di Developer Preview 3, aplikasi bisa menggunakan intent untuk menampilkan
-  dialog sistem yang memungkinkan pengguna menambahkan aplikasi secara langsung ke daftar putih pengecualian
-  Data Saver. Lihat <a href="{@docRoot}preview/api-overview.html#data_saver">dokumentasi
-    Data Saver</a> untuk detailnya.
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#number-blocking">Pemblokiran nomor</a>
-  </dt>
-
-  <dd>
-    Jika pengguna yang tidak diizinkan berusaha memblokir atau membuka blokir suatu nomor, operasi
-   tersebut kini akan gagal dengan {@link java.lang.SecurityException}. (Sebelumnya,
-    operasi tersebut akan melontarkan {@link java.lang.UnsupportedOperationException}.)
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#tile_api">Quick Settings Tile
- API</a>
-  </dt>
-
-  <dd>
-    Sistem kini menggunakan metadata aktivitas untuk memutuskan mode petak.
-    (Sebelumnya, mode petak ditentukan oleh nilai hasil
-    <code>TileService.onTileAdded()</code>.) Untuk informasi selengkapnya, lihat
-    <code>TileService.META_DATA_ACTIVE_TILE</code> dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> yang bisa diunduh.
-  </dd>
-</dl>
-
-<h4 id="dp3-fixes">Perbaikan untuk masalah yang dilaporkan oleh pengembang</h4>
-
-<p>
-  Banyak masalah yang dilaporkan oleh pengembang telah diperbaiki, termasuk:
-</p>
-
-<ul>
-  <li>Pemutaran Bluetooth Audio yang terputus setelah 1 lagu (bug <a href="https://code.google.com/p/android/issues/detail?id=206889">206889</a>)
-  </li>
-
-  <li>Pixel C Terus Mengalami Mogok (bug <a href="https://code.google.com/p/android/issues/detail?id=206962">206962</a>)
-  </li>
-
-  <li>Masalah pemberitahuan Jam dan Toast (bug <a href="https://code.google.com/p/android/issues/detail?id=203094">203094</a>)
-  </li>
-
-  <li>Pixel C melakukan boot ulang saat dihubungkan ke MacBook Pro lewat Kabel USB C (bug
-  <a href="https://code.google.com/p/android/issues/detail?id=205432">205432</a>)
-  </li>
-
-  <li>Kalender selisih satu hari (bug <a href="https://code.google.com/p/android/issues/detail?id=203002">203002</a>)
-  </li>
-
-  <li>TelephonyManager.getAllCellInfo menghasilkan data tidak valid (bug <a href="https://code.google.com/p/android/issues/detail?id=203022">203022</a>)
-  </li>
-
-  <li>Nexus 6p, Bluetooth terputus terus-menerus (bug <a href="https://code.google.com/p/android/issues/detail?id=208062">208062</a>)
-  </li>
-</ul>
-
-<p>Untuk daftar lengkap masalah yang telah diperbaiki, lihat <a href="https://goo.gl/6uCKtf">Issue
-Tracker</a>.</p>
-
-<h3 id="ki">Masalah yang Diketahui</h3>
-
-<h4>Aksesibilitas</h4>
-
-<ul>
-  <li>Tidak bisa memantau output TTS saat pitch disetel mendekati level maksimum.
-  </li>
-
-  <li>Fitur dan setelan aksesibilitas bisa terganggu bila pengguna menambahkan
-  sebuah profil kerja, termasuk isyarat perbesaran dan setelan. Kondisi
-  aksesibilitas dipulihkan bila pengguna menyentuh setelan terkait.
-  </li>
-</ul>
-
-<h4>Kamera</h4>
-
-<ul>
-  <li>Aplikasi Kamera telah menunjukkan ketidakstabilan; aplikasi ini bisa mogok dalam berbagai
-  keadaan, seperti saat diluncurkan dalam mode multi-jendela.
-  </li>
-
-  <li>Menekan rana terus-menerus dalam mode panorama dapat menyebabkan aplikasi
-  Kamera mogok.
-  </li>
-</ul>
-
-<h4>Audio</h4>
-<ul>
-  <li>Masalah pemutar audio platform mencegah beberapa aplikasi berfungsi
-  secara normal. Misalnya, Skype dan aplikasi lain terpengaruh oleh masalah ini.
-  </li>
-</ul>
-
-<h4>Konektivitas</h4>
-
-
-<ul>
-  <li>Bila perangkat peran periferal Bluetooth Low Energy (BLE) mengiklankan suatu
-  layanan dan perangkat peran sentral BLE menghubungkan, perangkat peran periferal
-  akan terputus dengan sangat cepat.
-  </li>
-
-  <li>Koneksi Wi-Fi dapat melemah bila layar mati.
-  </li>
-
-  <li>Koneksi RFCOMM tidak stabil serta dapat mengakibatkan kerusakan data dan
-  koneksi yang menggantung.
-  </li>
-
-  <li>Kondisi jaringan aktif ({@link android.net.NetworkInfo#getState
-  NetworkInfo.getState()} dan {@link android.net.NetworkInfo#getDetailedState
-  NetworkInfo.getDetailedState()}) mungkin mengembalikan nilai yang tidak benar selama beberapa
-  skenario latar belakang terbatas.
-  </li>
-</ul>
-
-
-<h4>
-  Peluncur
-</h4>
-
-<ul>
-  <li>Baki All Apps peluncur default mungkin menjadi tidak responsif setelah
-  layar dimatikan/dihidupkan berulang-ulang. Kembali ke layar beranda dan meluncurkan kembali
-  baki All Apps mungkin akan mengatasi masalah ini.
-  </li>
-</ul>
-
-<h4>
-  Keyboard
-</h4>
-
-<ul>
-  <li>Saat memperbarui perangkat yang menjalankan Android 6.0 atau yang sebelum versi N Developer
-  Preview, Keyboard Google tidak menyimpan data preferensi seperti emoji
-  terbaru dan setelan suara.
-  </li>
-
-  <li>Google Indic Managed Keyboard mungkin menjadi tidak stabil.
-  </li>
-
-  <li>Saat memasukkan teks dalam bidang sandi, pengguna bisa memilih bahasa Rusia sebagai
-  bahasa masukan, namun keyboard tetap dalam bahasa Inggris. Hal ini mencegah
-  pengguna memasukkan sandi berbahasa Rusia.
-  </li>
-</ul>
-
-<h4>
-  Lokal dan bahasa
-</h4>
-
-<ul>
-  <li>Saat menggunakan lokal kanan-ke-kiri (RTL), sistem mungkin secara tidak diharapkan
-  beralih ke presentasi kiri-ke-kanan (LTR) setelah menghidupkan ulang perangkat.
-  </li>
-</ul>
-
-<h4>Media</h4>
-
-<ul>
-  <li>Pemutaran media mungkin tidak bisa diandalkan pada Nexus 9 dan Nexus Player, termasuk
-  masalah pemutaran video HD.
-  </li>
-</ul>
-
-<h4>
-  Mode multi-jendela
-</h4>
-
-<ul>
-  <li>Perangkat mungkin macet saat mengubah orientasi dalam mode multi-jendela.
-  </li>
-
-  <li>Beberapa aplikasi saat ini memiliki masalah dengan mode multi-jendela:
-    <ul>
-      <li>UI sistem bisa mogok saat mengubah Settings &gt; Display &gt;
-      Screen brightness ke multi-jendela.
-      </li>
-
-      <li>Aplikasi Kamera mungkin mogok bila diluncurkan dalam mode multi-jendela.
-      </li>
-
-      <li>YouTube mungkin mogok bila diluncurkan dalam mode multi-jendela. Untuk memperbaiki
-      masalah ini, Anda bisa mengosongkan data aplikasi YouTube di Storage &gt; Apps &gt;
-      YouTube.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>
-  Google Play Services
-</h4>
-
-<ul>
-  <li>Aplikasi yang menggunakan Google Cast melalui Google Play Services mungkin menjadi tidak stabil bila
-  pengguna memilih lokal sistem yang menggunakan huruf serta angka di luar
-  rentang ASCII.
-  </li>
-</ul>
-
-<h4>
-  Kebijakan Perangkat Android for Work dan Google Apps
-</h4>
-
-<ul>
-  <li>Aplikasi Device Policy mungkin mogok bila pengguna membuka kunci perangkat dengan
-  layar "status kebijakan perangkat" disematkan.
-  </li>
-
-  <li>Setelah menyiapkan profil kerja dengan enkripsi berbasis file diaktifkan
-  kemudian menonaktifkan Work, pengguna harus membuka kunci layar profil utama untuk sekali
-  lagi mengakses aplikasi Work.
-  </li>
-
-  <li>Perangkat dihidupkan ulang saat membuang kunci pola keamanan dan membuka aplikasi
-  kerja/aplikasi pribadi di multi-jendela.
-  </li>
-
-  <li>Menyetel DISALLOW_VPN_CONFIG menyebabkan dialog persetujuan muncul di
-  always-on-vpn yang disetel oleh Device Policy Client.
-  </li>
-
-  <li>Lalu lintas tidak dikunci hingga VPN terhubung dalam mode always-on-vpn.
-  </li>
-</ul>
-
-<h4>
-  Penyimpanan eksternal
-</h4>
-
-<ul>
-  <li>Aplikasi mungkin menjadi tidak stabil bila pengguna memindahkannya dari penyimpanan internal
-  ke penyimpanan eksternal lepas-pasang (ini termasuk kartu SD atau perangkat yang dihubungkan
-  melalui USB).
-  </li>
-</ul>
-
-<h4>
-  Perbesaran layar dan multi-APK dalam Google Play
-</h4>
-
-<ul>
-  <li>Pada perangkat yang menjalankan Android N, Google Play Services 9.0.83 salah melaporkan
-  kepadatan layar saat ini dibandingkan dengan kepadatan layar stabil. Saat perbesaran
-  layar diaktifkan pada perangkat, hal ini bisa menyebabkan Google Play memilih
-  versi aplikasi multi-APK yang didesain untuk layar yang lebih kecil. Masalah ini
-  telah diperbaiki dalam Google Play Services versi berikutnya dan akan disertakan dalam
-  rilis Developer Preview mendatang.
-  </li>
-
-  <li>Pada perangkat yang menjalankan Android N, Google Play Services 9.0.83 saat ini melaporkan
-  dukungan Vulkan, namun bukan versi Vulkan. Hal ini bisa mengakibatkan Google Play memilih
-  versi aplikasi multi-APK yang didesain untuk mendukung Vulkan yang lebih rendah pada
-  perangkat dengan dukungan versi yang lebih tinggi. Saat ini, Google Play Store tidak
-  menerima unggahan aplikasi yang menggunakan penargetan versi Vulkan. Dukungan ini
-  akan ditambahkan pada Google Play Store di masa mendatang dan diperbaiki dalam
-  Google Play Services versi berikutnya (akan disertakan dalam rilis Developer Preview
-  mendatang). Perangkat N yang menggunakan Google Play Services 9.0.83 akan
-  tetap menerima versi Aplikasi yang menargetkan dukungan Vulkan dasar.
-  </li>
-</ul>
-
-<h4 id="">Pemberitahuan</h4>
-
-<ul>
-  <li>MessagingStyle tidak menampilkan pemberitahuan dengan pengirim "null" (sendiri).
-  </li>
-</ul>
-
-<h4 id="">Alat Pengembang</h4>
-
-<ul>
-  <li>
-    <code>adb</code> mungkin kadang-kadang terputus saat menggunakan debug JDWP.
-  </li>
-</ul>
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-
-
-
-
-
-
-
-<!-- DP2 Release Notes Archive -->
-
-<h2 id="dp2">Developer Preview 2</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Tanggal: April 2016<br>
-        Build: NPC91K, NPC91O<br>
-        Dukungan emulator: x86 &amp; ARM (32/64-bit)<br>
-        Google Play Services: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp2-new">Yang baru di DP2</h3>
-
-<ul>
-  <li>Dukungan platform untuk Vulkan, API rendering 3D baru yang menyediakan
-  kontrol GPU (Graphics Processor Unit) eksplisit dan overhead yang rendah serta menawarkan
-  peningkatan kinerja untuk aplikasi draw-call yang berat. Untuk detailnya, lihat
-  <a href="{@docRoot}ndk/guides/graphics/index.html">dokumentasi</a>.
-  </li>
-
-  <li>Emoji orang yang baru dengan dukungan untuk warna kulit, dan glyph Unicode 9 baru.
-  Warna kulit dan emoji baru tidak akan muncul hingga keyboard membangun dukungan untuknya
-  di palet. Aplikasi tidak perlu melakukan tindakan apa pun untuk memanfaatkan
-  emoji baru ini, kecuali jika aplikasi menggunakan font nonsistem. Pengembang
-  IME perlu menyertakan dukungan untuk emoji baru.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/api-overview.html#launcher_shortcuts">Launcher
-    Shortcuts API</a>: Aplikasi bisa menggunakan <code>ShortcutManager</code> untuk mengirim
-    pintasan ke titik awal dalam aplikasi itu sendiri ke peluncur.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/features/multi-window.html">Multi-Jendela</a>:
-    Anda kini bisa menetapkan tinggi minimum dan lebar minimum secara terpisah untuk suatu
-    aktivitas. Selain itu, beberapa nama API sedikit berubah.
-  </li>
-</ul>
-
-<h4 id="dp2-fixes">Perbaikan untuk masalah yang dilaporkan oleh pengembang</h4>
-
-<p>
-  Banyak masalah yang dilaporkan oleh pengembang telah diperbaiki, termasuk:
-</p>
-
-<ul>
-  <li>Tidak bisa menghubungkan ke SSID tersembunyi atau Wi-Fi yang tidak disiarkan. (bug <a href="https://code.google.com/p/android/issues/detail?id=203116">203116</a>)
-  </li>
-
-  <li>Keadaan mikrofon nonaktif terjadi selama aktivitas. (bug <a href="https://code.google.com/p/android/issues/detail?id=205922">205922</a>)
-  </li>
-
-  <li>Mengubah fokus multi-jendela akan menghentikan YouTube untuk sementara. (bug <a href="https://code.google.com/p/android/issues/detail?id=203424">203424</a>)
-  </li>
-
-  <li>Balasan Langsung mungkin menutup aktivitas yang telah dibuka. (bug <a href="https://code.google.com/p/android/issues/detail?id=204411">204411</a>)
-  </li>
-
-  <li>Berbagai perbaikan stabilitas.
-  </li>
-</ul>
-
-<h3 id="dp2-general">Saran umum</h3>
-
-<p>
-  Rilis Developer Preview ini adalah untuk <strong>pengembang aplikasi saja</strong>
-  dan didesain untuk digunakan dalam pengujian kompatibilitas serta pengembangan awal saja.
-  Harap perhatikan catatan umum tentang rilis ini:
-</p>
-
-<ul>
-
-  <li>Komponen alat pengembangan dan pustaka dukungan telah diperbarui
-  untuk rilis DP2. Pastikan memperbarui lingkungan pengembangan pratinjau Anda
-  sebelum mengembangkan untuk DP2. Untuk petunjuk mengenai persiapan lingkungan
-  pengembangan Anda, lihat
-  <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pratinjau</a>.
-  </li>
-
-  <li>Rilis ini memiliki berbagai masalah stabilitas dan kinerja pada semua perangkat
-  yang membuatnya <strong>tidak cocok untuk penggunaan sehari-hari pada ponsel atau tablet</strong>,
-  terutama untuk selain pengembang.
-  </li>
-
-  <li>Daya tahan dan kinerja baterai belum dioptimalkan pada rilis
-  ini:
-
-    <ul>
-      <li>Kinerja <strong>sistem dan aplikasi diketahui lambat/
-      melempem pada waktu-waktu tertentu</strong>, dan perangkat kadang-kadang tidak responsif. Masalah-masalah
-      ini bisa menjadi lebih akut pada penggunaan yang lama.
-      </li>
-
-      <li>Daya tahan baterai mungkin melemah dalam rilis ini untuk kasus penggunaan layar hidup dan
-      layar mati.
-      </li>
-    </ul>
-  </li>
-
-  <li>Beberapa <strong>aplikasi mungkin tidak berfungsi dengan normal</strong> pada Developer Preview
-  2. Termasuk aplikasi Google serta aplikasi lainnya.
-  </li>
-
-  <li>Build awal ini bukan <strong>Compatibility Test Suite (CTS)
-  yang disetujui</strong>. Aplikasi yang bergantung pada build yang disetujui CTS tidak akan berfungsi
-  (Android Pay misalnya).
-  </li>
-
-  <li>Rilis pratinjau ini mendukung perangkat berikut: Nexus 5X, Nexus 6,
-  Nexus 6P, Nexus 9, dan Pixel C, serta General Mobile 4G
-  (Android One). Dukungan untuk Nexus Player segera hadir.
-  </li>
-
-
-  <li><a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> telah
-  diperbarui untuk menangani perubahan API antara DP1 dan DP2.
-  </li>
-</ul>
-
-<h3 id="dp2-ki">Masalah yang Diketahui</h3>
-
-<h4>Kinerja dan baterai</h4>
-
-<ul>
-  <li>Kinerja sistem dan aplikasi diketahui <strong>lambat/
-  melempem pada waktu-waktu tertentu</strong>, dan perangkat kadang-kadang tidak responsif. Masalah-masalah
-   ini bisa menjadi lebih akut pada penggunaan yang lama.
-  </li>
-</ul>
-
-<h4>Akun Google</h4>
-
-<ul>
-  <li>Dalam beberapa situasi, bisa jadi ada masalah dengan
-  <code>AccountManagerService</code> yang mencegah masuk ke akun Google
-  </li>
-</ul>
-
-<h4>Pemutakhiran sistem</h4>
-
-<ul>
-  <li>Perangkat mungkin langsung dihidupkan ulang setelah memperbarui ke DP2.
-  </li>
-</ul>
-
-<h4>Aksesibilitas</h4>
-
-<ul>
-  <li>Ada masalah dalam mendengarkan keluaran teks-ke-suara (TTS) bila pitch disetel
-  mendekati level maksimum.
-  </li>
-</ul>
-
-<h4>Bluetooth</h4>
-
-<ul>
-  <li>Karakteristik Bluetooth Low Energy (LE) GATT menggunakan tipe tulisan
-  yang salah dan tidak akan dikirim ke perangkat jauh. Karena itu, misalnya, beberapa perangkat
-  kebugaran tidak akan berfungsi.
-  </li>
-</ul>
-
-<h4>Wizard persiapan</h4>
-
-<ul>
-  <li>Opsi untuk memulihkan data pada perangkat baru (atau perangkat yang baru disetel ulang) dari
-  "Your Google Account" tidak dapat digunakan dari wizard persiapan. Anda harus memulihkan
-  data dari perangkat yang ada dengan memilih "another Android device" dalam
-  wizard persiapan, atau siapkan sebagai perangkat baru.
-  </li>
-</ul>
-
-<h4>Buka kunci OEM</h4>
-
-<ul>
-  <li>Pada beberapa perangkat, <strong>Enable OEM unlock</strong> dalam "Developer Options", berwarna abu-abu
-  saat menjalankan DP2.<br>
-  <strong>Solusi:</strong> Ikuti
-  Android Beta Program (jika Anda belum mengikuti) dengan mengunjungi
-  <a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a>. Kemudian, keluar dan terima
-  OTA turunkan versi. Keluar dari program akan menyebabkan perangkat turun versi ke Android 6.0. Anda
-  seharusnya sekarang bisa memilih <strong>Enable OEM unlock</strong> dalam
-  "Developer Options". Data pribadi akan dihapus bila Anda turunkan versi
-  perangkat; akan tetapi, membuka kunci bootloader akan menghapus data ini.
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>Work Security Challenge
-    <ul>
-      <li>Setelah migrasi ke N, atau setelah pengguna membuat profil kerja, profil
-      kerja tidak bisa membuat kunci-kunci dalam keystore hingga pengguna mengubah pola,
-      PIN, atau sandi mereka, atau menyiapkan Work Challenge.
-      </li>
-
-      <li>Dalam mode Direct Boot, menerapkan batasan kode sandi pada perangkat
-      menyebabkan profil kerja tidak terkunci, meskipun perangkat terkunci.
-      Hal ini membuat profil kerja bisa diakses meskipun seharusnya dilindungi
-      oleh layar kunci perangkat.
-      </li>
-    </ul>
-  </li>
-
-  <li>Always-On VPN
-    <ul>
-      <li>Jika mode Always-On VPN diaktifkan, namun VPN tidak tersedia, aplikasi
-      akan menghubungkan melalui jaringan biasa. Aplikasi seharusnya offline jika tidak
-      tersedia koneksi VPN.
-      </li>
-
-      <li>Bila mode Always-On aktif, koneksi VPN tidak akan dibuat setelah
-      perangkat dihidupkan ulang ke dalam mode Direct Boot, bahkan setelah pengguna membuka kunci
-      layar kunci aman.
-      </li>
-    </ul>
-  </li>
-
-  <li>Paket Ditangguhkan
-    <ul>
-      <li>Admin perangkat bisa menangguhkan paket sistem penting, yang dapat menyebabkan
-      perilaku yang tidak diharapkan, seperti melakukan panggilan meskipun dialog "Telephone
-      disabled" sedang ditampilkan.
-      </li>
-    </ul>
-  </li>
-
-  <li>Lainnya
-    <ul>
-      <li>Aplikasi Settings akan mogok saat dibuka jika {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} disetel ke true bila
-      pengguna memasukkan media fisik seperti kartu SD.
-      </li>
-
-      <li>Proses masuk pertama ke Profil Kerja membutuhkan waktu
-      beberapa menit.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4 id="vulkan">Vulkan</h4>
-
-<ul>
-   <li>Nexus 5X/6P</li>
-   <ul>
-      <li>Selisih antara angka-angka yang mengikat dan selain nol
-      sebagai angka pengikat pertama menyebabkan {@code vkCreateGraphicsPipeline()} gagal.</li>
-      <li>Vulkan menunjukkan perilaku sampling yang salah pada koordinat tekstur yang diproyeksikan.</li>
-      <li>dalam contoh multithreadCmdBuffer, {@code vkCmdClearColorImage()} mengalami mogok bila
-      dijalankan dengan driver N-DP2.</li>
-      <li>Nilai kembalian dari {@code vkGetPhysicalDeviceFormatProperties()} tidak menyetel nilai
-      untuk {@code VkFormatProperties::linearTilingFeatures}, yang mengambil nilai 0 sebagai
-      hasil.</li>
-      <li>Lampiran buffer bingkai titik ambang Vulkan tidak ditangani dengan benar.</li>
-    </ul>
-   <li>Nexus Player</li>
-   <ul>
-      <li>SPIR-V shader mungkin memicu pernyataan driver.</li>
-      <li>Beberapa konfigurasi pipeline mungkin menyebabkan {@code vkCreateGraphicsPipeline()}
-      mogok.</li>
-  </ul>
-</ul>
-
-<h4>Masalah perangkat tertentu</h4>
-
-<dl>
-  <dt>
-    <strong>Android One</strong>
-  </dt>
-
-  <dd>
-    Koneksi data gagal bila perangkat dipindah dari slot 1 SIM ke slot 2 SIM.
-  </dd>
-
-  <dt>
-    <strong>Pixel C</strong>
-  </dt>
-
-  <dd>
-    Tidak bisa mengubah opsi "Always On" untuk Voice Search.
-  </dd>
-
-  <dt>
-    <strong>Nexus 6</strong>
-  </dt>
-
-  <dd>
-    Gambar kamera dalam orientasi potret rusak, kecuali untuk foto
-   HDR+.
-  </dd>
-
-  <dt>
-    <strong>Nexus Player</strong>
-  </dt>
-
-  <dd>
-    Pemutaran materi HD Netflix mungkin gagal pada Nexus Player.
-  </dd>
-
-  <dd>
-    Aplikasi yang bergantung pada perubahan resolusi video dinamis mungkin gagal pada
-   Nexus Player.
-  </dd>
-
-  <dd>
-    Aplikasi yang menggunakan codec video VP9 mungkin gagal pada Nexus Player.
-  </dd>
-</dl>
-
-<!-- DP 1 release notes archive -->
-
-<h2 id="dp1">Developer Preview 1</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Tanggal: Maret 2016<br>
-        Build: NPC56P, NPC56R, diperbarui: NPC56W, NPC56X<br>
-        Dukungan emulator: x86 &amp; ARM (32/64-bit)<br>
-        Google Play Services: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp1-general">Saran umum</h3>
-
-<p>
-  Rilis Developer Preview ini adalah untuk pengembang aplikasi saja dan didesain untuk
-  digunakan dalam pengujian kompatibilitas serta pengembangan awal saja. Harap perhatikan
-  catatan umum tentang rilis ini:
-</p>
-<ul>
-  <li>Rilis ini memiliki berbagai masalah stabilitas dan kinerja pada semua perangkat
-  yang membuatnya <em>tidak cocok untuk penggunaan sehari-hari pada ponsel atau tablet</em>,
-  terutama untuk selain pengembang.
-  </li>
-
-  <li>Kinerja sistem dan aplikasi diketahui <strong>lambat/
-  melempem pada waktu-waktu tertentu</strong>, dan perangkat kadang-kadang tidak responsif. Masalah-masalah
-   ini bisa menjadi lebih akut pada penggunaan yang lama.
-  </li>
-
-  <li>Daya tahan baterai mungkin melemah dalam rilis ini untuk kasus penggunaan layar hidup dan
-  layar mati.
-  </li>
-
-  <li>Beberapa aplikasi mungkin tidak berfungsi dengan normal pada Developer Preview 1.
-  Termasuk aplikasi Google serta aplikasi lainnya.
-  </li>
-
-  <li>Build awal ini bukan Compatibility Test Suite (CTS) yang disetujui. Aplikasi
-  yang bergantung pada build yang disetujui CTS tidak akan berfungsi (Android Pay misalnya).
-  </li>
-
-  <li>Rilis pratinjau ini mendukung perangkat berikut: Nexus 5X, Nexus 6,
-  Nexus 6P, Nexus 9, Nexus Player, dan Pixel C, serta General Mobile 4G
-  (Android One).
-  </li>
-</ul>
-
-<h3 id="dp1-platform">Masalah Platform</h3>
-
-<h4>Kinerja dan baterai</h4>
-
-<ul>
-  <li>Kinerja sistem dan aplikasi diketahui <strong>lambat/
-  melempem pada waktu-waktu tertentu</strong>, dan perangkat kadang-kadang tidak responsif. Masalah-masalah
-   ini bisa menjadi lebih akut pada penggunaan yang lama.
-  </li>
-
-  <li>Daya tahan baterai mungkin melemah dalam rilis ini untuk kasus penggunaan layar hidup dan
-  layar mati.
-  </li>
-</ul>
-<h4 id="dialer">Telepon</h4>
-
-<ul>
-  <li>Aplikasi telepon tidak mendukung Direct Boot. Hal ini nanti akan ditangani dalam
-  N Developer Preview.
-  </li>
-
-  <li>Pemutaran pesan suara tidak berfungsi.
-  </li>
-</ul>
-
-<h4>Mikrofon</h4>
-
-<ul>
-   <li>Sistem mungkin keliru mempertahankan mikrofon dalam keadaan nonaktif di semua aplikasi dan saat menghidupkan ulang. Jika Anda menonaktifkan mikrofon di aplikasi dan kondisi ini terus bertahan, buka aplikasi apa saja yang memiliki kontrol untuk menonaktifkan mikrofon dan aktifkan mikrofon.</li>
-</ul>
-
-<h4 id="ui">UI sistem</h4>
-
-<ul>
-  <li>Beberapa string baru atau yang dimodifikasi dalam UI sistem tidak diterjemahkan ke semua
-   bahasa.
-  </li>
-
-  <li>UI ringkasan masih dalam pengembangan, dan masih mungkin berubah. Misalnya,
-  kami bermaksud membuang timer yang muncul bila pengguna beralih
-  aplikasi.
-  </li>
-
-  <li>Kontrol setelan dan peralihannya mungkin menjadi lambat atau tampak tidak responsif.
-  </li>
-
-  <li>Desain visual pemberitahuan masih bisa berubah.
-  </li>
-
-  <li>Dalam aplikasi Gmail, pengarsipan email secara langsung yang disertakan dalam bundel
-   pemberitahuan tidak berfungsi dengan benar.
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>Work Security Challenge
-    <ul>
-      <li>Setelah migrasi ke N, atau setelah pengguna membuat profil kerja, profil
-      kerja tidak bisa membuat kunci-kunci dalam keystore hingga pengguna mengubah pola,
-      PIN, atau sandi mereka, atau menyiapkan Work Challenge.
-      </li>
-
-      <li>Dalam mode Direct Boot, menerapkan batasan kode sandi pada perangkat
-      menyebabkan profil kerja tidak terkunci, meskipun perangkat terkunci.
-      Hal ini membuat profil kerja bisa diakses meskipun seharusnya dilindungi
-      oleh layar kunci perangkat.
-      </li>
-
-      <li>Bila pengguna memasukkan sandi dan pin yang salah, sistem tidak akan
-   menampilkan pesan informasi; sistem hanya mengosongkan bidang
-   masukan. Masalah ini tidak memengaruhi masukan pola atau sidik jari.
-      </li>
-
-      <li>Pada tablet, latar belakang yang ditampilkan bersama pertanyaan kerja
-  berukuran kecil dan tidak proporsional.
-      </li>
-
-      <li>Versi <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">
-        Google Apps Device Policy</a> yang dibundel bersama N Developer Preview
-        belum mendukung fitur Pertanyaan Keamanan Profil Kerja.
-        Pengembang seharusnya menggunakan <a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a>
-        untuk menguji fitur ini.
-      </li>
-    </ul>
-  </li>
-
-  <li>Always-On VPN
-    <ul>
-      <li>Jika mode Always-On VPN diaktifkan, namun VPN tidak tersedia, aplikasi
-      yang tidak dinyatakan sebagai pengecualian pada kebijakan Always On akan menghubungkan melalui
-      jaringan biasa. Kecuali jika ditetapkan sebagai pengecualian pada kebijakan Always-On VPN,
-      aplikasi seharusnya offline jika tidak tersedia koneksi VPN.
-        <ul>
-          <li>Bila mode Always On aktif, koneksi VPN tidak akan dibuat
-          setelah perangkat dihidupkan ulang ke dalam mode Direct Boot, bahkan
-          setelah pengguna membuka kunci layar kunci aman.
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>Kontak yang Ditingkatkan
-    <ul>
-      <li>Perangkat Bluetooth PBAP/MAP tidak menampilkan nomor penelepon untuk kontak
-      kerja. Rilis Pratinjau berikutnya akan mengatasi masalah ini.
-      </li>
-    </ul>
-  </li>
-
-  <li>Mode Kerja
-    <ul>
-      <li>Peluncur Google Now tidak menampilkan apakah Mode Kerja aktif atau
-      nonaktif. Peluncur juga tidak menunjukkan kondisi penangguhan aplikasi.
-      </li>
-
-      <li>Setelah pengguna menonaktifkan lalu mengaktifkan Mode Kerja, sistem tidak lagi menampilkan
-   widget aplikasi Profil Kerja, seperti Kalender.
-      </li>
-    </ul>
-  </li>
-
-  <li>Paket Ditangguhkan
-  </li>
-
-  <li>Admin perangkat bisa menangguhkan paket sistem penting, yang dapat menyebabkan
-  perilaku yang tidak diharapkan, seperti melakukan panggilan meskipun dialog Telephone
-  disabled sedang ditampilkan.
-  </li>
-
-  <li>Lainnya
-    <ul>
-      <li>Aplikasi Settings akan mogok saat dibuka jika {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} disetel ke true bila
-      pengguna memasukkan media fisik seperti kartu SD.
-      </li>
-
-      <li>Keadaan {@code DPM.setPackagesSuspended} tidak akan bertahan bila
-  pengguna mencopot pemasangan kemudian memasang kembali aplikasi tersebut. Aplikasi harus tetap
-      ditangguhkan setelah mencopot pemasangan/pemasangan ulang, atau aplikasi tidak boleh
-      dicopot pemasangannya
-      </li>
-
-      <li>Proses masuk pertama ke Profil Kerja membutuhkan waktu
-      beberapa menit. Hal ini dapat menyebabkan perangkat membutuhkan waktu lebih lama dari biasanya untuk
-      terlihat di Play EMM API.
-      </li>
-
-      <li>Pemberitahuan dari aplikasi Profil Kerja tidak tampak bagi listener
-  pemberitahuan yang terpasang di profil pribadi. Akibatnya, sistem tidak
-      menampilkan Pemberitahuan seperti yang diharapkan.
-      </li>
-
-    </ul>
-  </li>
-</ul>
-
-<h4 >Keyboard</h4>
-
-<ul>
-  <li>Penyandingan Bluetooth antara keyboard dan perangkat Android mungkin menjadi tidak stabil.
-  </li>
-</ul>
-
-<h4 >Video</h4>
-
-<ul>
-<li>Pemutaran video mungkin mengalami selisih waktu dan menunjukkan interupsi.</li>
-</ul>
-
-<h4>Wi-Fi</h4>
-
-<ul>
-  <li>Wi-Fi telah menjalani beberapa optimalisasi yang mungkin mengubah perilaku kasus patologis
-  API. Khususnya, aplikasi yang berusaha menghubungkan ke jaringan
-  tertentu, atau berusaha menghubungkan kembali ke jaringan harus mengulang pengujian.
-  </li>
-
-  <li>Klien DHCP lawas telah dibuang dari platform. Satu-satunya klien DHCP
-   yang didukung platform adalah klien DHCP yang diperkenalkan di M.
-  </li>
-</ul>
-
-<h4>Direct Boot</h4>
-
-<ul>
-  <li>NFC tidak berfungsi hingga pembukaan kunci pertama.
-    <ul>
-      <li>Bila telepon berkemampuan Bluetooth dihidupkan ulang, Bluetooth tidak akan
-      aktif secara otomatis. Anda harus mengaktifkan kembali Bluetooth secara manual.
-      </li>
-
-      <li>Dalam beberapa situasi, nada dering default mungkin tidak terdengar untuk
-      panggilan telepon dan pesan. Perilaku ini telah diperbaiki dalam rilis N Preview berikutnya,
-      dengan satu pengecualian (dan solusi):
-      </li>
-
-      <li>Pada perangkat yang bukan baru dikosongkan--perangkat yang telah booting setidaknya
-      sekali sejak disetel ke mode Direct Boot--nada dering pemberitahuan
-      default tidak berbunyi. Pengguna bisa mengatasi masalah ini dengan
-      memilih nada dering dari Settings secara manual.
-      </li>
-
-      <li>Direct Boot tidak diaktifkan secara default pada perangkat yang menjalankan build N
-      Developer Preview. Untuk mengaktifkan Direct Boot untuk pengujian dan
-      pengembangan, masuklah ke Developer Option dan ketuk Convert to File Encryption.
-      Dalam Developer Preview ini perlu penyetelan ulang pabrik untuk membagi ulang dan
-      memformat ulang perangkat Anda bagi File-based Encryption.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Gambar-dalam-gambar untuk Android TV</h4>
-
-<ul>
-  <li>Integrasi PIP dalam Recents UI belum final, dan masih bisa
-  berubah.
-    <ul>
-      <li>Animasi jendela PIP belum halus. Rilis Pratinjau
-      mendatang akan memperbaiki hal ini.
-      </li>
-    </ul>
-  </li>
-
-  <li style="list-style: none">Rilis Pratinjau mendatang akan memperbaiki
-  desain visual dan perapian layout PIP.
-  </li>
-</ul>
-
-<h4>Laporan bug</h4>
-
-<ul>
-  <li>Laporan bug tidak selalu berhasil diselesaikan (seperti solusi,
-  kadang-kadang masih bisa diakses melalui penyedia dokumen laporan bug
-  di penyimpanan internal).
-  </li>
-</ul>
-
-<h4>Layar terbagi Multi-jendela</h4>
-
-<ul>
-  <li>Aplikasi bisa mengalami mogok dan perilaku UI yang tidak diharapkan bila ditempatkan dalam
-  mode layar terbagi. Ini adalah masalah aplikasi yang harus diperbaiki oleh pengembang
-  aplikasi.
-  </li>
-
-  <li>Bila aplikasi menargetkan versi platform Android sebelum N, maka
-  aplikasi mungkin tidak berfungsi pada layar terbagi dan toast mungkin muncul berkali-kali.
-  </li>
-
-  <li>Menekan lama tombol Ringkasan saat menggunakan aplikasi dengan orientasi
-  tetap mungkin menghasilkan perilaku aplikasi yang tidak diharapkan.
-  </li>
-
-  <li>Aplikasi mungkin berkedip saat mengubah ukurannya.
-  </li>
-
-  <li>Animasi belum final.
-  </li>
-</ul>
-
-<h4>Metode masukan</h4>
-
-<ul>
-  <li>Google Keyboard secara tidak diharapkan kembali ke keyboard Google generik
-  bila <b>menggunakan bahasa sistem</b>, namun Google Keyboard tidak mendukung
-  bahasa yang dipilih dalam preferensi bahasa sistem. Ia akan kembali
-  ke American English.
-    <p>
-      Anda bisa mengatasi masalah ini dengan menambahkan setidaknya satu bahasa yang didukung
-  Keyboard Google.
-    </p>
-  </li>
-</ul>
-
-<h4>Aksesibilitas</h4>
-
-<ul>
-  <li>TalkBack menunjukkan masalah pada beberapa fitur termasuk Pemberitahuan, petak
-  Quick Settings dan tampilan Multi-jendela yang mungkin menyebabkan sistem mogok atau
-  tidak ada masukan lisan dari TalkBack. Rilis pratinjau mendatang akan
-  menangani masalah ini.
-  </li>
-</ul>
-
-<h3 id="dp1-device-sp">Masalah dan Catatan untuk Perangkat Tertentu</h3>
-
-<h4>Nexus Player</h4>
-<ul>
-  <li>Pemutaran video, kompatibilitas aplikasi, dan masalah stabilitas telah antisipasi pada
-  Nexus Player dalam rilis Pratinjau ini.
-  </li>
-</ul>
-
-<h4>Pixel C</h4>
-<ul>
-<li>Mengubah ukuran multi-jendela bisa menyebabkan mogok.</li>
-</ul>
-
-<h4>Nexus 9</h4>
-<ul>
-<li>Perangkat Nexus 9 mungkin tidak jalan setelah menerima pembaruan lewat jaringan seluler (OTA)
-  via Android Beta Program. Untuk memulihkan dari masalah ini, Anda bisa mencoba
-  pasang citra OTA secara manual. Untuk informasi selengkapnya, lihat
-  <a href="{@docRoot}preview/download-ota.html">Menerapkan Citra OTA Perangkat</a>.
-</li>
-</ul>
-
diff --git a/docs/html-intl/intl/in/preview/features/direct-boot.jd b/docs/html-intl/intl/in/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/in/preview/features/direct-boot.jd
rename to docs/html-intl/intl/in/training/articles/direct-boot.jd
index b06a7dd..a7e3cf3 100644
--- a/docs/html-intl/intl/in/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/in/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Dalam dokumen ini</h2>
   <ol>
     <li><a href="#run">Meminta Akses untuk Berjalan Selama Direct Boot</a></li>
diff --git a/docs/html-intl/intl/in/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/in/training/articles/scoped-directory-access.jd
similarity index 92%
rename from docs/html-intl/intl/in/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/in/training/articles/scoped-directory-access.jd
index d557e96..30aed6f 100644
--- a/docs/html-intl/intl/in/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/in/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Dalam dokumen ini</h2>
   <ol>
     <li><a href="#accessing">Mengakses Direktori Penyimpanan Eksternal</a></li>
@@ -71,8 +71,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>Gambar 1.</strong> Sebuah aplikasi yang meminta
 akses ke direktori Pictures.</p>
 
@@ -138,8 +138,8 @@
 pengguna yang buruk. Jika permintaan ditolak oleh pengguna, dan aplikasi meminta akses
 lagi, UI akan menampilkan kotak centang <b>Don't ask again</b>:</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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-dont-ask_2x.png 2x" />
 <p class="img-caption"><strong>Gambar 1.</strong> Sebuah aplikasi membuat
 permintaan kedua untuk mengakses media lepas-pasang.</p>
 
diff --git a/docs/html-intl/intl/in/preview/features/security-config.jd b/docs/html-intl/intl/in/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/in/preview/features/security-config.jd
rename to docs/html-intl/intl/in/training/articles/security-config.jd
index 7a0303e..e13429d 100644
--- a/docs/html-intl/intl/in/preview/features/security-config.jd
+++ b/docs/html-intl/intl/in/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Dalam dokumen ini</h2>
 <ol>
diff --git a/docs/html-intl/intl/in/preview/features/data-saver.jd b/docs/html-intl/intl/in/training/basics/network-ops/data-saver.jd
similarity index 99%
rename from docs/html-intl/intl/in/preview/features/data-saver.jd
rename to docs/html-intl/intl/in/training/basics/network-ops/data-saver.jd
index 6cd64d2..abd4e43 100644
--- a/docs/html-intl/intl/in/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/in/training/basics/network-ops/data-saver.jd
@@ -4,8 +4,8 @@
 page.image=images/cards/card-nyc_2x.jpg
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>
       Dalam dokumen ini
     </h2>
@@ -231,4 +231,4 @@
     Membuang UID paket tertentu dari daftar putih untuk memblokir
     penggunaan data berkuota di latar belakang saat Data Saver diaktifkan.
   </dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html-intl/intl/in/preview/features/picture-in-picture.jd b/docs/html-intl/intl/in/training/tv/playback/picture-in-picture.jd
similarity index 97%
rename from docs/html-intl/intl/in/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/in/training/tv/playback/picture-in-picture.jd
index 5df3e5d..41af6de 100644
--- a/docs/html-intl/intl/in/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/in/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Dalam dokumen ini</h2>
 <ol>
@@ -59,7 +59,7 @@
 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" />
+<img src="{@docRoot}images/android-7.0/pip-active.png" />
 <p class="img-caption"><strong>Gambar 1.</strong> Video
 Gambar-dalam-gambar terlihat di sudut layar selagi pengguna menjelajahi materi pada layar
 utama.</p>
@@ -116,7 +116,7 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>Gambar 1.</strong> Tombol
 gambar-dalam-gambar pada baris kontrol media.</p>
 
diff --git a/docs/html-intl/intl/in/preview/features/tv-recording-api.jd b/docs/html-intl/intl/in/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/in/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/in/training/tv/tif/content-recording.jd
index afedf8f..3389dbf 100644
--- a/docs/html-intl/intl/in/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/in/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Dalam dokumen ini</h2>
   <ol>
     <li><a href="#supporting">Menunjukkan Dukungan untuk Perekaman</a></li>
diff --git a/docs/html-intl/intl/ja/preview/guide.jd b/docs/html-intl/intl/ja/about/versions/marshmallow/android-6.0-testing.jd
similarity index 98%
rename from docs/html-intl/intl/ja/preview/guide.jd
rename to docs/html-intl/intl/ja/about/versions/marshmallow/android-6.0-testing.jd
index f56fc66..9f03412 100644
--- a/docs/html-intl/intl/ja/preview/guide.jd
+++ b/docs/html-intl/intl/ja/about/versions/marshmallow/android-6.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>このドキュメントの内容</h2>
       <ol>
         <li><a href="#runtime-permissions">パーミッションをテストする</a></li>
diff --git a/docs/html-intl/intl/ja/preview/behavior-changes.jd b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0-changes.jd
similarity index 98%
rename from docs/html-intl/intl/ja/preview/behavior-changes.jd
rename to docs/html-intl/intl/ja/about/versions/nougat/android-7.0-changes.jd
index c112504c..0fd9412 100644
--- a/docs/html-intl/intl/ja/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>このドキュメントの内容</h2>
 
@@ -77,7 +77,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>図 1.</strong> Doze が第 1 レベルのシステム アクティビティ制限を適用して、電池寿命を改善
 
@@ -96,7 +96,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" />
 <p class="img-caption">
   <strong>図 2.</strong> 端末がしばらくの間静止状態になると、Doze が第 2 レベルのシステム アクティビティ制限を適用する
 
@@ -282,10 +282,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/ja/preview/samples.jd b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0-samples.jd
similarity index 80%
rename from docs/html-intl/intl/ja/preview/samples.jd
rename to docs/html-intl/intl/ja/about/versions/nougat/android-7.0-samples.jd
index ec3f9f7..9a50ff7 100644
--- a/docs/html-intl/intl/ja/preview/samples.jd
+++ b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <h3 id="mw">マルチ ウィンドウ Playground</h3>
-<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<img src="{@docRoot}images/android-7.0/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
 <p>
   このサンプルでは、自身のアプリでマルチ ウィンドウのユーザー インターフェースを使用する方法をご確認いただけます。
 
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   NotificationCompat を使用して通知を送信するシンプルなサービスをご確認いただける既存のサンプルです。
 ユーザーからの未読メッセージは、それぞれ別の通知として送信されます。
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
 <p>
   1 つのアプリで表示している通知の件数を NotificationManager で取得する方法をご確認いただける既存のサンプルです。
 
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   このサンプルでは、端末の暗号化ストレージ内のデータにアクセスしたり、データを保存したりする方法をご確認いただけます。この機能は端末が起動している間は常に有効です。
 
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   このサンプルでは、より少ないパーミッションで、特定のディレクトリに対するデータの読み出しや書き込みを行う方法をご確認いただけます。
 
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">GitHub でサンプルを入手</a>
 
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/ja/preview/guide.jd b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0-testing.jd
similarity index 98%
copy from docs/html-intl/intl/ja/preview/guide.jd
copy to docs/html-intl/intl/ja/about/versions/nougat/android-7.0-testing.jd
index f56fc66..9f03412 100644
--- a/docs/html-intl/intl/ja/preview/guide.jd
+++ b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>このドキュメントの内容</h2>
       <ol>
         <li><a href="#runtime-permissions">パーミッションをテストする</a></li>
diff --git a/docs/html-intl/intl/ja/preview/api-overview.jd b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0.jd
similarity index 98%
rename from docs/html-intl/intl/ja/preview/api-overview.jd
rename to docs/html-intl/intl/ja/about/versions/nougat/android-7.0.jd
index d967a67..732b014 100644
--- a/docs/html-intl/intl/ja/preview/api-overview.jd
+++ b/docs/html-intl/intl/ja/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>主なデベロッパー機能</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -78,7 +78,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
 <p class="img-caption">
   <strong>図 1.</strong> 分割画面モードで実行されているアプリ
 </p>
@@ -142,15 +142,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -277,7 +277,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>図 4.</strong> [Settings] でのデータセーバー
@@ -357,7 +357,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
 
 <p class="img-caption" style="padding-left:2em;">
   <strong>図 5.</strong> 通知シェードにあるクイック設定タイル
diff --git a/docs/html-intl/intl/ja/preview/index.jd b/docs/html-intl/intl/ja/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/ja/preview/index.jd
rename to docs/html-intl/intl/ja/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/ja/design/patterns/notifications.jd b/docs/html-intl/intl/ja/design/patterns/notifications.jd
deleted file mode 100644
index 8c5b6ba..0000000
--- a/docs/html-intl/intl/ja/design/patterns/notifications.jd
+++ /dev/null
@@ -1,872 +0,0 @@
-page.title=通知
-page.tags="notifications","design","L"
-@jd:body
-
-  <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>デベロッパー文書</h3>
-    <p>ユーザーに通知する</p>
-  </div>
-</a>
-
-<a class="notice-designers" href="notifications_k.html">
-  <div>
-    <h3>Android 4.4 以前での通知</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>ビデオ</h3>
-    <p>DevBytes:Notifications in the Android L Developer Preview</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>通知システムを使用すると、ユーザーは友人からの新しいチャット メッセージやカレンダー イベントなど、自分に関係のあるタイムリーなイベントについてアプリで常に通知を受けることができます。通知は、重要な出来事が起こるとすぐに知らせてくれるニュース チャンネルであり、ユーザーが意識していない間に出来事を時系列的に記録するログであると捉えることができます &mdash; さらに、すべての Android 端末で適宜同期されます。
-
-
-
-
-
-</p>
-
-<h4 id="New"><strong>Android 5.0 での新機能</strong></h4>
-
-<p>Android 5.0 において、通知は構造的に、視覚的に、機能的に重要なアップデートを受信します。
-</p>
-
-<ul>
-  <li>通知は、新しいマテリアル デザインのテーマにあわせて外観が変更されているところす。
-</li>
-  <li> 端末のロック画面で通知を利用できるようになりましたが、機密性の高いコンテンツはこれからも非表示にできます。
-
-</li>
-  <li>端末の使用中に受信した高優先度の通知において、ヘッドアップ通知と呼ばれる新しい形式が使用されるようになりました。
-</li>
-  <li>クラウド同期通知: 所有する Android 端末のどれかで通知を却下すると、他でも却下されます。
-
-</li>
-</ul>
-
-<p class="note"><strong>注</strong>: このバージョンの Android での通知設計は、従来のバージョンから大きく変わっています。
-
-これまでのバージョンの通知設計について詳しくは、<a href="./notifications_k.html">Android 4.4 以前での通知</a>をご覧ください。
-</p>
-
-<h2 id="Anatomy">通知の仕組み</h2>
-
-<p>このセクションでは、通知の基本パーツと各種端末における通知の表示について詳しく説明します。
-</p>
-
-<h3 id="BaseLayout">基本レイアウト</h3>
-
-<p>あらゆる通知の最低限の基本レイアウトは次のようになっています。</p>
-
-<ul>
-  <li> 通知の<strong>アイコン</strong>。このアイコンは通知元のアプリを示します。複数タイプの通知を生成するアプリでは、通知のタイプを示すことがあります。
-
-
-</li>
-  <li> 通知の<strong>タイトル</strong>と追加<strong>テキストメッセージ</strong>。
-</li>
-  <li> <strong>タイムスタンプ</strong>。</li>
-</ul>
-
-<p>従来のプラットフォーム バージョンの {@link android.app.Notification.Builder Notification.Builder} で作成された通知は、Android 5.0 でも同じように表示され、機能します。スタイルにいくらかの違いがありますが、システムが対処します。
-
-
-従来のバージョンの Android での通知について詳しくは、<a href="./notifications_k.html">Android 4.4 以前での通知</a>をご覧ください。
-
-</p></p>
-
-
-    <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      ユーザー フォトと通知アイコンを使用した、携帯端末での通知(左)と Wear での同じ通知(右)
-
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">展開レイアウト</h3>
-
-
-<p>通知にどこまでの詳細を表示するかを選択できます。
-メッセージの最初の数行を表示したり、大きな画像プレビューを表示したりできます。
-追加情報はユーザーにより多くのコンテキストを提供し、&mdash;場合によっては&mdash;メッセージ全体が表示されることもあります。
-
-
-ユーザーは、ピンチ ズームまたは 1 本指のスワイプで、コンパクトなレイアウトと展開されたレイアウトを切り替えることができます。
-
-
- 1 つのイベントに関する通知に対し、Android では 3 種類の展開レイアウト(テキスト、受信トレイ、画像)をアプリケーションで使用できるようにしています。
-
-次の図に、1 つのイベントに関する通知が携帯端末(左)とウェアラブル(右)でどのように見えるかを示します。
-
-</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">アクション</h3>
-
-<p>Android では、通知の最下部に表示されるオプションのアクションをサポートしています。ここに示されるアクションを使用することで、ユーザーは特定の通知に対するほとんどの一般的なタスクを通知シェードで処理でき、通知元のアプリケーションを開く必要はありません。これによりやり取りがスピードアップし、スワイプで却下もできることから、ユーザーは自分に関係のある通知に集中しやすくなります。
-
-
-
-
-
-</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" />
-
-
-
-<p style="clear:both">通知に含めるアクションの数はほどほどに抑えることをお勧めします。
-含めるアクションを増やすほど、わかりにくくなるからです。
-もっとも差し迫った意味のある重要なアクションだけにして、アクションの数を最小限に抑えてください。
-
-
-</p>
-
-<p>通知に対するアクションとして好ましい候補は次のとおりです。</p>
-
-<ul>
-  <li> 表示するコンテンツ タイプに欠かせず、よく使われ、典型的である
-
-  <li> ユーザーがタスクを手早く完了できる
-</ul>
-
-<p>次のようなアクションは避けてください。</p>
-
-<ul>
-  <li> あいまいである
-  <li> 通知のデフォルト アクションと同じである(「読む」や「開く」など)
-
-</ul>
-
-
-
-<p>アクションは 3 つまで指定でき、それぞれにアクションのアイコンと名前が付きます。
-
- シンプルな基本レイアウトにアクションを追加すると、展開レイアウトがない場合でも、通知は展開可能になります。
-
-アクションは展開可能な通知にのみ表示され、それ以外では非表示になることから、ユーザーが通知から起動できるどのアクションについても、関連アプリケーションからも利用できるようにしてください。
-
-
-
-
-</p>
-
-<h2 style="clear:left">ヘッドアップ通知</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" />
-  <p class="img-caption">
-    イマーシブ アプリの最上部に表示されたヘッドアップ通知の例(電話の着信、高優先度)
-
-
-  </p>
-</div>
-
-<p>優先度の高い通知が作成されると(右図)、その展開レイアウトが可能なアクションとともに短時間表示されます。
-
-</p>
-<p> この時間が過ぎると、通知は通知シェードに戻ります。
-通知の<a href="#correctly_set_and_manage_notification_priority">優先度</a>を示すフラグが高、最大、全画面の場合は、ヘッドアップ通知になります。
-</p>
-
-<p><b>ヘッドアップ通知にふさわしい例</b></p>
-
-<ul>
-  <li> 端末使用中の電話の着信</li>
-  <li> 端末使用中のアラーム</li>
-  <li> 新しい SMS メッセージ</li>
-  <li> 低バッテリ残量</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">ガイドライン</h2>
-
-
-<h3 id="MakeItPersonal">パーソナルにする</h3>
-
-<p>他人から送信されたアイテム(メッセージ、ステータス アップデートなど)の通知には、{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()} を使用して相手の画像を含めます。
-
-また、通知のメタデータに相手に関する情報を添付します({@link android.app.Notification#EXTRA_PEOPLE} を参照)。
-</p>
-
-<p>通知のメインアイコンは表示され続けるため、ユーザーはそれをステータスバーに表示されるアイコンと関連付けることができます。
-
-</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" />
-<p style="margin-top:10px" class="img-caption">
-  通知をトリガーした人と送信内容が表示された通知。
-</p>
-
-
-<h3 id="navigate_to_the_right_place">適切な画面へのナビゲーション</h3>
-
-<p>ユーザーが通知の本体(アクション ボタン以外)をタップしたら、アプリが開き、通知に表示されているデータの表示や操作ができる画面へ移動するようにします。
-
-
-ほとんどの場合、移動先はメッセージのような 1 つのデータアイテムの詳細表示になりますが、通知がスタックされている場合は概要ビューにすることも考えられます。
-
-アプリがユーザーをアプリの最上位レベルより下のどこかに移動する場合は、アプリのバックスタックにナビゲーションを挿入して、ユーザーがシステムの Back ボタンを押すと最上位レベルに戻れるようにします。
-
-詳しくは、<a href="{@docRoot}design/patterns/navigation.html#into-your-app">ナビゲーション</a>デザイン パターンの<em>ホーム画面ウィジェットと通知を経由するアプリへのナビゲーション</em>をご覧ください。
-
-</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">通知優先度の適切な設定と管理
-
-</h3>
-
-<p>Android では、通知用の優先度フラグをサポートしています。このフラグを使用すると、通知の表示位置に他の通知との相対関係として影響を及ぼして、ユーザーが常に最重要の通知を真っ先に目にするようにできます。
-
-
-通知を投稿する際には、優先度を次の中から選べます。
-
-</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>優先度</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>用途</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>重大で切迫した通知に対して使用します。緊急を要する状況、または特定のタスクを続ける前に解決する必要がある状況であることをユーザーに通告します。
-
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>主に重要な情報に対して使用します。ユーザーが特に関心を持ちそうなメッセージ イベントやチャット イベントなどが該当します。通知の優先度を高く設定すると、ヘッドアップ通知を表示できます。
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>ここで説明している他の優先度のどれにも該当しないすべての通知に対して使用します。</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>ユーザーに知らせたいがそれほど緊急ではない通知に対して使用します。
-低優先度の通知は一般にリストの末尾に表示され、公の、または間接的なソーシャル アップデートなどに適しています。
-
-ユーザーがこうした通知の設定をしていても、急を要するコミュニケーションや直接的なコミュニケーションより優先されないようにする必要があります。
-
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>天気予報や周辺位置情報のようなコンテキスト的またはバックグラウンド的な情報に対して使用します。最小優先度の通知はステータスバーに表示されません。
-
-ユーザーは通知シェードを展開したときにその存在に気づきます。
-</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>適切な優先度の選び方</strong>
-
-</h4>
-
-<p><code>DEFAULT</code>、<code>HIGH</code>、<code>MAX</code> は中断を伴う優先度レベルで、ユーザーによるアクティビティに割り込むリスクがあります。
-
-アプリのユーザーに不快に思われないようにするため、割り込みを伴う優先度レベルの通知は次のような場合に限定してください。
-</p>
-
-<ul>
-  <li> 他人が絡む</li>
-  <li> 急を要する</li>
-  <li> 実世界におけるユーザーの行動が直ちに変わりうる</li>
-</ul>
-
-<p><code>LOW</code> や <code>MIN</code> に設定されている通知も、ユーザーにとって価値がある可能性はあります。
-ほとんどとは言わないまでも、多くの通知は、ユーザーの注意を直ちに引く、またはユーザーの手首に振動を与える必要はありませんが、ユーザーがその通知を見ることにしたときに価値があると気づくような情報が含まれている必要があります。
-
-
-優先度が <code>LOW</code> や <code>MIN</code> の通知の条件は以下のとおりです。
-</p>
-
-<ul>
-  <li> 他人が絡まない</li>
-  <li> 急を要さない</li>
-  <li> ユーザーが興味を持ちうる内容が含まれているが、手が空いたときに参照することにして問題ない
-</li>
-</ul>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" />
-
-
-<h3 style="clear:both" id="set_a_notification_category">通知カテゴリの設定
-</h3>
-
-<p>通知が、あらかじめ定義されているカテゴリ(下を参照)のどれかに該当する場合は、それに沿って割り当てます。
-
-通知シェード(やその他の通知リスナー)などの各種システム UI は、評価やフィルタリングの判断にこの情報を使用することがあります。
-
-</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>電話(ビデオまたは音声)の着信またはそれに類する同期通信の要求
-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>直接メッセージ(SMS、インスタントメッセージなど)の受信</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>非同期バルク メッセージ(メール)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>カレンダー イベント</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>販促または広告</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>アラームまたはタイマー</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>長時間実行のバックグラウンド処理の進捗</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>ソーシャル ネットワークまたは共有アップデート</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>バックグラウンド処理または認証ステータスにおけるエラー</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>再生のためのメディア転送コントロール</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>システムまたは端末のステータス アップデート。システム用に予約済み。</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>バックグラウンド サービス実行中の表示。</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>1 つの事項に対する具体的でタイムリーな推奨。たとえば、ニュースアプリがユーザーが次に読みたいのではないかと予想した記事を推奨するなど。
-
-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>端末やコンテキスト ステータスに関する進行中情報。</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">通知の概要</h3>
-
-<p>アプリで特定の新しい通知を送信しようとしたときに同じタイプの通知が既に保留されていた場合は、それらを統合してそのアプリに対する 1 つの概要通知にします。新しいオブジェクトは作成しないでください。
-
-</p>
-
-<p>概要通知は概要説明を作成し、特定タイプの通知がいくつ保留になっているのかがユーザーにわかるようにします。
-
-</p>
-
-<div class="col-6">
-
-<p><strong>非推奨</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>推奨</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" />
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">概要を構成している個々の通知に関する詳細は、展開ダイジェスト レイアウトを使用して提示できます。
-
-このアプローチにより、ユーザーはどの通知が保留中か、そして関連アプリで詳しく読もうと思うほどそれらに興味があるかを把握しやすくなります。
-
-
-
-</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" />
-  <p class="img-caption">
-  通知の展開された概要と折りたたまれた概要(<code>InboxStyle</code> を使用)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">通知をオプションにする
-</h3>
-
-<p>ユーザーは常に通知を制御できる必要があります。アプリケーションの設定に通知設定アイテムを追加して、ユーザーがアプリの通知を無効にしたり、警告音や振動を使用するかどうかなどのアラート設定を変更したりできるようにしてください。
-
-
-
-</p>
-
-<h3 id="use_distinct_icons">見分けやすいアイコンにする</h3>
-<p>現在保留になっているのがどのタイプの通知なのか、ユーザーが通知エリアを一目で見分けられることが必要です。
-
-</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" />
-</div>
-
-  <div><p><strong>推奨</strong></p>
-    <p>Android アプリが既に提供している通知アイコンを見ながら、独自アプリ用に見かけの十分異なるアイコンを作成する。
-
-</p>
-
-    <p><strong>推奨</strong></p>
-    <p>小さなアイコン用の適切な<a href="/design/style/iconography.html#notification">通知アイコン スタイル</a>と、アクション アイコン用の Material Light <a href="/design/style/iconography.html#action-bar">アクションバー アイコンスタイル</a>を使う。
-
-
-
-</p>
-<p ><strong>推奨</strong></p>
-<p >アイコンの見た目はシンプルに保ち、細かくしすぎて見にくくならないようにする。
-</p>
-
-  <div><p><strong>非推奨</strong></p>
-    <p>なんらかの追加アルファ(暗転やフェード)を小さなアイコンやアクション アイコンに配置する。エッジはアンチ エイリアス処理できますが、Android ではこれらのアイコンをマークとして使用するため(つまり、アルファ チャンネルのみ使用)、画像は概して完全不透明で描画されます。
-
-
-
-
-</p>
-
-</div>
-<p style="clear:both"><strong>非推奨</strong></p>
-
-<p>アプリを他と色で区別する。通知アイコンは、背景が透明な白に限定してください。
-</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">通知 LED を適切に点灯させる
-</h3>
-
-<p>多くの Android 端末には通知 LED が用意されており、スクリーンがオフのときでもユーザーに引き続きイベントを通知するために使用されます。
-
-優先度が <code>MAX</code>、<code>HIGH</code>、<code>DEFAULT</code> の通知を LED 点灯するようにし、優先度の低い通知(<code>LOW</code> と <code>MIN</code>)は点灯しないようにしてください。
-
-
-</p>
-
-<p>ユーザーによる通知の制御が LED にも及ぶようにしてください。DEFAULT_LIGHTS を使用すると、LED が白く点灯します。
-
-ユーザーが明示的にカスタマイズしない限り、通知では別の色を使用しないでください。
-
-</p>
-
-<h2 id="building_notifications_that_users_care_about">ユーザーが気にする通知の作成
-</h2>
-
-<p>ユーザーに愛されるアプリを開発するためには、通知を入念にデザインすることが重要です。通知はアプリの声を体現するものであり、アプリの個性の一部です。
-
-
-望まれない通知や重要ではない通知がユーザーの邪魔になったり、アプリへの注目を集める意図が逆にユーザーに不快に思われたりしかねませんので、通知は適切に使用してください。
-
-
-</p>
-
-<h3 id="when_to_display_a_notification">通知を表示すべきケース</h3>
-
-<p>ユーザーが楽しんで使えるアプリケーションを開発するには、ユーザーの注目や関心は保護すべきリソースであるという認識が重要です。
-
-Android の通知システムは、ユーザーの注意に対する通知のインパクトを最小限に抑える設計になっていますが、通知がユーザーのタスクフローに割り込むという事実を意識することがやはり重要です。通知を盛り込む予定の場合は、それが割り込みに値するほど重要かどうかを自問してください。
-
-
-
-
-
-
-確信が持てない場合は、ユーザーがアプリの通知設定を使用して通知をコントロールできるようにするか、通知のフラグを <code>LOW</code> か <code>MIN</code> に設定してユーザーがしている別のことを邪魔しないようにします。
-
-
-
-</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   急を要する通知の例
-  </p>
-
-<p>概して、適切に振る舞うアプリは話しかけられたときだけ口を開きますが、求められていない通知でユーザーの作業に割り込むことにメリットがあるケースもいくつか存在します。
-</p>
-
-<p>通知は主に<strong>急を要するイベント</strong>で、特に<strong>他人が絡む</strong>同期イベントで使用します。
-たとえば、受信チャットはリアルタイムの同期コミュニケーションです。
-
-他人が応答を能動的に待っています。
-カレンダー イベントも、通知でユーザーの注目を引くタイミングに関する好例です。なぜなら、そうしたイベントは差し迫っており、往々にして他人が絡みます。
-
-
-</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">通知を表示すべきでないケース
-</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" />
-</div>
-
-<p>以上を除く多くの場合、通知の使用は適切ではありません。</p>
-
-<ul>
-  <li> 明示的にユーザー宛てではない情報や、それほど急を要さない情報は、ユーザーへの通知を避けます。
-
-たとえば、ソーシャル ネットワーク経由で流れてくる非同期の間接的なアップデートは、概してリアルタイムの割り込みにふさわしくありません。
-
-
-それらに本当に関心のあるユーザーが選択できるようにします。
-</li>
-  <li> 関連する新しい情報が現在画面に表示されている場合は、通知を作成しないようにします。
-その代わり、アプリケーションそのものの UI を使用して、ユーザーに情報をコンテキスト内で直接通知します。
-
-
-  たとえば、チャット アプリケーションは、ユーザーが他のユーザーとチャットしている最中にシステム通知を作成しないようにします。
-</li>
-  <li> 情報の保存や同期、アプリケーションのアップデートなど、低レベルの技術的な通知については、アプリやシステムがユーザーの介入なしに問題を解決できる場合は割り込まないようにします。
-
-</li>
-  <li> アプリケーションがユーザーの介入なしにエラーから復旧できる場合は、そのようなエラーの通知で割り込まないでください。
-
-</li>
-  <li> 通知にふさわしい内容がなく、アプリを宣伝するだけの通知は、作成しないようにします。通知は、有益でタイムリーな新しい情報を提供するものであり、アプリを起動するためだけには使用しないでください。
-
-
-
-</li>
-  <li> ブランドをユーザーの目の前に提示するだけの表面的な通知を作成しないようにします。
-
-  そうした通知はユーザーにフラストレーションを与え、アプリが使われなくなります。アップデートされた情報を少しだけ提供し、ユーザーをアプリにつなぎ止める最適な方法は、ホームスクリーンに配置できるウィジェットを開発することです。
-
-
-
-
-</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">通知の操作
-</h2>
-
-<p>通知はステータスバーにアイコンとして示され、通知ドロワーを開いてアクセスできます。
-
-</p>
-
-<p>通知をタップすると関連アプリが開き、その通知に対応する詳細なコンテンツに移動します。通知上で左か右にスワイプされた通知は、ドロワーから削除されます。
-
-</p>
-
-<h3 id="ongoing_notifications">進行中通知</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" />
-      <p class="img-caption">
-    音楽再生の進行中通知
-  </p>
-</div>
-<p>進行中通知は、バックグラウンドで進行中の処理に関する情報をユーザーに伝えます。たとえば、音楽プレイヤーは通知システムで現在再生中のトラックを示し、ユーザーが再生を停止するまで通知を継続します。
-
-
-
-進行中通知には、ファイルのダウンロードやビデオのエンコードなど、時間のかかるタスクに対するフィードバックをユーザーに示すこともできます。
-
-ユーザーは、進行中通知を通知ドロワーから手動では削除できません。
-</p>
-
-<h3 id="ongoing_notifications">メディア再生</h3>
-<p>Android 5.0 では、廃止された {@link android.media.RemoteControlClient} クラスの転送コントロールがロック画面に表示されません。
-ただし、通知が表示されるため、<em></em>ユーザーがロック状態から再生をコントロールするための主な手段は、現状では各アプリの再生通知です。
-
-この動作により、アプリは表示するボタンとその表示形態についてより多くをコントロールでき、画面がロックされているかどうかによらない一貫した操作感をユーザーに提供できます。
-
-
-</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">ダイアログとトースト
-</h3>
-
-<p>アプリが画面上に表示されていないときにダイアログやトーストを作成しないようにしてください。
-ダイアログやトーストの表示は、アプリでのアクションに対するユーザーへの即座の応答のみにします。ダイアログやトーストの使用の目安については、<a href="/design/patterns/confirming-acknowledging.html">確認と通知</a>をご覧ください。
-
-
-
-</p>
-
-<h3>評価と並べ替え</h3>
-
-<p>通知はニュースであるため、基本的には新しい順に表示され、アプリが通知に指定した<a href="#correctly_set_and_manage_notification_priority">優先度</a>に基づき特別な配慮がなされます。
-
-
-</p>
-
-<p>通知はロック画面の重要な一部であり、端末のディスプレイがオンになるたび前面に出ます。
-
-ロック画面のスペースは限られているため、もっとも緊急か重要な通知を識別することが何より重要になります。
-
-この理由から、Android では洗練された通知並べ替えアルゴリズムを採用しており、その中で以下を考慮しています。
-
-</p>
-
-<ul>
-  <li> タイムスタンプと、アプリが指定した優先度。</li>
-  <li> その通知が最近ユーザーに音または振動で配信されたかどうか。
-(つまり、電話が音を立てるだけの場合、ユーザーが「何が起こったのか」を知りたくなったら、ロック画面はそれに一目でわかる答えを示すべきです)。
-
-
-</li>
-  <li> {@link android.app.Notification#EXTRA_PEOPLE} を使用して通知に添付された人、特にその人が「お気に入り」の連絡先かどうか。
-</li>
-</ul>
-
-<p>この並べ替え機能を最大限に生かすには、リストにおける特定の位置付けを狙うのではなく、ユーザーの操作感に注目します。
-
-</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Gmail 通知の優先度はデフォルトであり、そのため Hangouts などのインスタントメッセージ アプリからのメッセージの下に並びますが、新しいメッセージが来たときは一時的にそれより先に表示されます。
-
-
-
-
-  </p>
-
-
-<h3>ロック画面上</h3>
-
-<p>通知はロック画面に表示されるため、ユーザーのプライバシーはとりわけ重要な考慮対象です。
-
-通知には機密性の高い情報が含まれることが多く、端末を手に取ってディスプレイをオンにした誰にでも見られるようにすべきではありません。
-
-</p>
-
-<ul>
-  <li> セキュリティ保護されたロック画面(PIN、パターン、パスワードなど)を持つ端末の場合、インターフェースには公開部分と秘密部分があります。
-公開インターフェースはセキュリティ保護されたロック画面に表示でき、誰でも見られます。
-秘密インターフェースはロック画面の背後にある世界で、ユーザーが端末にサインインして初めて表示されます。
-</li>
-</ul>
-
-<h3>セキュリティ保護されたロック画面に表示される情報のユーザー コントロール</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" />
-      <p class="img-caption">
-    ロック画面上の通知。コンテンツはユーザーが端末をロック解除した後に表示されます。
-  </p>
-</div>
-
-<p>セキュリティ保護されたロック画面をセットアップする際、ユーザーはセキュリティ保護されたロック画面には表示しない機密性の高い情報を選ぶことができます。
-その場合、システム UI は通知の<em>可視性レベル</em>を考慮して、表示しても問題ない情報を識別します。
-
-</p>
-<p> 可視性レベルをコントロールするには、<code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code> を呼び出し、次の値のどれかを指定します。
-
-</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>。通知の内容がすべて表示されます。
-
-  可視性レベルが指定されていない場合は、これがシステム デフォルトです。</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>。ロック画面に、その通知の存在に関する基本情報、たとえば通知のアイコンやそれを提示したアプリ名などを表示します。
-
-通知のその他の詳細は表示されません。いくつか留意すべき点があります。
-
-  <ul>
-    <li> システムがセキュリティ保護されたロック画面に表示するためとして公開バージョンの通知を別に提供する場合は、<code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code> フィールドに代替 Notification オブジェクトを用意します。
-
-
-
-    <li> この設定により、アプリは利便性はあるが個人情報は明かさない編集されたバージョンのコンテンツを作成できるようになります。
-SMS アプリを例に考えて見ましょう。通知には SMS のテキストメッセージ、送信者の名前、連絡先アイコンが含まれています。この通知は <code>VISIBILITY_PRIVATE</code> であるべきですが、<code>publicVersion</code> にも "3 件の新しいメッセージ" のような個人を特定する詳細なしでも利便性のある情報を盛り込めます。
-
-
-
-
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>。必要最小限の情報のみ表示し、通知のアイコンさえありません。
-</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Android Wear での通知
-</h2>
-
-<p>通知とそのアクション<em></em>は、デフォルトで Wear 端末にブリッジされます。デベロッパーは、どの通知が電話から腕時計へ、またはその逆へブリッジするかを制御できます。
-
-
-また、どのアクションがブリッジするかも制御できます。タップ 1 回では完了しないアクションがアプリに含まれている場合は、そうしたアクションを Wear 通知では隠すか Wear アプリに接続することを検討してください。いずれにしても、ユーザーがアクションを腕時計で完了できるようにします。
-
-
-
-
-
-</p>
-
-<h4>通知とアクションのブリッジ</h4>
-
-<p>電話のような接続状態の端末は、通知を Wear 端末にブリッジして、通知が腕時計に表示されるようにできます。
-同様に、アクションもブリッジして、ユーザーが通知に Wear 端末で直接対処できるようにできます。
-</p>
-
-<p><strong>ブリッジする</strong></p>
-
-<ul>
-  <li> 新しいインスタントメッセージ</li>
-  <li> +1、いいね、心拍数のようなタップ 1 回のアクション</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" />
-
-<p><strong>ブリッジしない</strong></p>
-
-<ul>
-  <li> 新着ポッドキャストの通知</li>
-  <li> 腕時計ではできない機能にマップされたアクション</li>
-</ul>
-
-
-
-<p><h4>Wear 専用に定義されたアクション</h4></p>
-
-<p>Wear でのみできるアクションがいくつかあります。次に例を挙げます。</p>
-
-<ul>
-  <li> 「Be right back」 のような定形応答のクイックリスト</li>
-  <li> 携帯電話で開く</li>
-  <li> 音声入力画面を起動する 「Comment」 アクションや 「Reply」 アクション</li>
-  <li> Wear 専用アプリを起動するアクション</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" />
diff --git a/docs/html-intl/intl/ja/preview/j8-jack.jd b/docs/html-intl/intl/ja/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/ja/preview/j8-jack.jd
rename to docs/html-intl/intl/ja/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/ja/preview/features/multi-window.jd b/docs/html-intl/intl/ja/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/ja/preview/features/multi-window.jd
rename to docs/html-intl/intl/ja/guide/topics/ui/multi-window.jd
index dba58be..a8df89d 100644
--- a/docs/html-intl/intl/ja/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>このドキュメントの内容</h2>
       <ol>
         <li><a href="#overview">概要</a></li>
@@ -69,8 +69,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/mw-splitscreen_2x.png 2x," id="img-split-screen" />
 <p class="img-caption">
   <strong>図 1.</strong> 分割画面モードで並べて実行されている 2 つのアプリ。
 </p>
diff --git a/docs/html-intl/intl/ja/preview/_book.yaml b/docs/html-intl/intl/ja/preview/_book.yaml
deleted file mode 100644
index 5f1e18f..0000000
--- a/docs/html-intl/intl/ja/preview/_book.yaml
+++ /dev/null
@@ -1,342 +0,0 @@
-toc:
-- title: プログラム概要
-  path: /preview/overview.html
-  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: サポートとリリースノート
-  path: /preview/support.html
-
-- title: Preview のセットアップ
-  path: /preview/setup-sdk.html
-  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: 端末上でのテスト
-  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: 動作の変更点
-  path: /preview/behavior-changes.html
-  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: バックグラウンド処理の最適化
-    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: 言語とロケール
-    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
-  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: マルチ ウィンドウのサポート
-    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: 通知
-    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: データセーバー
-    path: /preview/features/data-saver.html
-  - title: TV の録画機能
-    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: ネットワーク セキュリティ構成
-    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 のサポート
-    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 の言語機能
-    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 のアップデート
-    path: /preview/features/afw.html
-  - title: 特定のディレクトリへのアクセス
-    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: サンプル
-  path: /preview/samples.html
-  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: 使用許諾契約
-  path: /preview/license.html
-  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-intl/intl/ja/preview/download-ota.jd b/docs/html-intl/intl/ja/preview/download-ota.jd
deleted file mode 100644
index 835597b..0000000
--- a/docs/html-intl/intl/ja/preview/download-ota.jd
+++ /dev/null
@@ -1,332 +0,0 @@
-page.title=端末の OTA イメージの適用
-
-@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 Peview を使用するためには、本契約に同意する必要があります。本契約に同意しない場合は 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)モバイル ハンドセットまたは個人用コンピュータ以外のハードウェア端末への 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">
-
-<p>
-  このページでは、無線(OTA)端末イメージへのリンクを提供し、OTA アップデートを端末に手動で適用する方法を説明しています。
-この手順は、Android ベータ版プログラムにより OTA アップデートが配信されたが、アップデートをインストールした後に起動しない端末を復元する際に役立ちます。
-
-
-</p>
-
-<h2 id="install-ota">OTA イメージのインストール</h2>
-
-<p></p>
-
-<p>端末に OTA パッケージをインストールするには:</p>
-
-<ol>
-  <li>以下の表の OTA 端末イメージをダウンロードします。</li>
-  <li>復旧モードで端末を再起動します。Nexus 端末をこのモードにする方法については、<a href="https://support.google.com/nexus/answer/4596836">Nexus を工場出荷時設定にリセットする</a>を参照してください。
-
-
-
-  </li>
-  <li>端末で [<strong>ADB sideload</strong>] を選択します。</li>
-  <li>Android 開発環境がロードされ、Android Debug Bridge(adb)ツールがインストールされたコンピュータに端末を接続します。
-</li>
-  <li>以下のコマンドを実行します。
-    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
-  </li>
-</ol>
-
-
-
-<h2 id="ota-images">端末の OTA イメージ</h2>
-
-<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-ota-npd90g-0a874807.zip</a><br>
-      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
-      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd90g-06f5d23d.zip</a><br>
-      MD5: 513570bb3a91878c2d1a5807d2340420<br>
-      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd90g-5baa69c2.zip</a><br>
-      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
-      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd90g-c04785e1.zip</a><br>
-      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
-      SHA-1: 31633180635b831e59271a7d904439f278586f49
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
-      MD5: 0493fa79763d67bcdde8007299e1888d<br>
-      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd90g-3a0643ae.zip</a><br>
-      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
-      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd90g-ec931914.zip</a><br>
-      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
-      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
-      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
-      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
-    </td>
-  </tr>
-
-</table>
-
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
-  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/download.jd b/docs/html-intl/intl/ja/preview/download.jd
deleted file mode 100644
index 52f7ae4..0000000
--- a/docs/html-intl/intl/ja/preview/download.jd
+++ /dev/null
@@ -1,544 +0,0 @@
-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 互換」とは、(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 Peview を使用するためには、本契約に同意する必要があります。本契約に同意しない場合は 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)モバイル ハンドセットまたは個人用コンピュータ以外のハードウェア端末への 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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="revertDevice">プレビュー版を端末からアンインストールする</h3>
-
-<p>
-  以下のいずれかの方法で、プレビュー版を端末からアンインストールできます。
- </p>
-  <ul>
-    <li><strong>工場出荷時仕様のシステム イメージを取得</strong>して、手動で端末に書き込みます。
-
-      <ul>
-          <li><strong>Nexus 端末と Pixel C 端末</strong>については、Nexus 端末の<a href="http://developers.google.com/android/nexus/images">ファクトリー イメージ</a>のページを参照してダウンロードしてください。
-
- </li>
-        <li><strong>他の端末</strong>については、端末メーカーに直接お問い合わせください。
-その他の端末については、直接端末メーカーにお問い合わせください。Android ベータ版プログラムの対象機種については、端末をプログラムに登録した後、登録を解除することができます(詳細は以下をご覧ください)。
-
-</li>
-      </ul>
-    </li>
-    <li><strong>Android ベータ版プログラムから端末を登録解除します。</strong>Android ベータ版プログラムへの端末の登録を解除します。<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>仮想端末の作成については、<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/afw.jd b/docs/html-intl/intl/ja/preview/features/afw.jd
deleted file mode 100644
index 8e73298..0000000
--- a/docs/html-intl/intl/ja/preview/features/afw.jd
+++ /dev/null
@@ -1,552 +0,0 @@
-page.title=Android for Work のアップデート
-page.metaDescription=Android N の新しい Android for Work の API と機能。
-page.keywords="android for work", "android N", "enterprise", "QR code"
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>このドキュメントの内容</h2>
-      <ol>
-        <li><a href="#qr">QR コードのプロビジョニング</a>
-</li>
-
-        <li><a href="#sec-challenge">仕事用プロファイルによるセキュリティ確認</a>
-</li>
-
-        <li><a href="#suspend">アプリへのアクセスを無効にする</a>
-</li>
-
-        <li><a href="#toggle-work">ワークモードの切り替え</a>
-</li>
-
-        <li><a href="#always-on-vpn">Always On VPN</a>
-</li>
-
-        <li><a href="#contacts">仕事用プロファイルと連絡先の統合</a>
-</li>
-
-        <li><a href="#remote-reboot">リモートでの再起動</a>
-</li>
-
-        <li><a href="#disable-roaming">データローミングを無効にする</a>
-</li>
-
-        <li><a href="#process-logging">企業によるプロセスのログ記録</a>
-</li>
-
-        <li><a href="#bug-reports">リモートでのバグレポート</a>
-</li>
-
-        <li><a href="#remove-cert">クライアント証明書を削除する</a>
-</li>
-
-        <li><a href="#grant-cert-on-install">インストール時にクライアント証明書へのアクセス権を付与する</a>
-</li>
-
-        <li><a href="#ui-policy">システムの UI ポリシーの透明性</a>
-</li>
-
-        <li><a href="#restrictions-mgmt">アプリ制限の管理の強化</a>
-</li>
-
-        <li><a href="#location-off">位置情報のオフへの切り替え</a>
-</li>
-
-        <li><a href="#custom-provisioning">カスタマイズされたプロビジョニング</a>
-</li>
-
-        <li><a href="#multi-wifi-ca">複数の Wi-Fi 用の CA 証明書
-</a></li>
-
-        <li><a href="#custom-lock">カスタマイズされたロック画面のメッセージ</a>
-</li>
-
-        <li><a href="#work-connectionservice">仕事用プロファイルの ConnectionService</a>
-</li>
-
-        <li><a href="#lock-wp">壁紙をロックダウンする</a>
-</li>
-
-        <li><a href="#lock-user-icon">ユーザー アイコンをロックダウンする</a>
-</li>
-
-        <li><a href="#health-monitoring">端末の状態の監視</a>
-</li>
-
-      </ol>
-
-    <h2>関連ドキュメント</h2>
-    <ul>
-      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK リファレンス</a>
-</li>
-    </ul>
-  </div>
-</div>
-
-<p>このドキュメントでは、Android N で提供されている新しい Android for Work の機能について説明します。
-</p>
-
-<h2 id="qr">QR コードのプロビジョニング</h2>
-
-<p>
-  Android for Work では、企業が責任を負う端末のプロビジョニングに QR コードを使用できるようになりました。
-セットアップ ウィザードを使用すると、QR コードをスキャンして端末をプロビジョニングできます。
-
-</p>
-
-<h2 id="sec-challenge">仕事用プロファイルによるセキュリティ確認</h2>
-
-<p>
-  プロファイル オーナーは、仕事用プロファイルで実行しているアプリに対してセキュリティ確認を指定するようユーザーに要求できます。
-ユーザーが仕事用アプリを開こうとすると、セキュリティ確認画面が表示されます。
-ユーザーがセキュリティの確認に成功すると、仕事用プロファイルのロックが解除され、必要に応じて暗号化も解除されます。
-
-
-</p>
-
-<p>
-  プロファイル オーナーが {@link
-  android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD} インテントを送信すると、ユーザーはセキュリティ確認をセットアップするよう求められます。
-また、プロファイル オーナーは、<code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> インテントを送信して、ユーザーに端末のロックを設定するよう求めることもできます。
-
-
-</p>
-
-<p>
-  プロファイル オーナーは仕事用プロファイル用のセキュリティ確認に、他の端末のパスワード ポリシーとは異なるパスワード ポリシーを設定できます。
-たとえば、端末の確認応答の最小長は、他のパスワードに必要な長さと異なっていてもかまいません。
-
-プロファイル オーナーがこの確認のポリシーを設定する場合は、通常 {@link
-  android.app.admin.DevicePolicyManager#setPasswordQuality
-  setPasswordQuality()} や {@link
-  android.app.admin.DevicePolicyManager#setPasswordMinimumLength
-  setPasswordMinimumLength()} など、{@link android.app.admin.DevicePolicyManager} メソッドを使用して設定します。
-
-また、新しい <code>DevicePolicyManager.getParentProfileInstance()</code> メソッドが返す {@link android.app.admin.DevicePolicyManager} インスタンスを使用して端末のロックを設定することもできます。
-
-
-さらに、{@link android.app.admin.DevicePolicyManager} クラスの新しい <code>setOrganizationColor()</code> メソッドおよび <code>setOrganizationName()</code> メソッドを使用して仕事用プロファイル用のセキュリティ確認画面をカスタマイズすることができます。
-
-
-
-</p>
-
-<p>
-  新しいメソッドと定数の詳細については、<a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK リファレンス</a>の<code>DevicePolicyManager</code> リファレンス ページをご覧ください。
-
-</p>
-
-<h2 id="suspend">アプリへのアクセスを無効にする</h2>
-
-<p>
-  デバイス オーナーとプロファイル オーナーは、新しい <code>DevicePolicyManager.setPackagesSuspended()</code> メソッドを呼び出して、パッケージへのアクセスを一時的に停止することができます。
-
-オーナーがパッケージを再度有効にする場合は、同じメソッドを使用できます。
-</p>
-
-<p>
-  パッケージが停止されている場合は、アクティビティを開始できないため、パッケージへの通知は行われず、<a href="{@docRoot}guide/components/recents.html">オーバービュー画面</a>のアプリのエントリは非表示になります。
-
-  停止されているパッケージは<a href="{@docRoot}guide/components/recents.html">オーバービュー画面</a>に表示されず、ダイアログ(トーストや Snackbar を含む)を表示することはできません。
-また、音声を再生したり、端末を振動させたりすることもできません。
-
-</p>
-
-<p>
-  ランチャーは、アプリが現在利用できないことを示すために、アプリのアイコンをグレーでレンダリングするなど、停止されているアプリにひと目でわかる UI を適用する必要があります。
-
-ランチャーは、新しい <code>DevicePolicyManager.getPackageSuspended()</code> メソッドを呼び出してアプリが停止されているかどうかを確認できます。
-
-</p>
-
-<h2 id="toggle-work">ワークモードの切り替え</h2>
-
-<p>
-  デュアル プロファイル端末では、ユーザーはワークモードのオンとオフを切り替えることができます。ワークモードがオフの場合は、管理されているプロファイルが一時的にシャットダウンされます。
-仕事用プロファイルのアプリ、バックグラウンドでの同期、通知がすべて無効になります。これにはプロファイル オーナーのアプリも含まれます。
-
-また、仕事用プロファイルが無効にされている場合は、仕事用アプリを起動できないことをユーザーに示すステータス アイコンが表示されたままになります。
-
-システム ランチャーは、仕事用アプリとウィジェットにアクセスできないことを示します。
-
-</p>
-
-<h2 id="always-on-vpn">Always On VPN</h2>
-
-<p>
-  デバイス オーナーとプロファイル オーナーは、指定した VPN を介して仕事用アプリが常時ネットワークに接続することを要求できます。
-オーナーがこの要件を設定すると、端末は起動時に対象の VPN を自動的に開始します。
-
-</p>
-
-<p>
-  オーナーは、新しい <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code> メソッドを呼び出して VPN を使用することを要求できます。
-オーナーが VPN 要件を設定しているかどうかを確認するには、新しい <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code> メソッドを呼び出します。
-
-
-</p>
-
-<p>
-  システムがアプリの介入なしに VPN サービスを直接バインドできるため、常時接続 VPN の新しいエントリ ポイントは VPN クライアント側で処理する必要があります。
-以前と同様に、アクティブなサービスを見つけるには、アクション {@link android.net.VpnService android.net.VpnService} に一致するインテント フィルタを使用します。
-
-
-</p>
-
-<p>
-  ユーザーは {@link
-  android.net.VpnService} を実装する常時接続 VPN クライアントを、<strong>[Settings] &gt; [More] &gt; [VPN]</strong> 画面を使用して手動で設定できます。
-
-</p>
-
-<h2 id="contacts">仕事用プロファイルと連絡先の統合</h2>
-
-<p>
-  プロファイル オーナーは、プライマリ ユーザーの仕事用連絡先のローカル検索やディレクトリ検索を許可することができます。
-たとえば、ユーザーは個人用電話アプリや連絡先アプリから個人用と仕事用の両方のディレクトリの連絡先にアクセスできます(プロファイル管理者によって許可されている場合)。
-
-
-</p>
-
-<p>
-  連絡先プロバイダを活用するデベロッパーは、ポリシーで許可されている場合、Enterprise Contacts API を使用してプライマリ ユーザーの仕事用プロファイルのディレクトリのエントリにアクセスできます。
-
-
-</p>
-
-<ul>
-  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
-  </li>
-</ul>
-
-<p>
-  プロファイル オーナーは、以下の新しいメソッドを使用して、プライマリ ユーザーの仕事用連絡先の表示を制御できます。
-
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
-  </li>
-</ul>
-
-<h2 id="remote-reboot">リモートでの再起動</h2>
-
-<p>
-  デバイス オーナーは、端末をリモートで再起動できます。エンクロージャ内のパブリックな場所にデプロイされている端末は、電源ボタンにアクセスできないようにすることができる場合があります。
-端末を再起動する必要がある場合、管理者は新しい <code>DevicePolicyManager.reboot()</code> メソッドを使用して実行することができます。
-
-
-</p>
-
-<h2 id="disable-roaming">データローミングを無効にする</h2>
-
-<p>
-  デバイス オーナーがデータローミングを無効にするには、新しい {@link
-  android.os.UserManager} のユーザー制限 <code>DISALLOW_DATA_ROAMING</code> を使用します。
-</p>
-
-<h2 id="process-logging">企業によるプロセスのログ記録</h2>
-
-<p>
-  デバイス オーナーは、リモートで端末のアクティビティ(アプリの起動、adb アクティビティ、画面のロック解除など)を追跡することにより、疑わしいアクティビティを特定できます。
-プロセス ログはユーザーの同意は必要ありません。
-ログを取得するには、デバイス オーナーは <code>DevicePolicyManager.setSecurityLoggingEnabled()</code> を使用して端末のログ記録を有効にします。
-
-</p>
-
-<p>
-  API の変更点は以下のとおりです。
-</p>
-
-<ul>
-
-  <li>
-    新しいクラス <code>android.app.admin.SecurityLog</code> とそのメソッド
-
-  </li>
-
-  <li>
-    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrieveSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
-  </li>
-</ul>
-
-<h2 id="bug-reports">リモートでのバグレポート</h2>
-
-<p>
-  デバイス オーナーは、端末の状態のダンプファイルを含むバグレポートをリモートでトリガーして取得できます。これにより、既知のインシデントや障害が発生した端末の徹底的な調査が可能になります。
-
-バグレポートの内容は詳細にわたるため、ユーザーの同意が必要になります。
-
-</p>
-
-<p>
-  Android N では、この機能をサポートするために以下の API が追加されています。詳細については、<a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK リファレンス</a>をご覧ください。
-
-
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.requestBugreport()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportFailed()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportShared()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
-  </li>
-</ul>
-
-<h2 id="remove-cert">クライアント証明書を削除する</h2>
-
-<p>
-  プロファイル オーナーとデバイス オーナーは、{@link android.app.admin.DevicePolicyManager#installKeyPair
-  installKeyPair()} によってインストールされたクライアント証明書を、新しい <code>DevicePolicyManager.removeKeyPair()</code> メソッドを呼び出して削除できるようになりました。
-
-
-</p>
-
-<h2 id="grant-cert-on-install">インストール時にクライアント証明書へのアクセス権を付与する
-</h2>
-
-<p>
-  プロファイル オーナーやデバイス オーナーが、サードパーティ アプリに証明書を管理する権限を付与する場合、アプリはオーナーの介入なしに、インストールされる証明書へのアクセス権をアプリ自体に付与できます。
-
-
-</p>
-
-<p>
-  証明書を管理するための既存の API は、以下を含むように拡張されています。
-</p>
-
-<ul>
-  <li><code>DevicePolicyManager.installKeyPair()</code>
-  </li>
-</ul>
-
-<h2 id="ui-policy">システムの UI ポリシーの透明性</h2>
-
-<p>
-  ユーザー エクスペリエンスに影響を及ぼしたり、ユーザー設定を制限したりするポリシーはユーザーに完全に公表されます。プロファイル オーナーとデバイス オーナーは、このポリシーと会社の IT 部門を関連付けることができます。
-
-IT 管理者は [Settings] の「Action not allowed」という通常のメッセージに加え、端末設定に組織固有のサポート メッセージを設定できます。これには以下の新しい {@link android.app.admin.DevicePolicyManager} メソッドを使用します。
-
-
-
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setShortSupportMessage()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.setLongSupportMessage()</code>
-  </li>
-</ul>
-
-<h2 id="restrictions-mgmt">アプリ制限の管理の強化</h2>
-
-<p>
-  デバイス オーナーやプロファイル オーナーは、別のアプリケーションでアプリ制限を管理できるようにすることができます。これには新しい <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code> メソッドを使用します。
-
-
-指定されたアプリケーションは、このパーミッションが付与されているかどうかを、<code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code> を呼び出して確認できます。
-
-
-</p>
-
-<p>
-  アプリ制限を管理するように指定されたアプリケーションは、対象となるユーザーやプロファイル内のパッケージに対して {@link
-  android.app.admin.DevicePolicyManager#setApplicationRestrictions
-  setApplicationRestrictions()} と {@link
-  android.app.admin.DevicePolicyManager#getApplicationRestrictions
-  getApplicationRestrictions()} を呼び出すことができます。
-</p>
-
-<h2 id="location-off">位置情報のオフへの切り替え</h2>
-
-<p>
-  個人用アプリの位置情報に継続的にアクセスしている場合、ユーザーは仕事用アプリの位置パーミッションを無効にできます。
-[Location Settings] で別の位置情報へのアクセスに切り替えると、ユーザーは位置情報の更新や、仕事用プロファイルで実行されているアプリの最新位置情報の問い合わせを拒否できます。
-
-
-</p>
-
-<p>
-  トップレベルの位置情報をオフに切り替えると、プライマリ プロファイルと管理されているプロファイルの両方の位置情報へのアクセスが無効になります。
-
-</p>
-
-<h2 id="custom-provisioning">カスタマイズされたプロビジョニング</h2>
-
-<p>
-  アプリでは、コーポレート・カラーやロゴを含むプロファイル オーナーとデバイス オーナーのプロビジョニング フローをカスタマイズできます。
-
-</p>
-
-<dl>
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
-  </dt>
-
-  <dd>
-    フローカラーをカスタマイズします。
-  </dd>
-
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
-  </dt>
-
-  <dd>
-    コーポレート ロゴを含むフローをカスタマイズします。
-  </dd>
-</dl>
-
-<h2 id="multi-wifi-ca">複数の Wi-Fi 用の CA 証明書</h2>
-
-<p>
-  プロファイル オーナーとデバイス オーナーは、特定の Wi-Fi 設定に複数の CA 証明書を設定できます。
-企業の Wi-Fi ネットワークで、同じ SSID を持つ別のアクセス ポイントに別の CA を使用する場合、IT 管理者は新しい <code>setCaCertificates()</code> メソッドを使用して、関連するすべての CA を Wi-Fi 設定に含めることができます。
-
-
-
-</p>
-
-<p>
-  以下の API が追加されました。
-</p>
-
-<ul>
-  <li>
-    <code>WifiEnterpriseConfig.setCaCertificates()</code>
-  </li>
-
-  <li>
-    <code>WifiEnterpriseConfig.getCaCertificates()</code>
-  </li>
-</ul>
-
-<h2 id="custom-lock">カスタマイズされたロック画面のメッセージ</h2>
-
-<p>
-  デバイス オーナーは、ロック画面に表示されるオーナー情報を提供できます。
-  この情報は、ユーザーのロック画面のメッセージよりも優先されます(設定されている場合)。
-新しい {@link android.app.admin.DevicePolicyManager} メソッドは以下のとおりです。
-</p>
-
-<ul>
-  <li>
-    <code>setDeviceOwnerLockScreenInfo()</code>
-  </li>
-
-  <li>
-    <code>getDeviceOwnerLockScreenInfo()</code>
-  </li>
-</ul>
-
-<h2 id="work-connectionservice">仕事用プロファイルの ConnectionService</h2>
-
-<p>
-  プロファイル オーナーは、バックエンドの呼び出し(アカウントの呼び出し)に仕事固有の {@link android.telecom.ConnectionService} を使用する仕事用電話アプリを指定できます。
-
-仕事用電話は、仕事のみの通話履歴を保持し、仕事用連絡先のみを利用します。
-電話アプリに関係なく、ユーザーには統一された着信 UI が表示されます。
-仕事用通話アカウントへの仕事用の着信は、個人用通話アカウントへの個人用の着信とは区別されます。
-
-
-</p>
-
-<p>
-  通話が仕事用の通話かどうかを確認するには、電話は新しいフラグ <code>android.telecom.Call.PROPERTY_WORK_CALL</code> を確認する必要があります。
-
-通話が仕事用の通話の場合、電話はワーク バッジを追加するなどして、これを示す必要があります。
-
-</p>
-
-<h2 id="lock-wp">壁紙をロックダウンする</h2>
-
-<p>
-  新しいユーザー制限(<code>DISALLOW_SET_WALLPAPER</code>)により、ユーザーは壁紙を変更することができません。
-デバイス オーナーやプロファイル オーナーは壁紙を変更できますが、制御するユーザーやプロファイルの壁紙のみ変更できます。
-
-たとえば、プロファイル オーナーは、親ユーザーの壁紙は変更できませんが、プライマリ プロファイルのプロファイル オーナーやデバイス オーナーは変更できます。
-
-壁紙を変更する必要があるプロファイル オーナーやデバイス オーナーは、管理するユーザーやプロファイルに壁紙があるかどうか({@link android.app.WallpaperManager#isWallpaperSupported
-  isWallpaperSupported()})、壁紙の変更が許可されているかどうかを(新しい <code>WallpaperManager.isWallpaperSettingAllowed()</code> メソッドを使用して)確認する必要があります。
-
-
-
-</p>
-
-<h2 id="lock-user-icon">ユーザー アイコンをロックダウンする</h2>
-
-<p>
-  新しいユーザー制限(<code>DISALLOW_SET_USER_ICON</code>)により、ユーザーはユーザー アイコンを変更することができません。
-ユーザーのデバイス オーナーやプロファイル オーナーは、このアイコンを変更できます。
-ただし、プロファイル オーナーが変更できるのは、制御するプロファイルのユーザー アイコンのみです。
-
-</p>
-
-<h2 id="health-monitoring">端末の状態の監視</h2>
-
-<p>
-  デバイス オーナーやプロファイル オーナーは、新しい <code>HardwarePropertiesManager</code> インターフェースを使用して、CPU や GPU の温度、CPU 使用率などの端末の状態に関する情報を取得できます。
-
-新しい監視インターフェースは、遠隔地で実行されている使用されていない端末の監視に特に役立ちます。
-
-
-</p>
diff --git a/docs/html-intl/intl/ja/preview/license.jd b/docs/html-intl/intl/ja/preview/license.jd
deleted file mode 100644
index 64275cd..0000000
--- a/docs/html-intl/intl/ja/preview/license.jd
+++ /dev/null
@@ -1,145 +0,0 @@
-page.title=使用許諾契約
-
-@jd:body
-
-<p>
-Android SDK Preview をインストールする前に、次の利用規約に同意する必要があります。
-以下に記載するとおり、これは、Android SDK のプレビュー バージョンであり、変更される可能性があります。デベロッパーご自身の責任においてご使用ください。Android SDK Preview は安定したリリースではなく、お使いのコンピュータ システム、端末、データに深刻な影響を与える可能性のあるエラーまたは欠陥が含まれている場合があります。
-</p>
-
-<p>
-以下は、Android SDK Preview の使用許諾契約です(以下「本契約」)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-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 Peview を使用するためには、本契約に同意する必要があります。本契約に同意しない場合は 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)モバイル ハンドセットまたは個人用コンピュータ以外のハードウェア端末への 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>
\ 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
deleted file mode 100644
index e14b5fb..0000000
--- a/docs/html-intl/intl/ja/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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>
-  <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#dp1">Preview 1</a></strong>(初回リリース、アルファ版)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong>(追加アップデート、アルファ版)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></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}studio/intro/update.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 ベータ版プログラムのサイトから 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 Issue Tracker</a> です。
-Issue Tracker を使うと、バグやパフォーマンスの問題、一般的なフィードバックを報告できます。
-さらに、<a href="{@docRoot}preview/bugs">既知の問題</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/preview_toc.cs b/docs/html-intl/intl/ja/preview/preview_toc.cs
deleted file mode 100644
index 4b22608..0000000
--- a/docs/html-intl/intl/ja/preview/preview_toc.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-<ul id="nav">
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="程式總覽">プログラム概要</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/support.html">サポートとリリースノート</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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">Preview のセットアップ</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="在裝置上測試">端末上でのテスト</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="行為變更">動作の変更点</a></div>
-      <ul>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/background-optimization.html" 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="背景最佳化">バックグラウンド処理の最適化</a></li>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/multilingual-support.html" 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="語言和地區設定">言語とロケール</a></li>
-      </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="&lt;?cs var:toroot ?&gt;preview/features/multi-window.html" 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="多視窗支援">マルチ ウィンドウのサポート</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/notification-updates.html" 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="通知">通知</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/data-saver.html">データセーバー</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/tv-recording-api.html" 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 の録画機能</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/security-config.html" 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="網路安全性設定">ネットワーク セキュリティ構成</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/icu4j-framework.html" 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 のサポート</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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 の言語機能</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/afw.html">Android for Work のアップデート</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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="限定範圍目錄存取">特定のディレクトリへのアクセス</a></li>
-      </ul>
-  </li>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/samples.html" es-lang="Ejemplos" in-lang="Contoh" ja-lang="サンプル" ko-lang="샘플" pt-br-lang="Exemplos" ru-lang="Примеры" zh-cn-lang="示例" zh-tw-lang="範例">サンプル</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/license.html" es-lang="Contrato de licencia" ja-lang="使用許諾契約" ko-lang="라이선스 계약" pt-br-lang="Contrato de licença" ru-lang="Лицензионное соглашение" zh-cn-lang="许可协议" zh-tw-lang="授權協議">使用許諾契約</a></div>
-  </li>
-
-</ul> 
\ 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
deleted file mode 100644
index 06b24ca..0000000
--- a/docs/html-intl/intl/ja/preview/setup-sdk.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-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 を入手する</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 を使用してアプリをビルドする必要があります。
-
-
-それ以外の合は、Jack コンパイラーを使用する必要はありません。ただし、以下に説明するように、Android N プラットフォームに対応する設定でコンパイルを行うには、JDK 8 にアップデートする必要があります。
-
-</p>
-
-<p>既に Android Studio がインストールされている場合は、<strong>[Help] &gt; [Check for Update]</strong>(Mac では、<strong>[Android Studio] &gt; [Check for Updates]</strong>)をクリックして、Android Studio 2.1 以上であることを確認してください。
-
-</p>
-
-<p>Android Studio 2.1 以上がない場合は、<a href="{@docRoot}studio/">こちらから Android Studio 2.1 をダウンロード</a>してください。
-</p>
-
-
-<h2 id="get-sdk">N Preview SDK を入手する</h2>
-
-<p>Android N API を使用して開発を開始するには、次のステップに従って、Android Studio に Android N Preview SDK をインストールする必要があります。
-</p>
-
-<ol>
-  <li><strong>[Tools] &gt; [Android] &gt; [SDK Manager]</strong> をクリックして、SDK Manager を開きます。
-</li>
-
-  <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-3-docs.zip">n-preview-3-docs.zip</a></td>
-    <td width="100%">
-      MD5:19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
-    </td>
-  </tr>
-<table>
-
-
-
-<h2 id="java8">Java 8 JDK を入手する</h2>
-
-<p>Android N プラットフォームに対応する設定でアプリをコンパイルしたり、Android Studio 2.1 でいくつかのツールを使用したりするには、Java 8 Developer Kit(JDK 8)をインストールする必要があります。
-したがって、最新バージョンを持っていない場合は、すぐに JDK 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-rc3'</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/preview/support.jd b/docs/html-intl/intl/ja/preview/support.jd
deleted file mode 100644
index bda763d..0000000
--- a/docs/html-intl/intl/ja/preview/support.jd
+++ /dev/null
@@ -1,1188 +0,0 @@
-page.title=サポートとリリースノート
-meta.keywords="preview", "android"
-page.tags="preview", "developer preview"
-page.image=images/cards/card-n-support_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>このドキュメントの内容</h2>
-
-<ul>
-  <li><a href="#dp3">Developer Preview 3</a>
-    <ul>
-      <li><a href="#general">一般的な注意事項</a></li>
-      <li><a href="#new">DP3 の新機能</a></li>
-      <li><a href="#ki">既知の問題</a></li>
-    </ul>
-  </li>
-  <li><a href="#dp2">Developer Preview 2</a></li>
-  <li><a href="#dp1">Developer Preview 1</a></li>
-</ul>
-
-<!--
-<h2>See Also</h2>
-<ol>
-  <li></li>
-</ol>
--->
-
-</div>
-</div>
-
-<p>
-  Android N Developer Preview で開発およびテストするときは、2 つの主なサポート チャンネルを使用できます。
-端末固有、システム、Google アプリのバグについては、<a href="https://developer.android.com/preview/bug">https://developer.android.com/preview/bug</a> で報告してください。
-他のアプリの問題については、デベロッパーに直接お問い合わせください。
-
-</p>
-
-<p>Android N に携わっている他のデベロッパーと問題やアイデアについて議論するには、<a href="{@docRoot}preview/dev-community">Developer Preview Google+ コミュニティ</a>にご参加ください。
-</p>
-
-<h2 id="dp3">Developer Preview 3</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>日付:2016 年 5 月<br>
-        ビルド:NPD35K<br>
-        エミュレータ サポート: x86 と ARM(32 / 64 ビット)<br>
-        Google Play services:8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="general">一般的な注意事項</h3>
-
-<p>
-  この Developer Preview リリースは、<strong>アプリのデベロッパーやその他の初期導入者</strong>を対象とし、日常的な使用、開発、互換性テストに使用できます。
-
-このリリースに関する次の一般的な事項に注意してください。
-
-</p>
-
-<ul>
-  <li>このリリースでは、サポート対象端末でさまざまな<strong>安定性に関する問題</strong>が発生する可能性があります。
-カーネルパニックやクラッシュなど、システムが不安定になる可能性があります。
-
-  </li>
-
-  <li>一部のアプリは、新しいプラットフォーム バージョンで<strong>期待どおりに動作しない可能性があります</strong>。
-これには、Google のアプリやその他のアプリが含まれます。
-  </li>
-
-  <li>Developer Preview 3 は、次の端末で <strong>互換性テストスイート(CTS)の承認</strong>を得ています。
-Nexus 5X、Nexus 6、Nexus 6P、Pixel C。CTS 承認済みビルドに依存するアプリは、これらの端末で正常に動作します(Android Pay など)。
-
-
-  </li>
-
-  <li>Developer Preview 3 は、<strong>次のすべてのサポート対象端末で利用できます</strong>。
-Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Nexus Player、Pixel C、General Mobile 4G(Android One)、Sony Xperia Z3(D6603 と D6653 モデル)。
-
-
-
-  </li>
-</ul>
-
-
-<h3 id="new">DP3 の新機能</h3>
-
-<h4 id="">Android 用 VR モード</h4>
-
-<p>
-  Android N には、新しい VR モードのためのプラットフォーム サポートと最適化が追加され、デベロッパーは高品質のモバイル端末 VR エクスペリエンスをユーザーのために生み出すことができます。
-多数のパフォーマンス強化があり、VR アプリ用の CPU コアへの排他アクセスが含まれます。
-
-アプリでは、VR 用に動作するインテリジェントなヘッド トラッキングやステレオ方式の通知を利用できます。
-最も重要な点は、Android N によって大幅に遅延の少ないグラフィックが実現されることです。
-
-</p>
-
-<p>
-  詳細については、<a href="https://developers.google.com/vr/android/">Google VR SDK for Android</a> をご覧ください。
-</p>
-
-<h4 id="">パフォーマンス維持モード</h4>
-
-<p>
-  Android N には、<a href="{@docRoot}preview/api-overview.html#sustained_performance_api">パフォーマンス維持モード</a>のオプション サポートが含まれており、OEM は長時間実行されているアプリの端末パフォーマンス機能に関するヒントを示すことができます。
-
-アプリのデベロッパーは、これらのヒントを使用して、長時間にわたって予測可能で一貫性のあるレベルの端末のパフォーマンスを維持できるようにアプリを調整できます。
-
-アプリのデベロッパーが Developer Preview でこの新しい API を試すことができるのは、Nexus 6P 端末上でのみです。
-
-</p>
-
-<h4>Multiprocess WebView</h4>
-
-<p>
-  Android N のバージョン 51 以降は、デベロッパー オプションの [Multiprocess WebView] が有効になっている場合、WebView は別のサンドボックス プロセスでウェブ コンテンツを実行します。
-
-WebView チームは、将来のバージョンの Android で Multiprocess WebView を有効にする前に、N での互換性やランタイム パフォーマンスに関するフィードバックを求めています。
-
-このバージョンでは、スタートアップ時間、メモリ使用量の合計、ソフトウェア レンダリング パフォーマンスの低下が予想されます。
-
-</p>
-
-<p>
-  マルチプロセス モードで予想外の問題が見つかった場合は、ご報告ください。
-<a href="https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">バグを報告</a>して WebView チームにご連絡ください。
-
-</p>
-
-<h4 id="">キーボード ショートカット ヘルパー</h4>
-
-<p>
-  Android N では、ユーザーは <code>Meta+/</code> キーを押して<strong>キーボード ショートカット</strong>画面をトリガーできます。この画面には、システムとアプリから使用できるすべてのショートカットが表示されます。
-
-デベロッパーは、独自のショートカットを追加したり、アプリからショートカット画面をトリガーしたりできます。
-詳細については、<a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">キーボード ショートカット ヘルパー</a>をご覧ください。
-
-</p>
-
-<h4 id="">FrameMetrics API</h4>
-
-<p>
-  DP3 で導入された新しい <a href="{@docRoot}preview/api-overview.html#framemetrics_api">FrameMetrics API</a> により、アプリでその UI レンダリング パフォーマンスを監視できます。この機能は、アプリの現在のウィンドウのフレーム タイミング情報を転送するストリーミング pubsub API を公開することによって実現されます。<code>FrameMetricsListener</code> を使用して、より高い粒度で、USB 接続の必要なく、本番環境のインタラクション レベルの UI パフォーマンスを計測できます。
-
-
-
-
-
-</p>
-
-<h4 id="api-changes">機能と API の変更</h4>
-
-<dl>
-  <dt>
-    ランチャー ショートカットとランチャー ショートカットの API
-  </dt>
-
-  <dd>
-    この機能は、Android の将来のリリースまで延期することを決定しました。次の Developer Preview 以降、公開 Android N API から、ランチャー ショートカットの API(ShortcutManager など)を削除することを計画しています。
-
-
-  </dd>
-
-  <dt>
-    ページを読み込む前に WebView Javascript が実行される
-  </dt>
-
-  <dd>
-    Android N 向けのアプリ以降、新しいページが読み込まれるときに、Javascript コンテキストがリセットされます。
-現在、コンテキストは、新しい {@link android.webkit.WebView} インスタンスで、最初に読み込まれるページに持ち越されます。
-
-    Javascript を {@link
-    android.webkit.WebView} に注入する予定のデベロッパーの方は、ページの読み込みが開始した後にスクリプトが実行されるようにしてください。
-
-  </dd>
-
-  <dt>
-    安全でないオリジンでの WebView の位置情報
-  </dt>
-
-  <dd>
-    Android N 向けのアプリ以降、位置情報 API は安全なオリジン(HTTPS 経由)でのみ許可されます。
-このポリシーは、ユーザーが安全でない接続を使用しているときにユーザーの個人情報を保護するために設計されています。
-
-  </dd>
-
-  <dt>
-    データセーバー
-  </dt>
-
-  <dd>
-    Developer Preview 3 以降、アプリで、システム ダイアログを表示するためのインテントを使用できます。これにより、ユーザーはデータセーバーの免除ホワイトリストに直接アプリを追加できます。
-
-詳細については、<a href="{@docRoot}preview/api-overview.html#data_saver">データセーバーのドキュメント</a>をご覧ください。
-
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#number-blocking">迷惑電話のブロック</a>
-  </dt>
-
-  <dd>
-    許可されていないユーザーが番号をブロックまたはブロック解除しようとした場合、現在は {@link java.lang.SecurityException} が発生してエラーになります。
-以前は、{@link java.lang.UnsupportedOperationException} がスローされていました。
-
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#tile_api">クイック設定タイル API</a>
-
-  </dt>
-
-  <dd>
-    現在は、タイルモードの決定に、アクティビティのメタデータが使用されます。
-    以前は、タイルモードは <code>TileService.onTileAdded()</code> の戻り値によって決定されていました。
-詳細については、ダウンロード可能な <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>の <code>TileService.META_DATA_ACTIVE_TILE</code> をご覧ください。
-
-  </dd>
-</dl>
-
-<h4 id="dp3-fixes">デベロッパーから報告された問題の修正</h4>
-
-<p>
-  次のものを含めて、デベロッパーから報告された問題が修正されました。
-</p>
-
-<ul>
-  <li>Bluetooth 音声の再生が、1 曲の後で中断される(バグ <a href="https://code.google.com/p/android/issues/detail?id=206889">206889</a>)
-  </li>
-
-  <li>Pixel C が一貫してクラッシュする(バグ <a href="https://code.google.com/p/android/issues/detail?id=206962">206962</a>)
-  </li>
-
-  <li>時計とトーストの通知の問題(バグ <a href="https://code.google.com/p/android/issues/detail?id=203094">203094</a>)
-  </li>
-
-  <li>Pixel C を USB C ケーブル経由で MacBook Pro に接続すると、再起動します。(バグ <a href="https://code.google.com/p/android/issues/detail?id=205432">205432</a>)
-
-  </li>
-
-  <li>カレンダーの設定が 1 日オフセットされる(バグ <a href="https://code.google.com/p/android/issues/detail?id=203002">203002</a>)
-  </li>
-
-  <li>TelephonyManager.getAllCellInfo から無効なデータが戻される(バグ <a href="https://code.google.com/p/android/issues/detail?id=203022">203022</a>)
-  </li>
-
-  <li>Nexus 6p、Bluetooth が頻繁に接続しなくなる(バグ <a href="https://code.google.com/p/android/issues/detail?id=208062">208062</a>)
-  </li>
-</ul>
-
-<p>修正された問題の一覧は、<a href="https://goo.gl/6uCKtf">Issue Tracker</a> をご覧ください。
-</p>
-
-<h3 id="ki">既知の問題</h3>
-
-<h4>ユーザー補助機能</h4>
-
-<ul>
-  <li>ピッチを最大レベルに近く設定すると、TTS 出力が聞こえません。
-  </li>
-
-  <li>ユーザーがズーム操作や設定などの仕事用プロファイルを追加すると、ユーザー補助機能と設定が妨げられます。
-ユーザー補助機能に関連する設定を、ユーザーが後で操作すると、ユーザー補助機能の状態が復元されます。
-
-  </li>
-</ul>
-
-<h4>カメラ</h4>
-
-<ul>
-  <li>カメラアプリの動作が不安定で、マルチ ウィンドウ モードで起動したときなど、さまざまな状況でクラッシュします。
-
-  </li>
-
-  <li>パノラマモードでシャッターを続けて押すと、カメラアプリがクラッシュすることがあります。
-
-  </li>
-</ul>
-
-<h4>音声</h4>
-<ul>
-  <li>プラットフォームの音楽プレーヤーの問題により、一部のアプリが正常に動作しません。
-たとえば、Skype その他のアプリがこの問題の影響を受けます。
-  </li>
-</ul>
-
-<h4>接続</h4>
-
-
-<ul>
-  <li>Bluetooth Low Energy(BLE)周辺ロール端末がサービスをアドバタイズし、BLE セントラル ロール端末が接続すると、周辺ロール端末の接続が即座に切断されます。
-
-
-  </li>
-
-  <li>画面がオフになっているときに、Wi-Fi 接続が切れることがあります。
-  </li>
-
-  <li>RFCOMM 接続が不安定で、データが破損したり、接続が混乱することがあります。
-
-  </li>
-
-  <li>一部の制限された背景シナリオにおいて、アクティブ ネットワーク状態({@link android.net.NetworkInfo#getState
-  NetworkInfo.getState()} と {@link android.net.NetworkInfo#getDetailedState
-  NetworkInfo.getDetailedState()})によって、誤った値が戻されることがあります。
-
-  </li>
-</ul>
-
-
-<h4>
-  ランチャー
-</h4>
-
-<ul>
-  <li>画面のオンとオフを切り替えた後、既定のランチャーの [All Apps] トレイが応答しなくなることがあります。
-この問題は、ホーム画面に戻り、[All Apps] トレイを再起動することで解決する場合があります。
-
-  </li>
-</ul>
-
-<h4>
-  キーボード
-</h4>
-
-<ul>
-  <li>Android 6.0 以前を実行する端末を N Developer Preview にアップデートすると、Google キーボードで、絵文字やサウンド設定などの設定が保持されません。
-
-
-  </li>
-
-  <li>Google Indic Managed キーボードが不安定になることがあります。
-  </li>
-
-  <li>パスワード項目にテキストを入力するとき、ユーザーは入力言語としてロシア語を選択できるにもかかわらず、キーボードは英語のままになります。
-このため、ユーザーはロシア語のパスワードを入力できません。
-
-  </li>
-</ul>
-
-<h4>
-  ロケールと言語
-</h4>
-
-<ul>
-  <li>右から左(RTL)のロケールを使用しているとき、端末を再起動した後に、システムが予期せず左から右(LTR)の表示に切り替わることがあります。
-
-  </li>
-</ul>
-
-<h4>メディア</h4>
-
-<ul>
-  <li>Nexus 9 と Nexus Player のメディア再生の信頼性が低くなり、HD 動画の再生の問題も発生します。
-
-  </li>
-</ul>
-
-<h4>
-  マルチ ウィンドウ モード
-</h4>
-
-<ul>
-  <li>マルチ ウィンドウ モードで画面の向きを変えているときに端末がフリーズすることがあります。
-  </li>
-
-  <li>現在、複数のアプリにマルチ ウィンドウ モードの問題があります。
-    <ul>
-      <li>マルチ ウィンドウで [Settings] &gt; [Display] &gt; [Screen brightness] をドッキングしているときに、システム UI がクラッシュすることがあります。
-
-      </li>
-
-      <li>カメラアプリをマルチ ウィンドウ モードで起動すると、クラッシュすることがあります。
-      </li>
-
-      <li>YouTube をマルチ ウィンドウ モードで起動すると、クラッシュすることがあります。[Storage] &gt; [Apps] &gt; [YouTube] で YouTube アプリのデータをクリアすると、この問題を修正できることがあります。
-
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>
-  Google Play services
-</h4>
-
-<ul>
-  <li>ユーザーが ASCII 範囲外の文字や数字を使用するシステム ロケールを選択した場合に、Google Play services 経由で Google Cast を使用するアプリが不安定になることがあります。
-
-
-  </li>
-</ul>
-
-<h4>
-  Android for Work と Google Apps のデバイス ポリシー
-</h4>
-
-<ul>
-  <li>[device policy status] 画面を固定した状態で、ユーザーが端末のロックを解除すると、デバイス ポリシー アプリがクラッシュすることがあります。
-
-  </li>
-
-  <li>ファイルベースの暗号化を有効にして仕事用プロファイルをセットアップした後で Work をオフにした場合、再度 Work アプリにアクセスするには、ユーザーはプライマリ プロファイル画面ロックを解除する必要があります。
-
-
-  </li>
-
-  <li>セキュリティ パターン ロックを削除し、仕事用または個人用のアプリをマルチ ウィンドウで開くと、端末が再起動します。
-
-  </li>
-
-  <li>DISALLOW_VPN_CONFIG を設定すると、デバイス ポリシー クライアントによって always-on-vpn に設定され、同意を求めるダイアログが表示されます。
-
-  </li>
-
-  <li>VPN が always-on-vpn モードで接続されるまで、トラフィックがロックダウンされません。
-  </li>
-</ul>
-
-<h4>
-  外部ストレージ
-</h4>
-
-<ul>
-  <li>ユーザーがアプリを内部ストレージから適用可能な外部ストレージ(SD カードや USB 接続された端末など)に移動した場合に、そのアプリが不安定になることがあります。
-
-
-  </li>
-</ul>
-
-<h4>
-  Google Play での画面ズームと複数の APK
-</h4>
-
-<ul>
-  <li>Android N を実行する端末で、Google Play services 9.0.83 によって、安定した画面密度ではなく、現在の画面密度が誤って報告されます。
-これらの端末で画面ズームが有効になっていると、このことによって、より小さい画面向けに設計されたマルチ APK アプリのバージョンが Google Play によって選択されることがあります。
-
-この問題は、Google Play services の次のバージョンで修正され、その後の Developer Preview リリースに含められます。
-
-
-  </li>
-
-  <li>Android N を実行する端末で、現在、Google Play services 9.0.83 によって、Vulkan バージョンではなく、Vulkan サポートが報告されます。
-このことによって、より高いバージョンがサポートされた端末で、より低いバージョンの Vulkan サポート向けに設計されたマルチ APK アプリのバージョンが Google Play によって選択されることがあります。
-
-現在、Google Play ストアでは、Vulkan バージョンのターゲットを使用するアプリのアップロードは受け入れていません。
-このサポートは将来 Google Play Store に追加され、次のバージョンの Google Play services で修正されます(その後の Developer Preview リリースに含められます)。Google Play services 9.0.83 のバージョンを使用するすべての N 端末は、基本的な Vulkan サポートをターゲットとするアプリのバージョンを引き続き受信します。
-
-
-
-
-  </li>
-</ul>
-
-<h4 id="">通知</h4>
-
-<ul>
-  <li>MessagingStyle に、送信者が null(自分)の通知が表示されません。
-  </li>
-</ul>
-
-<h4 id="">デベロッパー ツール</h4>
-
-<ul>
-  <li>
-    JDWP デバッグを使用している間に、<code>adb</code> の接続が切断されることがあります。
-  </li>
-</ul>
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-
-
-
-
-
-
-
-<!-- DP2 Release Notes Archive -->
-
-<h2 id="dp2">Developer Preview 2</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>日付:2016 年 4 月<br>
-        ビルド:NPC91K、NPC91O<br>
-        エミュレータ サポート: x86 と ARM(32 / 64 ビット)<br>
-        Google Play services:8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp2-new">DP2 の新機能</h3>
-
-<ul>
-  <li>Vulkan のプラットフォーム サポートである、新しい 3D レンダリング API により、GPU(Graphics Processor Unit)を明示的に、かつ少ないオーバーヘッドで制御でき、ドローコールの多いアプリのパフォーマンスが向上しています。
-
-詳細については、<a href="{@docRoot}ndk/guides/graphics/index.html">ドキュメント</a>をご覧ください。
-
-  </li>
-
-  <li>新しい連絡帳アプリの絵文字では、肌色と、新しい Unicode 9 のグリフがサポートされます。
-  肌色と新しい絵文字は、キーボードのビルドにパレット内でのこれらに対するサポートが備えられるまで、表示されません。
-非システム フォントを使用するアプリを除き、アプリでこれらの新しい絵文字を利用するための操作は必要ありません。
-IME のデベロッパーは新しい絵文字のサポートを組み込む必要があります。
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/api-overview.html#launcher_shortcuts">ランチャー ショートカットの API</a>:
-アプリでは <code>ShortcutManager</code> を使用して、それ自体の中の開始点へのショートカットを、ランチャーに送信できます。
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/features/multi-window.html">マルチ ウィンドウ</a>:
-    アクティビティに対して個別に最小の高さと幅を指定できるようになりました。
-さらに、複数の API の名前が少し変更されました。
-  </li>
-</ul>
-
-<h4 id="dp2-fixes">デベロッパーから報告された問題の修正</h4>
-
-<p>
-  次のものを含めて、デベロッパーから報告された問題が修正されました。
-</p>
-
-<ul>
-  <li>隠された SSID や、非ブロードキャスト Wi-Fi に接続できません。(バグ <a href="https://code.google.com/p/android/issues/detail?id=203116">203116</a>)
-  </li>
-
-  <li>マイクのミュート状態がアクティビティをまたいで保持されます。(バグ <a href="https://code.google.com/p/android/issues/detail?id=205922">205922</a>)
-  </li>
-
-  <li>マルチ ウィンドウのフォーカスを変更すると、YouTube が停止します。(バグ <a href="https://code.google.com/p/android/issues/detail?id=203424">203424</a>)
-  </li>
-
-  <li>ダイレクト リプライによって、開かれているアクティビティが閉じられることがあります。(バグ <a href="https://code.google.com/p/android/issues/detail?id=204411">204411</a>)
-  </li>
-
-  <li>安定性に関するさまざまな修正。
-  </li>
-</ul>
-
-<h3 id="dp2-general">一般的な注意事項</h3>
-
-<p>
-  この Developer Preview リリースは、<strong>アプリのデベロッパーのみ</strong>を対象とし、互換性テストと初期の開発のみで使用するために開発されています。
-
-  このリリースに関する次の一般的な事項に注意してください。
-</p>
-
-<ul>
-
-  <li>DP2 リリースで、開発ツールのコンポーネントとサポート ライブラリがアップデートされました。
-DP2 のための開発を行う前に、Preview 開発環境をアップデートしてください。
-開発環境のセットアップの手順については、<a href="{@docRoot}preview/setup-sdk.html">Preview のセットアップ</a>をご覧ください。
-
-
-  </li>
-
-  <li>このリリースには、すべての端末における安定性とパフォーマンスに関するさまざまな問題があるため、特に、デベロッパー以外の方が、<strong>スマートフォンやタブレットで日常的に使用することには適していません。</strong>
-
-
-  </li>
-
-  <li>このリリースでは、電池寿命とパフォーマンスがまだ最適化されていません。
-
-
-    <ul>
-      <li>システムとアプリの<strong>パフォーマンスが、定期的に遅くなるか、不自然になることがわかっており</strong>、端末が応答しなくなることがあります。
-これらの問題は、使用時間が長くなると、より深刻化します。
-
-      </li>
-
-      <li>このリリースでは、画面のオンとオフのユースケースで電池寿命が短くなることがあります。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>Developer Preview 2 で、一部の<strong>アプリが正常に機能しないことがあります</strong>。これには Google のアプリと、その他のアプリが含まれます。
-
-  </li>
-
-  <li>この早期のビルドは、<strong>互換性テストスイート(CTS)で承認されていません</strong>。
-CTS 承認済みビルドに依存するアプリは動作しません(Android Pay など)。
-
-  </li>
-
-  <li>このプレビュー リリースでは、次の端末をサポートしています。Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Pixel C、および General Mobile 4G(Android One)
-
-Nexus Player は近い将来サポートされます。
-  </li>
-
-
-  <li>DP1 と DP2 の間の API の変更に対処するために、<a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> がアップデートされました。
-
-  </li>
-</ul>
-
-<h3 id="dp2-ki">既知の問題</h3>
-
-<h4>パフォーマンスと電池</h4>
-
-<ul>
-  <li>システムとアプリのパフォーマンスが、<strong>定期的に遅くなるか、不自然になる</strong>ことがわかっており、端末が応答しなくなることがあります。
-これらの問題は、使用時間が長くなると、より深刻化します。
-
-  </li>
-</ul>
-
-<h4>Google アカウント</h4>
-
-<ul>
-  <li>一部の状況において、<code>AccountManagerService</code> によって Google アカウントにログインできなくなる問題が発生することがあります。
-
-  </li>
-</ul>
-
-<h4>システムアップデート</h4>
-
-<ul>
-  <li>DP2 にアップデートすると、即座に端末が再起動します。
-  </li>
-</ul>
-
-<h4>ユーザー補助機能</h4>
-
-<ul>
-  <li>ピッチを最大レベルに近く設定したときの、テキスト読み上げ(TTS)出力が聞こえない問題。
-
-  </li>
-</ul>
-
-<h4>Bluetooth</h4>
-
-<ul>
-  <li>Bluetooth Low Energy(LE)GATT 特性によって、誤った書き込みタイプが使用され、リモート端末に送信されません。
-これにより、一部のフィットネス端末が機能しません。
-
-  </li>
-</ul>
-
-<h4>セットアップ ウィザード</h4>
-
-<ul>
-  <li>セットアップ ウィザードで、[Your Google Account] から、新しい端末(または新しくリセットされた端末)にデータを復元するオプションが動作しません。
-セットアップ ウィザードで [another Android device] を選択して既存の端末からデータを復元するか、新しい端末としてセットアップする必要があります。
-
-
-  </li>
-</ul>
-
-<h4>OEM ロック解除</h4>
-
-<ul>
-  <li>一部の端末では、DP2 の実行中、[Developer Options] の [<strong>Enable OEM unlock</strong>] がグレー表示されます。
-<br>
-  <strong>回避策:</strong><a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a> にアクセスし、Android ベータ版プログラムを導入します(まだ導入していない場合)。
-
-その後削除して、ダウングレード OTA を受け入れます。
-削除の結果、端末は Android 6.0 にダウングレードされます。これで、[Developer Options] の [<strong>Enable OEM unlock</strong>] を選択できるようになります。
-
-端末をダウングレードすると、個人データは消去されます。ただし、ブートローダーをロック解除したとしても、やはりこのデータは消去されます。
-
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>仕事用のセキュリティ確認
-    <ul>
-      <li>N に移行した後、またはユーザーが仕事用プロファイルを作成した後、ユーザーが自分のパターン、PIN またはパスワードを変更するか、仕事用のセキュリティ確認をセットアップするまで、プロファイルでキーストアにキーを作成できません。
-
-
-      </li>
-
-      <li>ダイレクト ブート モードで、端末にパスコード制限を適用すると、端末がロックされている場合でも、仕事用プロファイルがロック解除されます。
-
-      これにより、端末ロック画面によって保護される必要がある場合にも、仕事用プロファイルにアクセスできるようになります。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>Always On VPN
-    <ul>
-      <li>Always On VPN モードがオンで、VPN が使用できない場合、アプリが通常のネットワークで接続します。
-VPN 接続を使用できない場合、アプリはオフラインである必要があります。
-
-      </li>
-
-      <li>Always On モードがオンになっているとき、端末が再起動してダイレクト ブート モードになった後は、ユーザーがセキュリティ保護されたロック画面をロック解除した後でも、VPN 接続が確立されません。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>パッケージの停止
-    <ul>
-      <li>[Telephone disabled] ダイアログが表示されているにもかかわらず電話をかけるなど、予期しない動作が発生する可能性がある場合、端末管理者は、重要なシステム パッケージを停止できます。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>その他
-    <ul>
-      <li>{@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} が true に設定されていると、ユーザーが SD カードなどの物理メディアを挿入したときに、Settings アプリが起動時にクラッシュします。
-
-      </li>
-
-      <li>仕事用プロファイルでの最初のチェックが完了するまで数分かかります。
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4 id="vulkan">Vulkan</h4>
-
-<ul>
-   <li>Nexus 5X/6P</li>
-   <ul>
-      <li>バインド番号と、ゼロでない最初のバインド番号のギャップにより、{@code vkCreateGraphicsPipeline()} が失敗します。
-</li>
-      <li>Vulkan によって、投影されたテクスチャ座標に関する誤ったサンプリング動作が示されます。</li>
-      <li>multithreadCmdBuffer サンプルで、N-DP2 ドライバを使用して {@code vkCmdClearColorImage()} を実行すると、クラッシュします。
-</li>
-      <li>{@code vkGetPhysicalDeviceFormatProperties()} からの戻り値で、{@code VkFormatProperties::linearTilingFeatures} の値が設定されず、結果として 0 の値が取得されます。
-
-</li>
-      <li>Vulkan 浮動小数点フレーム バッファの添付ファイルが正しく処理されません。</li>
-    </ul>
-   <li>Nexus Player</li>
-   <ul>
-      <li>SPIR-V シェーダーによって、ドライバ アサートがトリガーされることがあります。</li>
-      <li>一部のパイプライン構成によって {@code vkCreateGraphicsPipeline()} がクラッシュすることがあります。
-</li>
-  </ul>
-</ul>
-
-<h4>端末固有の問題</h4>
-
-<dl>
-  <dt>
-    <strong>Android One</strong>
-  </dt>
-
-  <dd>
-    端末がスロット 1 からスロット 2 SIM に切り替わったときに、データ接続が失敗します。
-  </dd>
-
-  <dt>
-    <strong>Pixel C</strong>
-  </dt>
-
-  <dd>
-    音声検索の [Always On] オプションを切り替えることができません。
-  </dd>
-
-  <dt>
-    <strong>Nexus 6</strong>
-  </dt>
-
-  <dd>
-    HDR+ フォトを除き、カメラの縦向きの写真が破損します。
-
-  </dd>
-
-  <dt>
-    <strong>Nexus Player</strong>
-  </dt>
-
-  <dd>
-    Nexus Player で、Netflix HD コンテンツの再生が失敗することがあります。
-  </dd>
-
-  <dd>
-    動的な動画の解像度変更に依存するすべてのアプリが、Nexus Player で失敗することがあります。
-
-  </dd>
-
-  <dd>
-    VP9 動画コーデックを使用するすべてのアプリが、Nexus Player で失敗することがあります。
-  </dd>
-</dl>
-
-<!-- DP 1 release notes archive -->
-
-<h2 id="dp1">Developer Preview 1</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>日付:2016 年 3 月<br>
-        ビルド:NPC56P、NPC56R、アップデート:NPC56W、NPC56X<br>
-        エミュレータ サポート: x86 と ARM(32 / 64 ビット)<br>
-        Google Play services:8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp1-general">一般的な注意事項</h3>
-
-<p>
-  この Developer Preview リリースは、アプリのデベロッパーのみを対象とし、互換性テストと初期の開発のみで使用するために開発されています。
-このリリースに関する次の一般的な事項に注意してください。
-
-</p>
-<ul>
-  <li>このリリースには、すべての端末における安定性とパフォーマンスに関するさまざまな問題があるため、特に、デベロッパー以外の方が、<em>スマートフォンやタブレットで日常的に使用することには適していません。</em>
-
-
-  </li>
-
-  <li>システムとアプリのパフォーマンスが、<strong>定期的に遅くなるか、不自然になる</strong>ことがわかっており、端末が応答しなくなることがあります。
-これらの問題は、使用時間が長くなると、より深刻化します。
-
-  </li>
-
-  <li>このリリースでは、画面のオンとオフのユースケースで電池寿命が短くなることがあります。
-
-  </li>
-
-  <li>Developer Preview 1 で、一部のアプリが正常に機能しないことがあります。これには Google のアプリと、その他のアプリが含まれます。
-
-  </li>
-
-  <li>この早期のビルドは、互換性テストスイート(CTS)で承認されていません。CTS 承認済みビルドに依存するアプリは動作しません(Android Pay など)。
-
-  </li>
-
-  <li>このプレビュー リリースでは、次の端末をサポートしています。Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Nexus Player、Pixel C、および General Mobile 4G(Android One)
-
-
-  </li>
-</ul>
-
-<h3 id="dp1-platform">プラットフォームの問題</h3>
-
-<h4>パフォーマンスと電池</h4>
-
-<ul>
-  <li>システムとアプリのパフォーマンスが、<strong>定期的に遅くなるか、不自然になる</strong>ことがわかっており、端末が応答しなくなることがあります。
-これらの問題は、使用時間が長くなると、より深刻化します。
-
-  </li>
-
-  <li>このリリースでは、画面のオンとオフのユースケースで電池寿命が短くなることがあります。
-
-  </li>
-</ul>
-<h4 id="dialer">電話</h4>
-
-<ul>
-  <li>電話アプリではダイレクト ブートがサポートされていません。このことは、将来、N Developer Preview で対応されます。
-
-  </li>
-
-  <li>ボイスメールの再生が動作しません。
-  </li>
-</ul>
-
-<h4>マイク</h4>
-
-<ul>
-   <li>アプリの再起動をまたいで、マイクのミュート状態が誤って保持されることがあります。あるアプリでマイクをミュートし、その状態が保持されている場合は、マイクのミュート制御機能のある任意のアプリを開き、マイクのミュートを解除してください。</li>
-</ul>
-
-<h4 id="ui">システム UI</h4>
-
-<ul>
-  <li>システム UI の、一部の新しいまたは変更された文字列の中に、すべての言語には翻訳されていないものがあります。
-
-  </li>
-
-  <li>[Overview] の UI は現在開発中であり、変更されることがあります。たとえば、ユーザーがアプリを切り替えたときに表示されるタイマーを削除する予定です。
-
-
-  </li>
-
-  <li>設定のコントロールとトグルが遅いか、応答しないように見えます。
-  </li>
-
-  <li>通知の視覚的デザインは変更されることがあります。
-  </li>
-
-  <li>Gmail アプリで、通知バンドルに含まれるメールの直接アーカイブが正常に動作しません。
-
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>仕事用のセキュリティ確認
-    <ul>
-      <li>N に移行した後、またはユーザーが仕事用プロファイルを作成した後、ユーザーが自分のパターン、PIN またはパスワードを変更するか、仕事用のセキュリティ確認をセットアップするまで、プロファイルでキーストアにキーを作成できません。
-
-
-      </li>
-
-      <li>ダイレクト ブート モードで、端末にパスコード制限を適用すると、端末がロックされている場合でも、仕事用プロファイルがロック解除されます。
-
-      これにより、端末ロック画面によって保護される必要がある場合にも、仕事用プロファイルにアクセスできるようになります。
-
-      </li>
-
-      <li>ユーザーが誤ったパスワードと PIN を入力したときに、情報メッセージが表示されず、入力項目が消去されるのみです。
-
-この問題は指紋入力のパターンには影響しません。
-      </li>
-
-      <li>タブレットで、仕事用のセキュリティ確認で表示される背景が不相応に小さくなります。
-
-      </li>
-
-      <li>N Developer Preview にバンドルされている <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">Google Apps のデバイス ポリシー</a>のバージョン では、仕事用プロファイルのセキュリティ確認機能がまだサポートされていません。
-
-
-        デベロッパーは、この機能をテストする場合は、代わりに <a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> を使用する必要があります。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>Always On VPN
-    <ul>
-      <li>Always On VPN モードがオンで、VPN が使用できない場合、Always On ポリシーの例外として指定されていないアプリが通常のネットワークで接続します。
-
-Always On VPN ポリシーの例外として指定されていない限り、VPN 接続を使用できない場合、アプリはオフラインである必要があります。
-
-        <ul>
-          <li>Always On モードがオンになっているとき、端末が再起動してダイレクト ブート モードになった後は、ユーザーがセキュリティ保護されたロック画面をロック解除した後でも、VPN 接続が確立されません。
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>連絡先の改善
-    <ul>
-      <li>Bluetooth PBAP / MAP 端末で、仕事用連絡先の発信者番号が表示されません。
-この問題は Preview の次のリリースで解決されます。
-      </li>
-    </ul>
-  </li>
-
-  <li>ワークモード
-    <ul>
-      <li>Google Now ランチャーで、ワークモードがオンかオフかが表示されません。
-また、ランチャーにはアプリの保留状態も表示されません。
-      </li>
-
-      <li>ユーザーがワークモードのオンとオフを切り替えた後、カレンダーなどの仕事用プロファイルのアプリ ウィジェットが表示されなくなります。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>パッケージの停止
-  </li>
-
-  <li>[Telephone disabled] ダイアログが表示されているにもかかわらず電話をかけるなど、予期しない動作が発生する可能性がある場合、端末管理者は、重要なシステム パッケージを停止できます。
-
-
-  </li>
-
-  <li>その他
-    <ul>
-      <li>{@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} が true に設定されていると、ユーザーが SD カードなどの物理メディアを挿入したときに、Settings アプリが起動時にクラッシュします。
-
-      </li>
-
-      <li>ユーザーがアプリをアンインストールした後で再インストールしたときに、{@code DPM.setPackagesSuspended} 状態が保持されません。
-アンインストールと再インストールの後、アプリが停止されたままになるか、停止されたアプリはアンインストール可能にならないかのいずれかである必要があります。
-
-
-      </li>
-
-      <li>仕事用プロファイルでの最初のチェックが完了するまで数分かかります。
-これにより、端末が Play EMM API によって認識されるまでに、通常よりも長い時間がかかる場合があります。
-
-      </li>
-
-      <li>仕事用プロファイル アプリからの通知が、個人プロファイルにインストールされた通知リスナによって認識されません。
-その結果、通知が期待どおりに表示されません。
-
-      </li>
-
-    </ul>
-  </li>
-</ul>
-
-<h4 >キーボード</h4>
-
-<ul>
-  <li>キーボードと Android 端末の間の Bluetooth ペア設定が不安定になることがあります。
-  </li>
-</ul>
-
-<h4 >動画</h4>
-
-<ul>
-<li>動画の再生が遅延したり中断されたりします。</li>
-</ul>
-
-<h4>Wi-Fi</h4>
-
-<ul>
-  <li>Wi-Fi に対して行われたリファクタリングにより、API のコーナーケースの動作が変化する場合があります。
-特に、特定のネットワークへの接続や、ネットワークへの再接続を試みるアプリについては、再テストの必要があります。
-
-  </li>
-
-  <li>以前の DHCP クライアントがプラットフォームから削除されました。プラットフォームでサポートされる DHCP は、M で導入された DHCP クライアントのみとなります。
-
-  </li>
-</ul>
-
-<h4>ダイレクト ブート</h4>
-
-<ul>
-  <li>NFC は最初にロック解除するまで機能しません。
-    <ul>
-      <li>Bluetooth が有効なスマートフォンを再起動したときに、Bluetooth が自動的にオンになりません。
-手動で Bluetooth を再度有効にする必要があります。
-      </li>
-
-      <li>一部の状況において、電話やメッセージに対して既定の着信音が鳴りません。
-この動作は、1 つの例外(と回避策)を除き、次の N Preview リリースで修正されます。
-
-      </li>
-
-      <li>ワイプされた直後でない端末、つまり、ダイレクト ブート モードに設定された後で少なくとも 1 回起動された端末では、既定の通知着信音が鳴りません。
-
-ユーザーは、[Settings] から手動で着信音を選択することで、この問題を回避できます。
-
-      </li>
-
-      <li>ダイレクト ブートは、N Developer Preview ビルドが実行される端末では、既定で有効になっていません。
-テストや開発のためにダイレクト ブートを有効にするには、[Developer Options] に移動して [Convert to File Encryption] をタップします。
-
-      この Developer Preview では、このことを行うには、ファクトリ リセットによって再パーティション化し、端末をファイルベースの暗号化向けにリフォーマットする必要があります。
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Android TV のピクチャ イン ピクチャ</h4>
-
-<ul>
-  <li>[Recents] の UI における PIP 統合は最終版ではなく、変更されることがあります。
-
-    <ul>
-      <li>PIP ウィンドウのアニメーションが滑らかではありません。Preview の将来のリリースで、このことが改善されます。
-
-      </li>
-    </ul>
-  </li>
-
-  <li style="list-style: none">Preview の将来のリリースで、PIP の視覚的デザインとレイアウトの整列が改善されます。
-
-  </li>
-</ul>
-
-<h4>バグ報告</h4>
-
-<ul>
-  <li>バグ報告は必ずしも正常に完了しません(回避策として、内部ストレージのバグ報告ドキュメント プロバイダからアクセスできるようになっている場合があります)。
-
-
-  </li>
-</ul>
-
-<h4>マルチ ウィンドウでの分割画面</h4>
-
-<ul>
-  <li>分割画面モードにすると、アプリがクラッシュし、予期しない UI 動作が発生することがあります。
-これらはアプリの問題であり、アプリのデベロッパーが修正する必要があります。
-
-  </li>
-
-  <li>Android プラットフォームの N より前のバージョンをターゲットとするアプリは、複数回表示される分割画面トーストが動作しません。
-
-  </li>
-
-  <li>画面の向きが固定されたアプリを使用しているときに [Overview] ボタンを長押しすると、アプリに予期しない動作が発生します。
-
-  </li>
-
-  <li>サイズ変更中にアプリの表示がちらつくことがあります。
-  </li>
-
-  <li>アニメーションはまだ完成していません。
-  </li>
-</ul>
-
-<h4>入力方法</h4>
-
-<ul>
-  <li><b>システム言語を使用している</b>ときに、Google キーボードが予期せず汎用的な Google キーボードにフォールバックしますが、Google キーボードではシステム言語設定で選択されている言語がいずれもサポートされていません。
-
-米国英語にフォールバックする必要があります。
-
-    <p>
-      Google キーボードでサポートされる、少なくとも 1 つの言語を追加することで、この問題を回避できます。
-
-    </p>
-  </li>
-</ul>
-
-<h4>ユーザー補助機能</h4>
-
-<ul>
-  <li>TalkBack で通知、クイック設定タイル、マルチ ウィンドウ表示などの機能に問題が発生し、システムがクラッシュするか、TalkBack からの音声フィードバックがなくなります。
-
-Preview の将来のリリースで、この問題に対処します。
-
-  </li>
-</ul>
-
-<h3 id="dp1-device-sp">端末固有のノートと問題</h3>
-
-<h4>Nexus Player</h4>
-<ul>
-  <li>このリリースの Preview の Nexus Player では、動画再生、アプリの互換性と安定性の問題が発生することがあります。
-
-  </li>
-</ul>
-
-<h4>Pixel C</h4>
-<ul>
-<li>マルチ ウィンドウのサイズ変更によってクラッシュが発生することがあります。</li>
-</ul>
-
-<h4>Nexus 9</h4>
-<ul>
-<li>Nexus 9 の端末が、Android ベータ版プログラムを経由して over-the-air(OTA)アップデートを受信した後、起動しません。
-OTA イメージを手動でインストールすると、この問題が解決することがあります。
-詳細については、<a href="{@docRoot}preview/download-ota.html">端末の OTA イメージの適用</a> をご覧ください。
-
-</li>
-</ul>
-
diff --git a/docs/html-intl/intl/ja/preview/features/direct-boot.jd b/docs/html-intl/intl/ja/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/ja/preview/features/direct-boot.jd
rename to docs/html-intl/intl/ja/training/articles/direct-boot.jd
index 933e682..eaa684c7 100644
--- a/docs/html-intl/intl/ja/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ja/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>このドキュメントの内容</h2>
   <ol>
     <li><a href="#run">ダイレクト ブート中に実行するためのアクセスを要求する</a></li>
diff --git a/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ja/training/articles/scoped-directory-access.jd
similarity index 93%
rename from docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/ja/training/articles/scoped-directory-access.jd
index e4f9ae2..0767689 100644
--- a/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/ja/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>このドキュメントの内容</h2>
   <ol>
     <li><a href="#accessing">外部ストレージのディレクトリへのアクセス</a></li>
@@ -71,8 +71,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>図 1.</strong> Pictures ディレクトリへのアクセスを要求するアプリ
 </p>
 
@@ -138,8 +138,8 @@
 リクエストがユーザーにより拒否され、アプリが再度アクセスをリクエストすると、UI に [<b>Don't ask again</b>] チェックボックスが表示されます。
 </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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-dont-ask_2x.png 2x" />
 <p class="img-caption"><strong>図 1.</strong> リムーバブル メディアへのアクセスに対して 2 回目のリクエストを行うアプリ。
 </p>
 
diff --git a/docs/html-intl/intl/ja/preview/features/security-config.jd b/docs/html-intl/intl/ja/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/ja/preview/features/security-config.jd
rename to docs/html-intl/intl/ja/training/articles/security-config.jd
index 1fbfe72..d86c547 100644
--- a/docs/html-intl/intl/ja/preview/features/security-config.jd
+++ b/docs/html-intl/intl/ja/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>このドキュメントの内容</h2>
 <ol>
diff --git a/docs/html-intl/intl/ja/preview/features/data-saver.jd b/docs/html-intl/intl/ja/training/basics/network-ops/data-saver.jd
similarity index 99%
rename from docs/html-intl/intl/ja/preview/features/data-saver.jd
rename to docs/html-intl/intl/ja/training/basics/network-ops/data-saver.jd
index 6336151..c661b65 100644
--- a/docs/html-intl/intl/ja/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/ja/training/basics/network-ops/data-saver.jd
@@ -4,8 +4,8 @@
 page.image=images/cards/card-nyc_2x.jpg
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>
       このドキュメントの内容
     </h2>
@@ -231,4 +231,4 @@
     指定されたパッケージ UID をホワイトリストから削除し、データセーバーが有効な場合でもバックグラウンドで従量制課金接続を使用できないようにします。
 
   </dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ja/training/tv/playback/picture-in-picture.jd
similarity index 98%
rename from docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/ja/training/tv/playback/picture-in-picture.jd
index 0bb4a75..1df16cd 100644
--- a/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/ja/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>このドキュメントの内容</h2>
 <ol>
@@ -59,7 +59,7 @@
 
 最近使ったアプリから PIP ウィンドウを閉じることもできます。</p>
 
-<img src="{@docRoot}preview/images/pip-active.png" />
+<img src="{@docRoot}images/android-7.0/pip-active.png" />
 <p class="img-caption"><strong>図 1.</strong> ユーザーがメイン画面でコンテンツを閲覧中に画面の隅に表示されるピクチャ イン ピクチャの動画
 
 </p>
@@ -116,7 +116,7 @@
 <p>メディア コントロール バーに PIP ボタンを追加すると、ユーザーが動画の再生を操作中に、簡単に PIP モードに切り替えることができます。
 </p>
 
-<img src="{@docRoot}preview/images/pip-button.png" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>図 1.</strong> メディア コントロール バー上の [Picture-in-picture] ボタン
 </p>
 
diff --git a/docs/html-intl/intl/ja/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ja/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/ja/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/ja/training/tv/tif/content-recording.jd
index bf5f9a9..3c58cfd 100644
--- a/docs/html-intl/intl/ja/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/ja/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>このドキュメントの内容</h2>
   <ol>
     <li><a href="#supporting">録画のサポートを示す</a></li>
diff --git a/docs/html-intl/intl/ko/preview/guide.jd b/docs/html-intl/intl/ko/about/versions/marshmallow/android-6.0-testing.jd
similarity index 98%
rename from docs/html-intl/intl/ko/preview/guide.jd
rename to docs/html-intl/intl/ko/about/versions/marshmallow/android-6.0-testing.jd
index d7ea7e3..1222227 100644
--- a/docs/html-intl/intl/ko/preview/guide.jd
+++ b/docs/html-intl/intl/ko/about/versions/marshmallow/android-6.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>이 문서의 내용</h2>
       <ol>
         <li><a href="#runtime-permissions">권한 테스트</a></li>
diff --git a/docs/html-intl/intl/ko/preview/behavior-changes.jd b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0-changes.jd
similarity index 97%
rename from docs/html-intl/intl/ko/preview/behavior-changes.jd
rename to docs/html-intl/intl/ko/about/versions/nougat/android-7.0-changes.jd
index 5d325e1..d30048f 100644
--- a/docs/html-intl/intl/ko/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>이 문서의 내용</h2>
 
@@ -77,7 +77,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>그림 1.</strong> 잠자기 모드에서 배터리 수명을 개선하기 위해 첫 번째 레벨의 시스템 액티비티 제한을
 적용하는 방법에 대한 그림.
@@ -96,7 +96,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" />
 <p class="img-caption">
   <strong>그림 2.</strong> 기기가 일정 시간 동안 정지 상태에 있은 후에
 잠자기 모드에서 두 번째 레벨의 시스템 액티비티 제한을 적용하는 방법에 대한 그림.
@@ -282,10 +282,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/ko/preview/samples.jd b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0-samples.jd
similarity index 78%
rename from docs/html-intl/intl/ko/preview/samples.jd
rename to docs/html-intl/intl/ko/about/versions/nougat/android-7.0-samples.jd
index 1753bfa..1310ae7 100644
--- a/docs/html-intl/intl/ko/preview/samples.jd
+++ b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <h3 id="mw">다중 창 플레이그라운드</h3>
-<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<img src="{@docRoot}images/android-7.0/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
 <p>
   이 샘플은 앱으로 다중 창 사용자 인터페이스를 활용하는
 방법을 보여줍니다.
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   이것은 NotificationCompat를 사용하여 알림을 발송하는 간단한 서비스를 보여주는 기존 샘플입니다.
  각각의 읽지 않은 사용자 대화는 고유한 알림으로 발송됩니다.
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
 <p>
   NotificationManager를
 사용하여 현재 애플리케이션이 표시할 알림 개수를 지시하는
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   이 샘플은 기기 암호화된 저장소에 데이터를 저장하고 액세스하는 방법을 보여줍니다.
 이 저장소는 기기가 부팅된 동안 항상 사용할 수 있습니다.
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   이 샘플은 적은 권한을 요구하면서도
 특정 디렉터리에서 데이터를 읽고 쓰는 방법을 보여줍니다.
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
 GitHub에서 가져오기</a>
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/ko/preview/guide.jd b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0-testing.jd
similarity index 98%
copy from docs/html-intl/intl/ko/preview/guide.jd
copy to docs/html-intl/intl/ko/about/versions/nougat/android-7.0-testing.jd
index d7ea7e3..1222227 100644
--- a/docs/html-intl/intl/ko/preview/guide.jd
+++ b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>이 문서의 내용</h2>
       <ol>
         <li><a href="#runtime-permissions">권한 테스트</a></li>
diff --git a/docs/html-intl/intl/ko/preview/api-overview.jd b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0.jd
similarity index 98%
rename from docs/html-intl/intl/ko/preview/api-overview.jd
rename to docs/html-intl/intl/ko/about/versions/nougat/android-7.0.jd
index 5cffdfb..11cd2b9 100644
--- a/docs/html-intl/intl/ko/preview/api-overview.jd
+++ b/docs/html-intl/intl/ko/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>주요 개발자 기능</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -78,7 +78,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
 <p class="img-caption">
   <strong>그림 1.</strong> 화면 분할 모드에서 실행되는 앱.
 </p>
@@ -142,15 +142,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -277,7 +277,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>그림 4.</strong> Settings의 Data Saver.
@@ -357,7 +357,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
 
 <p class="img-caption" style="padding-left:2em;">
   <strong>그림 5.</strong> 알림 창의 Quick Settings 타일.
diff --git a/docs/html-intl/intl/ko/preview/index.jd b/docs/html-intl/intl/ko/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/ko/preview/index.jd
rename to docs/html-intl/intl/ko/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/ko/design/patterns/notifications.jd b/docs/html-intl/intl/ko/design/patterns/notifications.jd
deleted file mode 100644
index aab5eac..0000000
--- a/docs/html-intl/intl/ko/design/patterns/notifications.jd
+++ /dev/null
@@ -1,872 +0,0 @@
-page.title=알림
-page.tags="notifications","design","L"
-@jd:body
-
-  <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>개발자 문서</h3>
-    <p>사용자에게 알리기</p>
-  </div>
-</a>
-
-<a class="notice-designers" href="notifications_k.html">
-  <div>
-    <h3>Android 4.4 이하 버전의 알림</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>비디오</h3>
-    <p>DevBytes: Android L Developer Preview의 알림</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>알림 시스템을 사용하면 친구로부터 받은 새 채팅 메시지나 캘린더 이벤트와 같이 앱에서 관련된
-시기 적절한
-이벤트에 대한 알림을 사용자에게 표시할 수 있습니다.
-알림을 중요한
-이벤트가
-발생한 경우 사용자에게 이에 대해 알리는 뉴스 채널이나 사용자가 앱에 집중하고
-있지 않은 동안에 이벤트를 시간순으로 기록하는 로그라고 생각하세요. 또한, 적절한 경우 모든 Android 기기에 걸쳐 동기화될 수도 있습니다.</p>
-
-<h4 id="New"><strong>Android 5.0의 새로운 기능</strong></h4>
-
-<p>Android 5.0에서는 구조적,
-시각적, 그리고 기능적으로 중요한 업데이트를 알림을 통해 받을 수 있습니다.</p>
-
-<ul>
-  <li>새로운
-머티어리얼 디자인 테마와 일치하도록 알림이 시각적으로 바뀌었습니다.</li>
-  <li> 알림이 이제 기기 잠금 화면에 표시되나,
-민감한 콘텐츠는 여전히
-숨길 수 있습니다.</li>
-  <li>기기가 사용 중일 때 수신되는 최우선 순위의 알림은 이제
-헤드업 알림이라는 새로운 형식을 사용합니다.</li>
-  <li>클라우드와 동기화되는 알림: Android
-기기 중 하나에서 알림을 해지하면
-다른 기기에서도 해지됩니다.</li>
-</ul>
-
-<p class="note"><strong>참고:</strong> 이
-Android 버전의 알림 디자인은 이전 버전과 많이
-다릅니다. 이전
-버전의 알림 디자인에 대한 자세한 내용은 <a href="./notifications_k.html">Android 4.4 이하 버전의 알림</a>을 참조하세요.</p>
-
-<h2 id="Anatomy">알림의 해부학적 구조</h2>
-
-<p>이 섹션에서는 알림의 기본적인 부분과 다양한 유형의 기기에서 알림이 어떻게
-표시될 수 있는지에 대해 살펴봅니다.</p>
-
-<h3 id="BaseLayout">기본 레이아웃</h3>
-
-<p>모든 알림은 기본적으로 다음을 포함하는 기본 레이아웃으로 구성됩니다.</p>
-
-<ul>
-  <li> 알림 <strong>아이콘</strong>. 알림 아이콘은
-알림을 발생시킨 앱을 나타냅니다. 또한,
-앱이 두 가지 이상의
-유형을 생성하는 경우 알림 유형을 나타낼 수도 있습니다.</li>
-  <li> 알림 <strong>제목</strong> 및 추가
-<strong>텍스트</strong>.</li>
-  <li> <strong>타임스탬프</strong>.</li>
-</ul>
-
-<p>이전 플랫폼 버전의
-{@link android.app.Notification.Builder Notification.Builder}로 생성된 알림은 시스템이 대신
-처리하는 사소한 스타일 변화를 제외하면 Android
-5.0에서 똑같이 표시되고 동작합니다. 이전
-Android 버전의 알림에 대한 자세한 내용은
-<a href="./notifications_k.html">Android 4.4 이하 버전의 알림</a>을 참조하세요.</p></p>
-
-
-    <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      핸드헬드 알림(왼쪽) 및 Wear에서 표시되는 동일한 알림(오른쪽)의 기본 레이아웃
-- 사용자 사진 및 알림 아이콘 포함
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">확장 레이아웃</h3>
-
-
-<p>앱 알림이 얼마나 자세한 정보를
-제공하도록 할지는 직접 선택할 수 있습니다. 메시지의 처음
-몇 줄을 보여주거나 더 큰 이미지 미리보기를 보여줄 수 있습니다. 이러한 추가
-정보는 사용자에게 더 많은
-컨텍스트를 제공하며, 경우에 따라 이를 통해 사용자는 메시지
-전체를 읽을 수도 있습니다. 사용자는
-핀치-줌(pinch-zoom) 또는 한 손가락으로 밀기를 이용하여 축소 레이아웃과
-확장 레이아웃 간을 전환할 수 있습니다.
- Android는 단일 이벤트 알림에 대해 세 개의 확장 레이아웃
-템플릿(텍스트, 받은 편지함,
-이미지)을 애플리케이션에 사용할 수 있도록 제공합니다. 다음 이미지는
-단일 이벤트 알림이
-핸드헬드(왼쪽) 및 웨어러블(오른쪽)에서 어떻게 표시되는지 보여줍니다.</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">작업</h3>
-
-<p>Android는 알림의
-맨 아래 부분에 표시되는 선택적인 작업을 지원합니다.
-이러한 작업을 통해 사용자는 알림을 발생시킨
-애플리케이션을 열 필요 없이 알림 창에서 특정
-알림에 대한 가장 일반적인 태스크를 처리할 수 있습니다.
-이 기능은 밀어서 해제하기와 함께 작용하여 상호 작용의 속도를 향상시키며, 사용자가 자신에게 중요한 알림에
-집중하는 데 도움이 됩니다.</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" />
-
-
-
-<p style="clear:both">알림에
-포함할 작업의 수는 신중하게 결정해야 합니다. 더 많은
-작업을 포함할수록 인지적 복합성이 가중됩니다. 당장에 중요하며 의미
-있는 작업만 포함하여 작업
-수를 최소한으로
-제한해야 합니다.</p>
-
-<p>알림에 포함하기에 적합한 작업은 다음과 같습니다.</p>
-
-<ul>
-  <li> 표시하려는
-콘텐츠 유형과 관련하여 필수적이고, 자주 사용되며 전형적인 작업
-  <li> 사용자가 신속하게 태스크를 완료할 수 있게 하는 작업
-</ul>
-
-<p>다음과 같은 작업은 피합니다.</p>
-
-<ul>
-  <li> 애매모호한 작업
-  <li> "읽기" 또는
-"열기"와 같이 알림의 기본 작업과 동일한 작업
-</ul>
-
-
-
-<p>작업
-아이콘 및 이름으로 각각 구성된, 최대 세 개의 작업을 지정할 수 있습니다.
- 단순한 기본 레이아웃에 작업을 추가하면 알림이 확장 가능하게 되며,
-알림에
-확장 레이아웃이 없는 경우에도 이러한 사항이 적용됩니다. 작업은
-확장된
-알림에서만 표시되고 그 외에는 숨겨져 있으므로
-사용자가 알림에서
-호출할 수 있는 모든 작업을 관련 애플리케이션 내에서도
-사용할 수 있는지 확인해야 합니다.</p>
-
-<h2 style="clear:left">헤드업 알림</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" />
-  <p class="img-caption">
-    몰입형 앱의
-최상위에
-표시되는 헤드업 알림의 예(걸려오는 전화, 최우선 순위)
-  </p>
-</div>
-
-<p>최우선 순위의 알림을 수신하면(오른쪽), 가능한 작업을 보여주는 확장된 레이아웃 형태로
-잠시 동안 사용자에게
-표시됩니다.</p>
-<p> 그런 다음, 알림이 알림
-창으로 돌아갑니다. 알림에 대한 <a href="#correctly_set_and_manage_notification_priority">우선 순위</a> 플래그가 HIGH, MAX 또는 전체 화면으로
-지정된 경우 헤드업 알림이 표시됩니다.</p>
-
-<p><b>헤드업 알림의 좋은 예</b></p>
-
-<ul>
-  <li> 기기 사용 시 걸려오는 전화</li>
-  <li> 기기 사용 시 알람</li>
-  <li> 새 SMS 메시지</li>
-  <li> 배터리 부족</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">가이드라인</h2>
-
-
-<h3 id="MakeItPersonal">개인에 맞게 만들기</h3>
-
-<p>다른 사람이 보낸 항목(메시지 또는
-상태 업데이트)에 대한 알림의 경우
-{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}을 사용하여 그 사람의 이미지를 포함합니다. 또한
-그 사람에 대한 정보를 알림의 메타데이터에 추가합니다({@link android.app.Notification#EXTRA_PEOPLE} 참조).</p>
-
-<p>알림의 기본 아이콘이 여전히 표시됩니다. 따라서 사용자는
-해당 아이콘을 상태 표시줄에
-보이는 아이콘과 관련시킬 수 있습니다.</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" />
-<p style="margin-top:10px" class="img-caption">
-  누가 트리거했는지와 보낸 내용을 보여주는 알림입니다.
-</p>
-
-
-<h3 id="navigate_to_the_right_place">적합한 곳으로 이동하기</h3>
-
-<p>사용자가 작업
-버튼 외부에서 알림을 터치하면, 사용자가 알림에서
-참조되는 데이터를 확인하고 처리할 수 있는 곳에서
-앱이 열리도록 합니다. 대부분의 경우, 메시지와 같은 단일 데이터 항목을 표시하는 상세 뷰가 이에 해당합니다.
-하지만 알림이 중첩되어 있을 경우에는
-요약 뷰일 수도 있습니다. 앱이
-최상위 레벨 아래의 위치에서 열린 경우
-사용자가 시스템의 뒤로 버튼을 눌러 최상위 레벨로 돌아갈 수 있도록 앱의 백 스택에 탐색 경로를 삽입합니다. 자세한 내용은
-<a href="{@docRoot}design/patterns/navigation.html#into-your-app">탐색</a>
-디자인 패턴의 <em>홈 화면 위젯 및 알림을 통한 앱 탐색</em>을 참조하세요.</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">알림의
-우선 순위를 정확하게 설정하고
-관리하기</h3>
-
-<p>Android는 알림 우선 순위 플래그를 지원합니다. 이 플래그를 통해 다른 알림에 상대적으로 알림이 표시되는 위치가
-결정되도록 할 수 있습니다. 또한
-사용자가 가장 중요한 알림을 항상 가장 먼저 볼 수 있게
-할 수 있습니다. 알림을 게시할 때
-다음 우선 순위 중에서
-선택할 수 있습니다.</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>우선 순위</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>용도</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>시간에 민감한
-또는
-특정 태스크를 계속 진행하기 전에 처리해야 할
-상황을 사용자에게 알리는 중요하고 긴급한 알림에 사용합니다.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>중요한 대화에 주로 사용합니다. 일례로 사용자에게 특별히 흥미로운 내용이 포함된 메시지 또는 채팅
-이벤트가 이에 해당합니다.
-최우선 순위의 알림은 헤드업 알림이 표시되도록 합니다.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>여기서 설명하지 않은 기타 모든 우선 순위의 알림에 사용합니다.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>사용자에게 알려야 하지만 긴급하지 않은
-알림에 사용합니다. 우선 순위가 낮은 알림은 보통 목록의 맨 아래에 표시되며,
-공개 또는 대상이 불특정한 소셜 업데이트에 사용하기
-좋습니다. 사용자가
-요구한
-알림이지만, 이러한 알림은 긴급하거나 직접적인
-대화를 우선할 수 없습니다.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>날씨 정보 또는 상황에 맞는
-위치 정보와 같은 상황별 또는 배경 정보에 사용합니다.
-최소 우선 순위 알림은 상태 표시줄에 표시되지 않습니다. 이러한 알림은 사용자가 알림 창을 확대하면
-볼 수 있습니다.</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>
-적절한
-우선 순위를 선택하는 방법</strong></h4>
-
-<p><code>DEFAULT</code>, <code>HIGH</code> 및 <code>MAX</code>는 작업을 중단시키는 우선 순위이며, 사용자의 액티비티를
-중단시키는
-위험 요소입니다. 앱 사용자를 성가시게 하지 않으려면 다음과 같은
-알림에만 작업을 중단시키는 우선 순위를 지정해야 합니다.</p>
-
-<ul>
-  <li> 다른 사람이 관련된 알림</li>
-  <li> 시간에 민감한 알림</li>
-  <li> 실제 환경에서의 사용자 행동을 즉시 바꿀 수 있는 알림</li>
-</ul>
-
-<p><code>LOW</code> 및 <code>MIN</code>으로 설정된 알림도 사용자에게
-중요할 수 있습니다. 대부분은 아니지만 많은 알림이 사용자의
-즉각적인 주의를 필요로 하지 않거나 사용자의 손목에 진동을 줄 필요가 없지만, 사용자가 알림을 확인하고자
-했을 때 유용하다고
-여길 정보를 포함합니다. <code>LOW</code> 및 <code>MIN</code>
-우선 순위 알림에 대한 조건은 다음과 같습니다.</p>
-
-<ul>
-  <li> 다른 사람이 관련되지 않음</li>
-  <li> 시간에 민감하지 않음</li>
-  <li> 사용자가 흥미를 가질 만하지만 시간이 있을 때
-보기를 원할 수 있는 내용을 포함함</li>
-</ul>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" />
-
-
-<h3 style="clear:both" id="set_a_notification_category">알림
-범주 설정하기</h3>
-
-<p>알림이 미리 정의된 범주에 포함될 경우(아래
-참조),
-그에 따라 할당합니다.  알림 창(또는
-다른 알림
-수신자)과 같은 시스템 UI의 기능은 순위 및 필터링 결정을 내리는 데 이 정보를 활용할 수 있습니다.</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>수신 전화(음성 또는 화상) 또는 이와 유사한 동기적 대화
-요청</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>수신되는 직접 메시지(SMS, 인스턴트 메시지 등)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>비동기적 대량 메시지(이메일)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>캘린더 이벤트</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>홍보 또는 광고</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>알람 또는 타이머</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>장기간 실행 중인 백그라운드 작업의 진행 상황</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>소셜 네트워크 또는 공유 업데이트</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>백그라운드 작업 또는 인증 상태 오류</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>재생에 대한 미디어 전송 제어</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>시스템 또는 기기 상태 업데이트.  시스템용으로 예약됨</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>실행 중인 백그라운드 서비스에 대한 표시</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>한 가지 특정 항목에 대한 구체적이고 시기적절한 권장 사항.  예를 들어, 뉴스
-앱이 사용자가 다음으로 읽기 원할 것이라고 생각하는 뉴스를
-권하고자 하는 경우</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>기기 또는 상황별 상태에 대한 지속적인 정보</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">알림 요약하기</h3>
-
-<p>특정 유형의 알림이 이미 보류 중일 때 앱에서 같은 유형의 새
-알림을 보내려고 하는 경우, 이 앱에 대해 두 알림을 하나의 요약 알림으로 결합합니다. 새로운 개체는
-생성하지 않아야 합니다.</p>
-
-<p>요약 알림은 사용자가 특정 종류의 알림이
-몇 개나 보류 중인지
-파악할 수 있도록 간단한 개요를 표시합니다.</p>
-
-<div class="col-6">
-
-<p><strong>잘못된 사용</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>올바른 사용</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" />
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">확장된 다이제스트 레이아웃을 사용하여
-요약에 포함된 각각의 알림에 대한
-더 자세한 정보를 제공할 수 있습니다. 이 방식을 통해 사용자는
-어떠한 알림이 보류 중이고,
-관련된 앱에서
-상세 정보를 읽고 싶을 정도로 알림이 흥미로운지를
-판단할 수 있습니다.</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" />
-  <p class="img-caption">
-  확장된 알림 및 축소된 요약 알림(<code>InboxStyle</code> 사용)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">알림을
-선택 항목으로 만들기</h3>
-
-<p>사용자는 항상 알림을 통제할 수 있어야 합니다. 애플리케이션 설정에 알림 설정 항목을 추가하여
-사용자가 앱의
-알림을
-해제하거나 경고 속성(예: 경고음 및 진동 사용
-여부)을 변경할 수 있도록 허용합니다.</p>
-
-<h3 id="use_distinct_icons">뚜렷한 아이콘 사용</h3>
-<p>알림 영역을 봄으로써 사용자는 현재
-어떠한 종류의
-알림이 보류 중인지 파악할 수 있어야 합니다.</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" />
-</div>
-
-  <div><p><strong>올바른 사용</strong></p>
-    <p>Android 앱이 이미 제공하는 알림 아이콘을 살펴본 후 본인의 앱에서
-뚜렷히 나타날 수 있는
-알림 아이콘을 만듭니다.</p>
-
-    <p><strong>올바른 사용</strong></p>
-    <p>작은 아이콘에
-적절한 <a href="/design/style/iconography.html#notification">알림 아이콘 스타일</a>을 사용하며, 작업
-아이콘에는 머티어리얼 라이트
-<a href="/design/style/iconography.html#action-bar">작업 모음 아이콘
-스타일</a>을 사용합니다.</p>
-<p ><strong>올바른 사용</strong></p>
-<p >아이콘은 시각적으로 단순하게 유지하고,
-알아차리기 힘들 정도로 과도하게 세부적인 디자인은 피합니다.</p>
-
-  <div><p><strong>잘못된 사용</strong></p>
-    <p>작은
-아이콘 및 작업
-아이콘에 알파(어둡게 설정 또는 페이드 효과)를 추가합니다. 아이콘의 가장자리를 안티-앨리어싱할 수는 있지만, Android가 이러한
-아이콘을 마스크(즉,
-알파 채널만 사용됨)로 사용하기 때문에 일반적으로 이미지는 최대 수준의
-불투명도로 그려집니다.</p>
-
-</div>
-<p style="clear:both"><strong>잘못된 사용</strong></p>
-
-<p>다른 앱과의 차별화를 위해 색상을 사용합니다. 알림 아이콘은 투명한 배경 이미지에 흰색 아이콘이어야만
-합니다.</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">알림 LED를
-적절하게 사용하기</h3>
-
-<p>많은 Android 기기에는 알림 LED가 내장되어 있으며, 이러한 알림 LED는 화면이 꺼져 있을 때
-사용자에게
-이벤트에 대해 알리기 위해 사용됩니다. 우선 순위가 <code>MAX</code>,
-<code>HIGH</code> 또는 <code>DEFAULT</code>인 알림의 경우
-LED가 켜지며, 낮은 우선 순위(<code>LOW</code> 및
-<code>MIN</code>)의 알림의 경우 LED가 켜지지 않습니다.</p>
-
-<p>알림과 관련하여 사용자는 LED도 제어할 수 있어야 합니다.
-DEFAULT_LIGHTS를 사용하는 경우
-LED는 흰색으로 켜집니다. 사용자가
-명시적으로 지정한 경우 외에는 다른 알림
-색상을 사용할 수 없습니다.</p>
-
-<h2 id="building_notifications_that_users_care_about">사용자가 관심을 가질 만한
-알림 만들기</h2>
-
-<p>사용자의 사랑을 받는 앱을 만들기 위해서는
-알림을 신중하게 디자인해야 합니다.
-알림은 앱의 목소리를 대변하며, 앱의
-개성에 큰 영향을 미칩니다. 원하지 않거나
-중요하지 않은 알림은 사용자를 성가시게 하거나 앱에서
-많은 신경을
-쓰게 하는 것에 대해 짜증이 나게 합니다. 따라서 알림을 사용할 때는 현명하게 판단해야 합니다.</p>
-
-<h3 id="when_to_display_a_notification">알림을 표시해야 하는 경우</h3>
-
-<p>사람들이 즐겨 사용하는 애플리케이션을 만들려면 사용자의
-주의와 집중을 흐트러뜨리지 않고 보호해야 하는 리소스임을
-인지하는 것이 중요합니다. Android의
-알림 시스템은 알림이 사용자의 주의를 최대한 방해하지 않도록
-디자인되었습니다.
-하지만
-알림이
-사용자의 태스크 흐름을 방해한다는 사실을 계속해서 인지해야 합니다.
-알림을 계획할 때 알림이 사용자의 작업을 중단할 만큼
-중요한지 곰곰히 생각해 보시기 바랍니다. 잘 모르겠는 경우, 사용자가 앱의 알림 설정을 사용하여 알림에 대한 수신 동의를
-선택할 수 있도록 허용하거나 알림 우선 순위 플래그를 <code>LOW</code> 또는 <code>MIN</code>으로
-조정하여 사용자 작업을
-방해하지
-않도록 합니다.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   시간에 민감한 알림의 예
-  </p>
-
-<p>일반적으로 잘 만들어진 앱은 사용자의 요청이 있을 때에만 정보를 알리고
-요청하지 않은 알림은 꼭 필요한 경우에만 표시하도록 합니다.</p>
-
-<p>알림은 <strong>시간에 민감한 이벤트</strong>에 주로 사용하며, 특히
-이러한 동기적 이벤트에 <strong>다른 사람이 관련된 경우</strong>에 사용합니다. 예를
-들어 수신되는 채팅 메시지는
-실시간으로 진행되는 동기적 대화 형식이며, 이때 다른 사람은
-적극적으로 응답을 기다립니다. 캘린더 이벤트는 언제
-알림을 사용하고
-사용자의 주의를 끌어야 하는지에 대해 알 수 있는 또 다른 좋은 예입니다. 왜냐하면 이는 임박한 이벤트이며, 캘린더 이벤트에는 종종 다른 사람이
-관련되기 때문입니다.</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">알림을
-표시하지 않아야 하는 경우</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" />
-</div>
-
-<p>다른 대부분의 경우 알림은 적합하지 않습니다.</p>
-
-<ul>
-  <li> 사용자와
-직접 관련이 없는 정보나 시간에 민감하지 않은
-정보는 알리지 않도록 합니다. 예를 들어 소셜 네트워크를 통한 비동기적이며
-대상이 불특정한 업데이트는
-일반적으로 실시간으로
-사용자를 방해할 수 없습니다. 그러한 업데이트를 원하는 사용자의
-경우에는 사전에 수신 동의를 설정할 수 있게 하면 됩니다.</li>
-  <li> 관련된 새 정보가 현재
-화면에 표시된 경우에는 알림을 생성하지 않아야 합니다. 대신 애플리케이션 UI를
-사용하여 컨텍스트 내에 새로운 정보가 있음을 사용자에게
-직접 알립니다.
-  예를 들어 채팅 애플리케이션은
-사용자가 다른 사용자와 대화 중일 때는 시스템 알림을 생성하지 않아야 합니다.</li>
-  <li> 정보 저장
-또는 동기화, 애플리케이션 업데이트와 같은 낮은 수준의 기술 정보의 경우 사용자가 개입하지
-않아도 앱이나 시스템에서 스스로 알아서 처리할 수 있다면 사용자를 방해하지 않도록 합니다.</li>
-  <li> 사용자가 아무런 조치를
-취하지 않아도 애플리케이션 스스로 오류를 복구할
-수 있는 경우, 이러한 오류에 대해 사용자에게 알리지 않도록 합니다.</li>
-  <li> 알리는 내용은 없고
-단순히 앱을
-홍보하는 알림은 만들지 않습니다. 알림은 유용하고, 시기적절하며 새로운 정보를 제공해야 하며, 단지 앱 출시를 위한 용도로는
-사용하지
-않습니다.</li>
-  <li> 단지
-사용자에게 브랜드를 알리기 위한 불필요한 알림은 만들지 않도록 합니다.
-  그러한 알림은 사용자를 짜증 나게 만들어 앱에 대한 관심을 멀어지게 합니다. 소량의
-업데이트된 정보를 제공하면서 사용자가 지속적으로
-앱에 관심을
-갖게 만드는 최고의
-방법은
-홈 화면에 추가할 수 있는 위젯을 개발하는 것입니다.</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">알림과
-상호 작용하기</h2>
-
-<p>알림은 상태 표시줄에 아이콘으로 표시되며,
-알림 창을 열어서
-확인할 수 있습니다.</p>
-
-<p>알림을 터치하면 관련 앱이 열리고 알림에
-해당되는 세부 내용이 표시됩니다. 알림을 왼쪽이나 오른쪽으로
-스와이프하면 알림 창에서 제거됩니다.</p>
-
-<h3 id="ongoing_notifications">지속적인 알림</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" />
-      <p class="img-caption">
-    음악 재생으로 인한 지속적인 알림
-  </p>
-</div>
-<p>지속적인 알림은
-백그라운드에서 진행 중인 프로세스에 대해 사용자에게 알립니다.
-예를 들어 음악 플레이어는 사용자가 재생을 멈출 때까지
-알림 시스템 내에 현재 재생 중인 트랙을
-계속 표시합니다. 또한 지속적인 알림은 파일을 다운로드하거나 비디오를 인코딩하는 등의 장기 태스크에 대한
-피드백을 사용자에게
-표시할 수도 있습니다. 지속적인 알림은 사용자가 알림 창에서 직접
-제거할 수 없습니다.</p>
-
-<h3 id="ongoing_notifications">미디어 재생</h3>
-<p>Android 5.0에서는 잠금 화면에 사용이 중단된
-{@link android.media.RemoteControlClient} 클래스에 대한 전송 제어가 표시되지 않습니다. 하지만 알림은 <em>표시되며</em>, 각
-앱의 재생 알림이 현재 사용자가 잠금 상태에서 재생을 제어하는 기본
-방법입니다. 이 동작은 화면의 잠금 여부와 상관없이 사용자에게
-일관된 환경을 제공하면서, 어떠한 버튼을
-어떻게 표시할지에 대해 앱이 더 세부적으로 제어할 수 있도록
-지원합니다.</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">대화 상자
-및 알림 메시지</h3>
-
-<p>현재
-화면에 표시되어 있는 경우가 아니라면 앱은 대화 상자나 알림 메시지를 생성해서는 안 됩니다. 대화 상자나 알림 메시지는
-앱 내에서
-사용자가 어떠한 행동을 취했을 때 이에 대한 즉각적인 응답으로만 표시되어야 합니다.
-대화 상자 및 알림 메시지 사용에 대한 자세한 지침은
-<a href="/design/patterns/confirming-acknowledging.html">확인 및 승인하기</a>를 참조하세요.</p>
-
-<h3>순위 및 순서</h3>
-
-<p>알림은 뉴스이므로, 기본적으로 발생한 순서의 역순으로
-표시되며, 특히
-앱에서 명시된 알림
-<a href="#correctly_set_and_manage_notification_priority">우선 순위</a>에 따라 순서가 결정됩니다.</p>
-
-<p>알림은 잠금 화면에서 중요한 부분이며, 기기의 화면이 켜질
-때마다
-표시됩니다. 잠금 화면의 공간은 협소하기 때문에 가장 긴급하고 관련 있는 알림을 식별하는 것이
-가장
-중요합니다. 이러한
-이유 때문에 Android에는 다음을 고려한
-더욱 정교한 정렬 알고리즘이 있습니다.</p>
-
-<ul>
-  <li> 타임스탬프 및 애플리케이션에 명시된 우선 순위.</li>
-  <li> 알림이 최근에 소리 또는
-진동으로 사용자를 방해했는지에 대한 여부. (즉,
-휴대폰에서 방금 소리가 났을 때 사용자가 "방금 무슨
-일이 있었지?"에 대해 알고 싶어하는 경우 잠금 화면을
-보면 한 눈에 알 수 있어야 합니다.)</li>
-  <li> {@link android.app.Notification#EXTRA_PEOPLE}을 사용하여 알림에 첨부된 사람,
-그리고 특히 즐겨찾기에 추가된 연락처인지에 대한 여부.</li>
-</ul>
-
-<p>이러한 정렬 알고리즘을 잘 이용하기 위해서는 목록의 특정 부분에 초점을 두기 보다는 생성하고자
-하는 사용자
-환경에 초점을 둡니다.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Gmail 알림은
-기본 우선 순위이기 때문에
-보통은 행아웃과 같은 인스턴트 메시징 앱에서 온 메시지보다 하위에 정렬됩니다. 하지만
-새 메시지가 들어오면
-일시적으로 순위가 올라갑니다.
-  </p>
-
-
-<h3>잠금 화면</h3>
-
-<p>알림은 잠금 화면에 표시되기 때문에 사용자의 개인 정보 보호가
-특히
-중요하게 고려해야 할 사항입니다. 알림은 종종 민감한 정보를 포함하기 때문에, 아무나
-기기의 화면을 켰을 때 볼 수 있게 할 필요는
-없습니다.</p>
-
-<ul>
-  <li> 보안 잠금 화면(PIN, 패턴 또는 암호)이 있는 기기의 인터페이스에는
-공개 및 비공개 부분이 있습니다. 공개 인터페이스는 보안 잠금 화면에 표시될 수 있기 때문에
-누구나 볼 수 있습니다. 비공개 인터페이스는 잠금 화면 뒤에 있기 때문에
-기기의 잠금 화면을 푼 사람만 볼 수 있습니다.</li>
-</ul>
-
-<h3>보안 잠금 화면에 표시된 정보에 대한 사용자 제어</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" />
-      <p class="img-caption">
-    사용자가 기기의 잠금을 푼 후 보이는 콘텐츠와 함께 잠금 화면에 표시된 알림
-  </p>
-</div>
-
-<p>보안 잠금 화면을 설정할 때 사용자는
-민감한 세부 정보를 보안 잠금 화면에서 숨기도록 선택할 수 있습니다. 이러한 경우 시스템 UI는 알림의 <em>정보 공개 수준</em>을
-고려하여
-안전하게 표시할 수 있는 정보를 파악합니다.</p>
-<p> 정보 공개 수준을 제어하려면
-<code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>를 호출한 후
-다음 값 중 하나를 지정합니다.</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>. 알림의 전체 내용을
-표시합니다.
-  정보 공개 수준을 지정하지 않을 경우 시스템 기본값입니다.</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>.
-잠금 화면에 알림의
-아이콘과 알림을 게시한 앱의 이름을 포함하여 해당 알림의 존재에 대한 기본 정보를 표시합니다. 알림의 나머지 세부 사항은 표시되지 않습니다.
-다음과 같은 몇 가지 유용한 사항을 염두해야 합니다.
-  <ul>
-    <li> 시스템이 보안 잠금 화면에 다른 공개 버전의 알림을
-표시하도록 제공하려는 경우, <code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>
-필드에 대체
-알림 개체를 제공해야 합니다.
-    <li> 이렇게 설정하면 앱에서 여전히 유용하지만 개인 정보를 노출하지 않는 편집된 버전의
-내용을 생성할 수 있습니다. 예를 들어, 알림에 SMS 텍스트, 발신자 이름 및 연락처 아이콘을 포함하는
-SMS 앱이 있다고 가정합니다.
-이 알림은 <code>VISIBILITY_PRIVATE</code>여야 하지만, <code>publicVersion</code>은 다른 식별
-정보 없이 "3개의 새 메시지"와 같이 여전히 유용한 정보를
-포함할 수 있습니다.
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>. 최소한의 정보만 표시하며, 알림의 아이콘마저
-표시하지 않습니다.</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Android Wear에
-표시되는 알림</h2>
-
-<p>Android Wear에 표시되는 알림과 해당 <em>작업</em>은 기본적으로 Wear 기기에 연결되어 있습니다.
-개발자는 어떠한 알림을
-휴대폰에서 워치로,
-그리고 그 반대로 연결할지 제어할 수 있습니다. 또한 개발자는 어떠한 작업을 연결할지도 제어할 수 있습니다. 앱이
-단일 탭으로 실행할 수 없는
-작업을 포함하는 경우, 이러한 작업을
-Wear
-알림에 표시되지 않도록 숨기거나 Wear 앱에 연결하여 사용자가
-워치에서 작업을
-끝낼 수 있도록 합니다.</p>
-
-<h4>알림과 작업 연결하기</h4>
-
-<p>휴대폰과 같이 연결된 기기는 알림을 Wear 기기에 연결하여 해당 기기에서
-알림이 표시될 수 있게 합니다. 마찬가지로 작업도 연결할 수 있기 때문에 사용자는 Wear 기기에서
-알림을 바로 처리할 수 있습니다.</p>
-
-<p><strong>연결해야 할 사항</strong></p>
-
-<ul>
-  <li> 새 인스턴트 메시지</li>
-  <li> +1, Like, Heart와 같은 단일 탭 작업</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" />
-
-<p><strong>연결하지 않아야 할 사항</strong></p>
-
-<ul>
-  <li> 새로 도착한 팟캐스트의 알림</li>
-  <li> 워치에서 수행할 수 없는 기능에 매핑되는 작업</li>
-</ul>
-
-
-
-<p><h4>Wear에 대해서만 정의할 수 있는 고유한 작업</h4></p>
-
-<p>Wear에서만 수행할 수 있는 작업이 몇 가지 있으며, 이러한 작업은 다음과 같습니다.</p>
-
-<ul>
-  <li> "금방 올게"와 같은 미리 준비된 대답으로 구성된 빠른 목록</li>
-  <li> 휴대폰에서 열기</li>
-  <li> 음성 입력 화면을 불러오는 "댓글 달기" 또는 "응답" 작업</li>
-  <li> Wear에 특화된 앱을 실행하는 작업</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" />
diff --git a/docs/html-intl/intl/ko/preview/j8-jack.jd b/docs/html-intl/intl/ko/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/ko/preview/j8-jack.jd
rename to docs/html-intl/intl/ko/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/ko/preview/features/multi-window.jd b/docs/html-intl/intl/ko/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/ko/preview/features/multi-window.jd
rename to docs/html-intl/intl/ko/guide/topics/ui/multi-window.jd
index bd24d9f..67305a9 100644
--- a/docs/html-intl/intl/ko/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>이 문서의 내용</h2>
       <ol>
         <li><a href="#overview">개요</a></li>
@@ -69,8 +69,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/mw-splitscreen_2x.png 2x," id="img-split-screen" />
 <p class="img-caption">
   <strong>그림 1.</strong> 화면 분할 모드에서 나란히 실행 중인 두 앱.
 </p>
diff --git a/docs/html-intl/intl/ko/preview/_book.yaml b/docs/html-intl/intl/ko/preview/_book.yaml
deleted file mode 100644
index 17b1d96..0000000
--- a/docs/html-intl/intl/ko/preview/_book.yaml
+++ /dev/null
@@ -1,342 +0,0 @@
-toc:
-- title: 프로그램 개요
-  path: /preview/overview.html
-  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: 지원 및 릴리스 노트
-  path: /preview/support.html
-
-- title: Preview 설정
-  path: /preview/setup-sdk.html
-  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: 기기에 대한 테스트
-  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: 동작 변경 사항
-  path: /preview/behavior-changes.html
-  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: 백그라운드 최적화
-    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: 언어 및 로케일
-    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
-  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: 다중 창 지원
-    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: 알림
-    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 녹화
-    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: 네트워크 보안 구성
-    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 지원
-    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 언어 기능
-    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 업데이트
-    path: /preview/features/afw.html
-  - title: 범위가 지정된 디렉터리 액세스
-    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: 샘플
-  path: /preview/samples.html
-  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: 라이선스 계약
-  path: /preview/license.html
-  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-intl/intl/ko/preview/download-ota.jd b/docs/html-intl/intl/ko/preview/download-ota.jd
deleted file mode 100644
index ee08846..0000000
--- a/docs/html-intl/intl/ko/preview/download-ota.jd
+++ /dev/null
@@ -1,332 +0,0 @@
-page.title=기기 OTA 이미지 적용
-
-@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이 제공하는 Preview의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 Preview에서 개발된 애플리케이션이 이후 버전의 Preview와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 Preview(또는 Preview에 포함된 기능) 제공을 (영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
-
-3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
-
-3.8 계약자는 Preview에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
-
-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 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 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
-
-10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
-
-11. 책임 한계
-
-11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
-
-12. 면책
-
-12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
-
-13. 라이선스 계약 변경
-
-13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
-
-14. 일반 법적 조건
-
-14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 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">
-
-<p>
-  이 페이지에서는 OTA 기기 이미지의 링크를 제공하며, OTA 업데이트를 기기에
-수동으로 적용하는 방법에 대해 설명합니다. 이 절차는 Android 베타 프로그램을
-통해 OTA 업데이트를 받았는데 업데이트가 설치된 후 시작되지
-않는 기기를 복구하는 데 유용할 수 있습니다.
-</p>
-
-<h2 id="install-ota">OTA 이미지 설치</h2>
-
-<p></p>
-
-<p>OTA 패키지를 기기에 설치하려면:</p>
-
-<ol>
-  <li>아래 표에서 OTA 기기 이미지를 다운로드합니다.</li>
-  <li>기기를 복구 모드로 재부팅합니다. Nexus 기기를 이 모드로
-전환하는 방법에 대한 자세한 내용은
-<a href="https://support.google.com/nexus/answer/4596836">Nexus 기기를
-공장 설정으로 초기화</a>를 참조하세요.
-  </li>
-  <li>기기에서 <strong>ADB sideload</strong>를 선택합니다.</li>
-  <li>Android 개발 환경이 로드되고 Android 디버그 브리지(adb) 도구가 설치된
-컴퓨터에 기기를 연결합니다.</li>
-  <li>다음 명령을 실행합니다.
-    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
-  </li>
-</ol>
-
-
-
-<h2 id="ota-images">기기 OTA 이미지</h2>
-
-<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-ota-npd90g-0a874807.zip</a><br>
-      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
-      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd90g-06f5d23d.zip</a><br>
-      MD5: 513570bb3a91878c2d1a5807d2340420<br>
-      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd90g-5baa69c2.zip</a><br>
-      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
-      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd90g-c04785e1.zip</a><br>
-      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
-      SHA-1: 31633180635b831e59271a7d904439f278586f49
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
-      MD5: 0493fa79763d67bcdde8007299e1888d<br>
-      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd90g-3a0643ae.zip</a><br>
-      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
-      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd90g-ec931914.zip</a><br>
-      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
-      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
-      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
-      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
-    </td>
-  </tr>
-
-</table>
-
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
-  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/download.jd b/docs/html-intl/intl/ko/preview/download.jd
deleted file mode 100644
index 45d5bd8..0000000
--- a/docs/html-intl/intl/ko/preview/download.jd
+++ /dev/null
@@ -1,544 +0,0 @@
-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/ 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이 제공하는 Preview의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 Preview에서 개발된 애플리케이션이 이후 버전의 Preview와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 Preview(또는 Preview에 포함된 기능) 제공을 (영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
-
-3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
-
-3.8 계약자는 Preview에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
-
-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 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 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
-
-10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
-
-11. 책임 한계
-
-11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
-
-12. 면책
-
-12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
-
-13. 라이선스 계약 변경
-
-13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
-
-14. 일반 법적 조건
-
-14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </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 이상의 버전을 사용해야 합니다. 이러한 버전에서는 Android Studio 1.5의 에뮬레이터에 비해
-더욱 빠른 성능을 제공하는 <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>이
-지원됩니다.</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/afw.jd b/docs/html-intl/intl/ko/preview/features/afw.jd
deleted file mode 100644
index 4c06451..0000000
--- a/docs/html-intl/intl/ko/preview/features/afw.jd
+++ /dev/null
@@ -1,552 +0,0 @@
-page.title=Android for Work 업데이트
-page.metaDescription=Android N의 새로운 Android for Work API와 기능.
-page.keywords="android for work", "android N", "enterprise", "QR code"
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>이 문서의 내용</h2>
-      <ol>
-        <li><a href="#qr">QR 코드 프로비저닝
-                </a></li>
-
-        <li><a href="#sec-challenge">작업 프로필 보안 인증 질문
-                </a></li>
-
-        <li><a href="#suspend">앱에 대한 액세스 비활성화
-                </a></li>
-
-        <li><a href="#toggle-work">작업 모드 전환
-                </a></li>
-
-        <li><a href="#always-on-vpn">상시 접속 VPN
-                </a></li>
-
-        <li><a href="#contacts">연락처와 작업 프로필 통합
-                </a></li>
-
-        <li><a href="#remote-reboot">원격 재부팅
-                </a></li>
-
-        <li><a href="#disable-roaming">데이터 로밍 비활성화
-                </a></li>
-
-        <li><a href="#process-logging">엔터프라이즈 프로세스 로깅
-                </a></li>
-
-        <li><a href="#bug-reports">원격 버그 보고서
-                </a></li>
-
-        <li><a href="#remove-cert">클라이언트 인증서 제거
-                </a></li>
-
-        <li><a href="#grant-cert-on-install">설치 시 클라이언트 인증서에 대한
-                액세스 권한 부여</a></li>
-
-        <li><a href="#ui-policy">시스템 UI 정책 투명성
-                </a></li>
-
-        <li><a href="#restrictions-mgmt">앱 제한 관리 향상
-                </a></li>
-
-        <li><a href="#location-off">위치 해제 스위치
-                </a></li>
-
-        <li><a href="#custom-provisioning">사용자 지정 프로비저닝
-                </a></li>
-
-        <li><a href="#multi-wifi-ca">다중 Wi-Fi CA 인증서
-                </a></li>
-
-        <li><a href="#custom-lock">사용자 지정 잠금 화면 메시지
-                </a></li>
-
-        <li><a href="#work-connectionservice">작업 프로필 연결 서비스
-                </a></li>
-
-        <li><a href="#lock-wp">배경 화면 잠금
-                </a></li>
-
-        <li><a href="#lock-user-icon">사용자 아이콘 잠금
-                </a></li>
-
-        <li><a href="#health-monitoring">기기 상태 모니터링
-                </a></li>
-
-      </ol>
-
-    <h2>참고 항목</h2>
-    <ul>
-      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK
-            참조</a></li>
-    </ul>
-  </div>
-</div>
-
-<p>이 문서에서는 Android N에서 제공되는 새로운 Android for Work 기능을
-설명합니다.</p>
-
-<h2 id="qr">QR 코드 프로비저닝</h2>
-
-<p>
-  이제 Android for Work는 기업에서 업무용으로 지급하는 기기를 프로비저닝할 때 QR 코드 사용을
- 지원합니다. 이제는 설치 마법사를 통해 QR 코드를 스캔하여 기기를
- 프로비저닝할 수 있습니다.
-</p>
-
-<h2 id="sec-challenge">작업 프로필 보안 인증 질문</h2>
-
-<p>
-  프로필 소유자는 작업 프로필에서 작동하는 앱에 대한 보안 인증 질문을
- 지정하도록 사용자에게 요구할 수 있습니다. 시스템에서는 사용자가 업무용 앱을 열려고 할 때
- 보안 인증 질문을 표시합니다. 사용자가 보안 인증 질문에 올바로
- 답하면 작업 프로필의 잠금이 해제되고 필요하다면 작업 프로필의 암호가
- 해독됩니다.
-</p>
-
-<p>
-  프로필 소유자가 {@link
-  android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD} 인텐트를 보내면
-, 보안 인증 질문을 설정하라는 메시지가 사용자에게 표시됩니다. 또한, 프로필 소유자는
- 사용자에게 기기 잠금을 설정하도록 하는 <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> 인텐트를
-  보낼 수 있습니다.
-</p>
-
-<p>
-  프로필 소유자는 작업 프로필 보안 인증 질문의 비밀번호 정책을 다른 기기
- 비밀번호의 정책과는 다르게 설정하도록 선택할 수 있습니다. 예를 들어, 기기 보안 질문 응답의 최소 길이는 다른 암호에 요구되는
-길이와
-다를 수 있습니다. 프로필 소유자는 {@link
- android.app.admin.DevicePolicyManager#setPasswordQuality
- setPasswordQuality()} 및 {@link
- android.app.admin.DevicePolicyManager#setPasswordMinimumLength
- setPasswordMinimumLength()}와 같은
- 일반적인 {@link android.app.admin.DevicePolicyManager}
- 메서드를 사용하여 보안 질문 정책을 설정합니다. 프로필 소유자는 새 <code>DevicePolicyManager.getParentProfileInstance()</code>
- 메서드에 의해 반환되는 {@link android.app.admin.DevicePolicyManager} 인스턴스를
- 사용하여 기기 잠금을
- 설정할 수도 있습니다. 그 밖에도, 프로필 소유자는 {@link android.app.admin.DevicePolicyManager}
- 클래스의 새로운 <code>setOrganizationColor()</code> 및
- <code>setOrganizationName()</code> 메서드를 사용하여 작업 프로필 보안 인증 질문에 대한 자격 증명 화면을
- 사용자 지정할 수 있습니다.
-</p>
-
-<p>
-  새로운 메서드와 상수에 대한 자세한 내용은
- <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 참조</a>의 <code>DevicePolicyManager</code> 참조 페이지를 참조하십시오.
-</p>
-
-<h2 id="suspend">앱에 대한 액세스 비활성화</h2>
-
-<p>
-  기기 소유자 및 프로필 소유자는 새 <code>DevicePolicyManager.setPackagesSuspended()</code>
- 메서드를 호출하여 패키지에 대한 액세스를 일시적으로 중단할 수
- 있습니다. 소유자는 이 메서드를 똑같이 사용하여 해당 패키지를 다시 활성화할 수 있습니다.
-</p>
-
-<p>
-  패키지가 일시 중단된 동안에는 액티비티를 시작할 수 없고, 패키지에 대한
- 알림이 억제되고, <a href="{@docRoot}guide/components/recents.html">개요 화면</a>에서 앱 항목이 숨겨집니다.
-  일시 중단된 패키지는 <a href="{@docRoot}guide/components/recents.html">개요 화면</a>에 표시되지 않고
- (toast와 snackbar를 포함한) 대화 상자를 표시할 수 없습니다. 이들 패키지는 또한 오디오를
- 재생하거나 기기를 진동시킬 수도 없습니다.
-</p>
-
-<p>
-  현재 사용할 수 없는 앱임을 표시하기 위해
-, 런처는 뚜렷이 구별되는 UI를 일시 중단된 앱에 적용해야 합니다. 예를 들어, 앱 아이콘이 회색으로 표시되도록 할 수
- 있습니다. 런처는 앱이 일시 중단된 상태인지
- 확인하기 위해 새 <code>DevicePolicyManager.getPackageSuspended()</code> 메서드를 호출할 수 있습니다.
-</p>
-
-<h2 id="toggle-work">작업 모드 전환</h2>
-
-<p>
-  듀얼 프로필 기기에서는 사용자가 작업 모드를 설정하거나 해제할 수 있습니다. 작업 모드가
- 해제된 중에는 관리된 프로필이 일시적으로 종료됩니다. 프로필
- 소유자 앱을 포함하여 작업 프로필 앱, 백그라운드 동기화 및 알림이 모두
- 비활성화됩니다. 작업 프로필이 비활성화된 중에는 사용자가
- 업무용 앱을 실행할 수 없음을 미리 알려주기 위한 영구적인 상태 아이콘이
- 표시됩니다. 시스템 런처는 업무용 앱과 위젯에 액세스할 수 없음을
- 나타냅니다.
-</p>
-
-<h2 id="always-on-vpn">상시 접속 VPN</h2>
-
-<p>
-  기기 소유자 및 프로필 소유자는 항상 지정된 VPN을 통해 업무용 앱을
- 네트워크에 연결하도록 요구할 수 있습니다. 소유자가 이 요구 사항을 설정하면
- 기기는 부팅 시 해당 VPN을 자동으로 시작합니다.
-</p>
-
-<p>
-  소유자는 새 <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code> 메서드를 호출하여 VPN을 사용하도록 요구할 수
- 있습니다. 소유자가
- VPN 요구 사항을 설정했는지 확인하려면 새
- <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code> 메서드를 호출하십시오.
-</p>
-
-<p>
-  시스템에서 앱 상호 작용 없이 VPN 서비스를 직접 바인딩할 수 있으므로,
- VPN 클라이언트는 상시 접속 VPN에 대해 새로운 진입점을 처리해야 합니다. 이전과 마찬가지로,
- {@link android.net.VpnService android.net.VpnService} 작업과 일치하는 인텐트 필터를 사용하여 활성 서비스를
- 찾을 수 있습니다.
-</p>
-
-<p>
-  사용자는 <strong>Settings &gt; More &gt;
- VPN</strong> 화면을 사용하여 {@link
- android.net.VpnService}를 구현하는 상시 접속 VPN 클라이언트를 수동으로 설정할 수 있습니다.
-</p>
-
-<h2 id="contacts">연락처와 작업 프로필 통합</h2>
-
-<p>
-  프로필 소유자는 기본 사용자의 업무용 연락처에 대한 로컬 검색 및 디렉터리 조회를
- 허용할 수 있습니다. 예를 들어, 사용자는 개인 다이얼러 또는 연락처 애플리케이션에서
- 개인용 및 업무용 디렉터리 연락처에 모두 액세스할 수 있습니다(프로필
- 관리자가 허용한 경우).
-</p>
-
-<p>
-  Contact Provider를 활용하는 개발자는, 정책에 따라 허용되는 경우
-, Enterprise Contacts API를 사용하여 기본 사용자의 작업 프로필 디렉터리 항목에 액세스할 수
- 있습니다.
-</p>
-
-<ul>
-  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
-  </li>
-</ul>
-
-<p>
-  프로필 소유자는 다음과 같은 새로운 메서드를 사용하여 기본 사용자의 업무용 연락처를 표시할지
-여부를 제어할 수 있습니다.
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
-  </li>
-</ul>
-
-<h2 id="remote-reboot">원격 재부팅</h2>
-
-<p>
-  기기 소유자는 기기를 원격으로 재부팅할 수 있습니다. 경우에 따라, 구내의 공공 장소에 배치되어 있는
- 기기는 전원 버튼에 액세스하지 못하게 되어 있습니다. 기기를
- 재부팅해야 하는 경우 관리자가 새
- <code>DevicePolicyManager.reboot()</code> 메서드를 사용하여 재부팅할 수 있습니다.
-</p>
-
-<h2 id="disable-roaming">데이터 로밍 비활성화</h2>
-
-<p>
-  기기 소유자는 새로운 {@link
- android.os.UserManager} 사용자 제한 <code>DISALLOW_DATA_ROAMING</code>을 사용하여 데이터 로밍을 비활성화할 수 있습니다.
-</p>
-
-<h2 id="process-logging">엔터프라이즈 프로세스 로깅</h2>
-
-<p>
-  기기 소유자는 앱 실행, adb 액티비티 및 화면 잠금 해제를 비롯한 기기 액티비티를
- 원격으로 추적하여 의심스러운 액티비티를 식별할 수 있습니다. 프로세스
- 로그는 사용자 동의를 받을 필요가 없습니다. 로그를 검색하기 위해, 기기 소유자는 <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>를 사용하여
- 기기 로깅을 활성화할 수 있습니다.
-</p>
-
-<p>
-  API 변경 사항에는 다음이 포함됩니다.
-</p>
-
-<ul>
-
-  <li>
-    새로운 클래스 <code>android.app.admin.SecurityLog</code>와 이 클래스의
- 메서드
-  </li>
-
-  <li>
-    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrieveSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
-  </li>
-</ul>
-
-<h2 id="bug-reports">원격 버그 보고서</h2>
-
-<p>
-  기기 소유자는 기기 상태 덤프 파일이 포함된 버그 보고서를
- 원격으로 트리거하고 검색할 수 있으며, 이를 통해 알려진 문제나 손상된 기기에 대한
- 포렌식 조사를 수행할 수 있습니다. 버그 보고서는 그 본질상 세세한 내용까지 담고 있으므로,
- 사용자 동의를 받아야 합니다.
-</p>
-
-<p>
-  Android N에서는 이 기능을 지원하기 위해 다음과 같은 API를 포함합니다. 자세한
- 내용은 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK
- 참조</a>를 확인하세요.
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.requestBugreport()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportFailed()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportShared()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
-  </li>
-</ul>
-
-<h2 id="remove-cert">클라이언트 인증서 제거</h2>
-
-<p>
-  프로필 소유자와 기기 소유자는 이제 새 <code>DevicePolicyManager.removeKeyPair()</code>
- 메서드를 호출하여, {@link android.app.admin.DevicePolicyManager#installKeyPair
- installKeyPair()}를 통해 설치된 클라이언트 인증서를
- 제거할 수 있습니다.
-</p>
-
-<h2 id="grant-cert-on-install">설치 시 클라이언트 인증서에 대한
- 액세스 권한 부여</h2>
-
-<p>
-  프로필 소유자나 기기 소유자가 인증서 관리 권한을
- 타사 앱에 부여할 경우, 해당 앱은 소유자의 간섭을 전혀 받지 않고도 인증서에
- 액세스 권한을 부여할 수 있습니다.
-</p>
-
-<p>
-  인증서 관리를 위한 기존 API가 확장되었으며 다음을 포함합니다.
-</p>
-
-<ul>
-  <li><code>DevicePolicyManager.installKeyPair()</code>
-  </li>
-</ul>
-
-<h2 id="ui-policy">시스템 UI 정책 투명성</h2>
-
-<p>
-  사용자 환경에 영향을 미치는 정책이나 사용자 Settings를 제한하는 정책은
- 사용자에게 완전히 공개되며, 프로필 소유자와 기기 소유자는 해당 정책에 대한 책임을
- 회사의 IT 부서로 돌릴 수 있습니다. Settings에 일관되게 표시되는 “Action
- not allowed” 메시지 외에도, IT 관리자는
- 다음과 같은 새로운 {@link android.app.admin.DevicePolicyManager} 메서드를 사용하여 기기 설정에서 조직별 지원 메시지를
- 설정할 수 있습니다.
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setShortSupportMessage()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.setLongSupportMessage()</code>
-  </li>
-</ul>
-
-<h2 id="restrictions-mgmt">앱 제한 관리 향상</h2>
-
-<p>
-  기기 소유자나 프로필 소유자는 새 <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
- 메서드를 통해 다른 애플리케이션이 앱 제한을
- 관리하도록 할 수
- 있습니다. 지정된 애플리케이션은 이 권한이 부여되었는지
-여부를 확인하기 위해 <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>를 호출할
-수 있습니다.
-</p>
-
-<p>
-  앱 제한을 관리하도록 지정된 애플리케이션은 해당 사용자 또는 프로필 내에 있는 어떤 패키지에 대해서도 {@link
- android.app.admin.DevicePolicyManager#setApplicationRestrictions
- setApplicationRestrictions()} 및 {@link
- android.app.admin.DevicePolicyManager#getApplicationRestrictions
- getApplicationRestrictions()}를 호출할 수 있습니다.
-</p>
-
-<h2 id="location-off">위치 해제 스위치</h2>
-
-<p>
-  사용자는 개인용 앱에서 위치 정보에 계속 액세스하는 동안에도
- 업무용 앱의 위치 권한을 비활성화할 수 있습니다. 사용자는
- Location Settings에 있는 별개의 위치 액세스 스위치를 사용하여 작업 프로필에서 실행 중인
- 앱의 위치 업데이트 또는 마지막 위치 쿼리를 거부할 수 있습니다.
-</p>
-
-<p>
-  최상위 수준 위치 해제 스위치를 사용하면 기본 프로필과 관리된 프로필에
- 대해 모두 위치 액세스를 비활성화할 수 있습니다.
-</p>
-
-<h2 id="custom-provisioning">사용자 지정 프로비저닝</h2>
-
-<p>
-  애플리케이션은 기업 색상과 로고를 사용하여 프로필 소유자 및 기기 소유자 프로비저닝
- 흐름을 사용자 지정할 수 있습니다.
-</p>
-
-<dl>
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
-  </dt>
-
-  <dd>
-    흐름 색상을 사용자 지정합니다.
-  </dd>
-
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
-  </dt>
-
-  <dd>
-    기업 로고를 사용하여 흐름을 사용자 지정합니다.
-  </dd>
-</dl>
-
-<h2 id="multi-wifi-ca">다중 Wi-Fi CA 인증서</h2>
-
-<p>
-  프로필 소유자와 기기 소유자는 주어진 Wi-Fi 구성에 대해 다중 CA 인증서를 설정할 수
- 있습니다. SSID가 동일한 별개의 액세스 지점에 대해
- 별개의 CA가 기업 Wi-Fi 네트워크에 있는 경우, IT 관리자가 새 메서드 <code>setCaCertificates()</code>를 사용하여
- 모든 관련 CA를 Wi-Fi 구성에 포함시킬 수
- 있습니다.
-</p>
-
-<p>
-  추가되는 API는 다음과 같습니다.
-</p>
-
-<ul>
-  <li>
-    <code>WifiEnterpriseConfig.setCaCertificates()</code>
-  </li>
-
-  <li>
-    <code>WifiEnterpriseConfig.getCaCertificates()</code>
-  </li>
-</ul>
-
-<h2 id="custom-lock">사용자 지정 잠금 화면 메시지</h2>
-
-<p>
-  기기 소유자는 잠금 화면에 표시될 소유자 정보를 제공할 수 있습니다.
-  이 정보는 사용자 잠금 화면 메시지(설정되어 있는 경우)보다
- 우선합니다. 새 {@link android.app.admin.DevicePolicyManager} 메서드는 다음과 같습니다.
-</p>
-
-<ul>
-  <li>
-    <code>setDeviceOwnerLockScreenInfo()</code>
-  </li>
-
-  <li>
-    <code>getDeviceOwnerLockScreenInfo()</code>
-  </li>
-</ul>
-
-<h2 id="work-connectionservice">작업 프로필 연결 서비스</h2>
-
-<p>
-  프로필 소유자는 호출 백엔드(호출 계정)용으로
- 작업별 {@link android.telecom.ConnectionService}를 사용하는 업무용 다이얼러 애플리케이션을
- 지정할 수 있습니다. 업무용 다이얼러는 업무 전용 통화 기록을
- 유지 관리하고 업무용 연락처에만 의존합니다. 사용자는 전화 걸기 애플리케이션에 상관없이 일관된 통화 UI
- 환경을 사용합니다. 업무 통화 계정으로 수신되는 업무 통화는
- 개인 통화 계정으로 수신되는 개인용 통화와
- 구분됩니다.
-</p>
-
-<p>
-  다이얼러는 새 플래그
- <code>android.telecom.Call.PROPERTY_WORK_CALL</code>을 검사하여 통화가
-업무 통화인지 결정합니다. 통화가 업무 통화인 경우, 다이얼러는 작업 배지를 추가하는 등의 방법으로
- 이를 표시해야 합니다.
-</p>
-
-<h2 id="lock-wp">배경 화면 잠금</h2>
-
-<p>
-  새 사용자 제한(<code>DISALLOW_SET_WALLPAPER</code>)에 따라 사용자는
- 배경 화면을 변경할 수 없습니다. 그래도 기기 소유자나 프로필 소유자는
- 배경 화면을 변경할 수 있지만, 자신이 관리하는 사용자나 프로필의
- 배경 화면만 변경할 수 있을 뿐입니다. 예를 들어, 프로필 소유자는 상위 사용자의 배경 화면은
- 변경할 수 없지만, 기본 프로필에 있는 프로필 소유자나 기기 소유자는
- 변경할 수 있습니다. 배경 화면을 변경하고 싶은 프로필 소유자나 기기 소유자는
- 자신이 관리하는 사용자 또는 프로필에
- 배경 화면이 있는지({@link android.app.WallpaperManager#isWallpaperSupported
-  isWallpaperSupported()}), 그리고 이를 변경하도록 허용되는지 여부를 확인해야 합니다(새 메서드
- <code>WallpaperManager.isWallpaperSettingAllowed()</code> 사용).
-</p>
-
-<h2 id="lock-user-icon">사용자 아이콘 잠금</h2>
-
-<p>
-  새 사용자 제한(<code>DISALLOW_SET_USER_ICON</code>)에 따라 사용자는
- 사용자 아이콘을 변경할 수 없습니다. 그래도 사용자의 기기 소유자나 프로필 소유자는
- 아이콘을 변경할 수 있습니다. 하지만, 프로필 소유자는 자신이 관리하는 프로필에 대한 사용자 아이콘만
- 변경할 수 있을 뿐입니다.
-</p>
-
-<h2 id="health-monitoring">기기 상태 모니터링</h2>
-
-<p>
-  기기 소유자나 프로필 소유자는 새
- <code>HardwarePropertiesManager</code> 인터페이스를 사용하여 CPU나 GPU의 온도, CPU 사용량 등, 기기 상태에 대한
- 정보를 검색할 수 있습니다. 새
- 모니터링 인터페이스는 원격 위치에서 지켜보는 사람이 없이 작동하는 기기를
- 모니터링하는 데 특히 유용합니다.
-</p>
diff --git a/docs/html-intl/intl/ko/preview/license.jd b/docs/html-intl/intl/ko/preview/license.jd
deleted file mode 100644
index 875ec85..0000000
--- a/docs/html-intl/intl/ko/preview/license.jd
+++ /dev/null
@@ -1,145 +0,0 @@
-page.title=라이선스 계약
-
-@jd:body
-
-<p>
-Android SDK Preview를 시작하려면 우선 다음과 같은 사용 약관에 동의해야 합니다.
-아래에 설명한 바와 같이, 이것은 Android SDK의 프리뷰 버전이며 변경될 가능성이 있고 이를 사용하는 위험 부담은 계약자 본인에게 있음을 유의하십시오.  Android SDK Preview는 안정된 릴리스가 아니며, 오류나 결함이 들어있을 수 있고 이 때문에 컴퓨터 시스템, 기기 및 데이터에 심각한 손상을 초래할 수 있습니다.
-</p>
-
-<p>
-이것은 Android SDK Preview 라이선스 계약서입니다(이하 "라이선스 계약").
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-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이 제공하는 Preview의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 Preview에서 개발된 애플리케이션이 이후 버전의 Preview와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 Preview(또는 Preview에 포함된 기능) 제공을 (영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
-
-3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
-
-3.8 계약자는 Preview에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
-
-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 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 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
-
-10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
-
-11. 책임 한계
-
-11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
-
-12. 면책
-
-12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
-
-13. 라이선스 계약 변경
-
-13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
-
-14. 일반 법적 조건
-
-14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 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>
\ 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
deleted file mode 100644
index 0b14413..0000000
--- a/docs/html-intl/intl/ko/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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>
-  <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 베타 프로그램을 통해 지원되는 모든 기기에 대해 원활한 OTA 업데이트가 제공됩니다.
- 플래시가 필요 없습니다.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        피드백 및 지원
-      </h5>
-
-      <p>
-        Google의 <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#dp1">Preview 1</a></strong>(최초 릴리스, 알파)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong>(증분 업데이트, 알파)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></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 및 파일 호환성 문제에 대한 피드백을 제공하는 우선 순위 기간입니다. 이 모든 경우에 대해 <a href="{@docRoot}preview/bug">Issue Tracker</a>를 사용하세요.
-
-
- 업데이트 과정에서 일부 API가 변경될 수 있습니다.
-</p>
-
-<p>
-  <strong>Preview 4 및 5</strong>에서는 개발에 사용할 <strong>최종 N API 및 SDK</strong>와 최종 버전에 가까운 시스템 이미지에 액세스할 수 있으며, 시스템 동작과 기능을 테스트할 수 있습니다.
-
- 이 시점에서 Android N은 표준 API 레벨을 제공합니다.
- 레거시 앱의 최종 호환성 테스트를 시작할 수 있으며 N API 또는 기능을 사용하는 새 코드를 개선할 수 있습니다.
-
-</p>
-
-<p>
-  또한 Preview 4부터는 공식 API 레벨에서 Android N이 실행되는 <strong>기기(예: Android 베타 프로그램에 옵트인한 소비자 기기)에 앱을 게시</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}studio/intro/update.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에서는 프로그램에 등록한 기기에 Android N의 최신 프리뷰 업데이트를 자동으로 직접 전송해 주는 OTA(Over-the-Air) 업데이트 프로그램을 새로 도입했습니다.
-
- 이 프로그램은 무료이고 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 베타 사이트에서 언제든지 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/bugs">알려진 문제</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
-라이브러리를 제공합니다. 앱을 테스트하기 위해 호환성 동작에서 옵트아웃하려는 경우(적극 권장), 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>를 제공합니다. 이 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분기로 예정되어 있습니다. 이때 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 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/preview_toc.cs b/docs/html-intl/intl/ko/preview/preview_toc.cs
deleted file mode 100644
index 116b855..0000000
--- a/docs/html-intl/intl/ko/preview/preview_toc.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-<ul id="nav">
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="程式總覽"> 프로그램 개요</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/support.html"> 지원 및 릴리스 노트</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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"> Preview 설정</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="在裝置上測試"> 기기에 대한 테스트</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="行為變更">동작 변경 사항</a></div>
-      <ul>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/background-optimization.html" 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="背景最佳化">백그라운드 최적화</a></li>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/multilingual-support.html" 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="語言和地區設定">언어 및 로케일 </a></li>
-      </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="&lt;?cs var:toroot ?&gt;preview/features/multi-window.html" 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="多視窗支援"> 다중 창 지원</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/notification-updates.html" 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="通知"> 알림</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/data-saver.html"> Data Saver</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/tv-recording-api.html" 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 녹화</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/security-config.html" 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="網路安全性設定"> 네트워크 보안 구성</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/icu4j-framework.html" 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 지원</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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 언어 기능</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/afw.html"> Android for Work 업데이트</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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="限定範圍目錄存取"> 범위가 지정된 디렉터리 액세스</a></li>
-      </ul>
-  </li>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/samples.html" es-lang="Ejemplos" in-lang="Contoh" ja-lang="サンプル" ko-lang="샘플" pt-br-lang="Exemplos" ru-lang="Примеры" zh-cn-lang="示例" zh-tw-lang="範例"> 샘플</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/license.html" es-lang="Contrato de licencia" ja-lang="使用許諾契約" ko-lang="라이선스 계약" pt-br-lang="Contrato de licença" ru-lang="Лицензионное соглашение" zh-cn-lang="许可协议" zh-tw-lang="授權協議"> 라이선스 계약</a></div>
-  </li>
-
-</ul> 
\ 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
deleted file mode 100644
index c2a0380..0000000
--- a/docs/html-intl/intl/ko/preview/setup-sdk.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-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 가져오기</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>
-
-<p>Android Studio가 이미 설치된 경우 <strong>Help &gt; Check for Update</strong>(Mac의 경우, <strong>Android Studio &gt; Check for Updates</strong>)를 클릭하여 Android Studio 2.1 이상이 설치되어 있는지 확인해야 합니다.
-
-</p>
-
-<p>설치되어 있지 않은 경우 <a href="{@docRoot}studio/">여기서 Android Studio 2.1을 다운로드</a>하세요.
-</p>
-
-
-<h2 id="get-sdk">N Preview SDK 가져오기</h2>
-
-<p>Android N API를 사용한 개발을 시작하려면, 다음과 같이 Android N Preview SDK를 Android Studio에 설치해야 합니다.
-</p>
-
-<ol>
-  <li><strong>Tools &gt; Android &gt; SDK Manager</strong>를 클릭하여 SDK Manager를 엽니다.
-</li>
-
-  <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-3-docs.zip">n-preview-3-docs.zip</a></td>
-    <td width="100%">
-      MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
-    </td>
-  </tr>
-<table>
-
-
-
-<h2 id="java8">Java 8 JDK 가져오기</h2>
-
-<p>Android N 플랫폼에 대해 앱을 컴파일하고 Android Studio 2.1에서 일부 도구를 사용하려면 Java 8 개발자 키트(JDK 8)를 설치해야 합니다.
- 따라서 아직 최신 버전이 없는 경우, 지금 JDK 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-rc3'</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/ko/preview/support.jd b/docs/html-intl/intl/ko/preview/support.jd
deleted file mode 100644
index 3f83721..0000000
--- a/docs/html-intl/intl/ko/preview/support.jd
+++ /dev/null
@@ -1,1188 +0,0 @@
-page.title=지원 및 릴리스 노트
-meta.keywords="preview", "android"
-page.tags="preview", "developer preview"
-page.image=images/cards/card-n-support_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>이 문서의 내용</h2>
-
-<ul>
-  <li><a href="#dp3">Developer Preview 3</a>
-    <ul>
-      <li><a href="#general">일반 권고 사항</a></li>
-      <li><a href="#new">DP3의 새로운 기능</a></li>
-      <li><a href="#ki">알려진 문제</a></li>
-    </ul>
-  </li>
-  <li><a href="#dp2">Developer Preview 2</a></li>
-  <li><a href="#dp1">Developer Preview 1</a></li>
-</ul>
-
-<!--
-<h2>See Also</h2>
-<ol>
-  <li></li>
-</ol>
--->
-
-</div>
-</div>
-
-<p>
-  Android N Developer Preview를 사용하여 개발과 테스트를 수행할 때 두 가지 기본 지원 채널을 사용할 수 있습니다.
- 기기별 버그, 시스템 버그 및 Google 앱 버그의 경우 <a href="https://developer.android.com/preview/bug">https://developer.android.com/preview/bug</a>에 버그를 제출하세요.
- 기타 앱의 문제는 개발자에게 직접 문의하세요.
-
-</p>
-
-<p>Android N을 사용하는 다른 개발자들과 문제 또는 아이디어를 논의하려면 <a href="{@docRoot}preview/dev-community">Developer Preview Google+ 커뮤니티</a>에 가입하세요.
-</p>
-
-<h2 id="dp3">Developer Preview 3</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>날짜: 2016년 5월<br>
-        빌드: NPD35K<br>
-        에뮬레이터 지원: x86 및 ARM(32비트/64비트)<br>
-        Google Play 서비스: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="general">일반 권고 사항</h3>
-
-<p>
-  이 Developer Preview 릴리스는 <strong>앱 개발자 및 기타 얼리 어댑터</strong>를 위한 것이며, 일상적인 용도로 사용하거나, 개발 또는 호환성 테스트에 사용할 수 있습니다.
-
- 이 릴리스에 대한 다음과 같은 일반적인 참고 사항을 숙지하시기 바랍니다.
-
-</p>
-
-<ul>
-  <li>이 릴리스에서는 지원되는 기기에서 다양한 <strong>안정성 문제</strong>가 있을 수 있습니다.
- 사용자는 커널 패닉 및 작동 중단 등의 시스템 불안정 문제를 겪을 수 있습니다.
-
-  </li>
-
-  <li>일부 앱의 경우 새로운 플랫폼 버전에서 <strong>예상과 다르게 작동할 수 있습니다</strong>.
- 여기에는 Google 앱뿐만 아니라 다른 앱도 포함됩니다.
-  </li>
-
-  <li>Developer Preview 3는 Nexus 5X, Nexus 6, Nexus 6P 및 Pixel C 기기에서 <strong>CTS(Compatibility Test Suite) 승인을 받았습니다</strong>.
- CTS 승인 빌드를 사용하는 앱은 이들 기기에서 정상적으로 작동해야 합니다(예: Android Pay).
-
-
-  </li>
-
-  <li>Developer Preview 3는 <strong>지원되는 모든 기기에서 사용할 수 있습니다.</strong>
- 이러한 기기로는 Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player, Pixel C, General Mobile 4G(Android One) 뿐만 아니라 Sony Xperia Z3(D6603 및 D6653 모델)가 포함됩니다.
-
-
-
-  </li>
-</ul>
-
-
-<h3 id="new">DP3의 새로운 기능</h3>
-
-<h4 id="">Android용 VR 모드</h4>
-
-<p>
-  Android N에서는 개발자가 사용자를 위한 고품질 모바일 VR 환경을 만들 수 있도록 새로운 VR 모드에 대한 플랫폼 지원과 최적화 기능을 추가했습니다.
- VR 앱 전용 CPU 코어에 대한 액세스를 비롯하여, 다수의 성능 개선 사항이 있습니다.
-
- 지능적 머리 추적과 VR용으로 작동하는 스테레오 알림 기능을 앱 내에서 이용할 수 있습니다.
- 가장 중요한 점은, 지연 시간이 매우 짧은 그래픽을 Android N이 제공한다는 사실입니다.
-
-</p>
-
-<p>
-  자세한 내용은 <a href="https://developers.google.com/vr/android/">Android용 Google VR SDK</a>를 참조하세요.
-</p>
-
-<h4 id="">지속적인 성능 모드</h4>
-
-<p>
-  Android N에는 <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">지속적인 성능 모드</a>를 위한 지원 기능(선택 사항)이 포함되어 있으며, 이 모드를 통해 OEM들은 장시간 실행되는 애플리케이션의 기기 성능에 대한 힌트를 제공할 수 있습니다.
-
- 앱 개발자는 이런 힌트를 사용하여 장기간에 걸쳐 기기 성능을 예측 가능하고 일관된 수준으로 유지하기 위해 애플리케이션을 적절히 조정할 수 있습니다.
-
- 앱 개발자는 Developer Preview에 있는 이 새 API를 Nexus 6P 기기에서만 시험해 볼 수 있습니다.
-
-</p>
-
-<h4>Multiprocess WebView</h4>
-
-<p>
-  Android N의 버전 51부터는 개발자 옵션 "Multiprocess WebView"가 활성화된 경우, WebView는 별도의 샌드박싱된 프로세스에서 웹 콘텐츠를 실행합니다.
-
- WebView 팀은 향후 Android 버전에서 Multiprocess WebView를 지원하기 전에 N에서의 호환성 및 런타임 성능에 대한 피드백을 기다리고 있습니다.
-
- 이 버전에서는 시작 시간, 총 메모리 사용량 및 소프트웨어 렌더링 성능에 관련된 성능 저하가 예상됩니다.
-
-</p>
-
-<p>
-  다중 프로세스 모드에서 예상치 못한 문제를 발견할 경우 이에 대해 알려주시기 바랍니다.
- <a href="https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">버그 제출</a>을 통해 WebView 팀에 연락하세요.
-
-</p>
-
-<h4 id="">Keyboard Shortcuts Helper</h4>
-
-<p>
-  Android N에서는 사용자가 <code>Meta+/</code> 키를 눌러 <strong>Keyboard Shortcuts</strong> 화면을 트리거할 수 있으며, 이 화면에는 시스템과 해당 앱에서 둘다 사용할 수 있는 모든 바로 가기가 표시됩니다.
-
- 개발자는 자신의 바로 가기를 추가하거나 앱에서 Shortcuts 화면을 트리거할 수 있습니다.
- 자세한 내용은 <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Keyboard Shortcuts Helper</a>를 참조하세요.
-
-</p>
-
-<h4 id="">FrameMetrics API</h4>
-
-<p>
-  DP3에서는 새로운 <a href="{@docRoot}preview/api-overview.html#framemetrics_api">FrameMetrics API</a>를 추가했으며, 이를 통해 앱은 애플리케이션의 현재 창에 대한 프레임 타이밍 정보를 전송하기 위해 스트리밍 PubSub API를 노출함으로써 앱의 UI 렌더링 성능을 모니터링할 수 있습니다. <code>FrameMetricsListener</code>를 사용하면 USB 연결 없이 프로덕션 환경에서 상호 작용 수준의 UI 성능을 더욱 정밀하게 측정할 수 있습니다.
-
-
-
-
-
-</p>
-
-<h4 id="api-changes">기능 및 API 변경 사항</h4>
-
-<dl>
-  <dt>
-    런처 바로 가기 및 런처 바로 가기 API
-  </dt>
-
-  <dd>
-    이 기능은 향후 Android 릴리스로 미루기로 결정되었습니다. 차기 Developer Preview부터는 런처 바로 가기 API(ShortcutManager 등)가 공개 Android N API에서 삭제될 계획입니다.
-
-
-  </dd>
-
-  <dt>
-    페이지 로드 전에 WebView Javascript 실행
-  </dt>
-
-  <dd>
-    Android N을 대상으로 하는 앱부터는 새 페이지가 로드될 때 Javascript 컨텍스트가 초기화됩니다.
- 현재는 새 {@link android.webkit.WebView} 인스턴스에 로드된 첫 페이지에 대해 컨텍스트가 이월됩니다.
-
-    Javascript를 {@link android.webkit.WebView}에 삽입하려는 개발자는 페이지 로드가 시작된 후에 스크립트를 실행해야 합니다.
-
-
-  </dd>
-
-  <dt>
-    비보안 출발지에서의 WebView Geolocation
-  </dt>
-
-  <dd>
-    Android N을 대상으로 하는 앱부터는 보안 출발지(HTTPS를 통함)에서만 Geolocation API가 허용됩니다.
- 이 정책은 사용자가 비보안 연결을 사용하는 경우 사용자의 개인 정보를 보호할 목적으로 설계되었습니다.
-
-  </dd>
-
-  <dt>
-    Data Saver
-  </dt>
-
-  <dd>
-    Developer Preview 3부터는 앱이 인텐트를 사용하여 시스템 대화 상자를 표시할 수 있습니다. 사용자는 이 대화 상자를 통해 Data Saver 면제 허용 목록에 앱을 직접 추가할 수 있습니다.
-
- 자세한 내용은 <a href="{@docRoot}preview/api-overview.html#data_saver">Data Saver 문서</a>를 참조하세요.
-
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#number-blocking">번호 차단</a>
-  </dt>
-
-  <dd>
-    권한 없는 사용자가 번호를 차단하거나 차단 해제하려고 시도하면 이제 {@link java.lang.SecurityException}이 발생하고 작업이 실패합니다.
- (이전에는 작업에서 {@link java.lang.UnsupportedOperationException}을 발생시켰습니다.)
-
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#tile_api">Quick Settings 타일 API</a>
-
-  </dt>
-
-  <dd>
-    이제 시스템에서는 액티비티의 메타데이터를 사용하여 타일 모드를 결정합니다.
-    (이전에는 <code>TileService.onTileAdded()</code>의 반환 값으로 타일 모드가 결정되었습니다.)
- 자세한 내용은 다운로드 가능한 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 참조</a>에서 <code>TileService.META_DATA_ACTIVE_TILE</code>을 참조하세요.
-
-  </dd>
-</dl>
-
-<h4 id="dp3-fixes">개발자가 보고한 문제의 수정 사항</h4>
-
-<p>
-  다음을 비롯하여 개발자가 보고한 여러 문제가 수정되었습니다.
-</p>
-
-<ul>
-  <li>노래가 하나 끝난 후 블루투스 오디오 재생이 중단됨(버그 <a href="https://code.google.com/p/android/issues/detail?id=206889">206889</a>)
-  </li>
-
-  <li>Pixel C가 지속적으로 작동 중단됨(버그 <a href="https://code.google.com/p/android/issues/detail?id=206962">206962</a>)
-  </li>
-
-  <li>시계 및 알림 메시지의 알림 문제(버그 <a href="https://code.google.com/p/android/issues/detail?id=203094">203094</a>)
-  </li>
-
-  <li>USB C 케이블을 통해 MacBook Pro에 연결된 경우 Pixel C가 재부팅됨(버그 <a href="https://code.google.com/p/android/issues/detail?id=205432">205432</a>)
-
-  </li>
-
-  <li>캘린더가 하루 오프셋됨(버그 <a href="https://code.google.com/p/android/issues/detail?id=203002">203002</a>)
-  </li>
-
-  <li>TelephonyManager.getAllCellInfo가 잘못된 데이터를 반환함(버그 <a href="https://code.google.com/p/android/issues/detail?id=203022">203022</a>)
-  </li>
-
-  <li>Nexus 6P, 블루투스의 연결이 계속 끊김(버그 <a href="https://code.google.com/p/android/issues/detail?id=208062">208062</a>)
-  </li>
-</ul>
-
-<p>수정된 문제의 전체 목록을 보려면 <a href="https://goo.gl/6uCKtf">Issue Tracker</a>를 참조하세요.
-</p>
-
-<h3 id="ki">알려진 문제</h3>
-
-<h4>접근성</h4>
-
-<ul>
-  <li>피치가 최대 수준에 가깝게 설정된 경우 TTS 출력을 들을 수 없습니다.
-  </li>
-
-  <li>확대 제스처 및 설정을 비롯한 접근성 기능 및 설정은 사용자가 작업 프로필을 추가하는 경우 중단될 수 있습니다.
- 접근성 상태는 사용자가 관련 설정을 다음 번에 터치할 때 복구됩니다.
-
-  </li>
-</ul>
-
-<h4>카메라</h4>
-
-<ul>
-  <li>카메라 앱이 불안정한 작동을 보였습니다. 이 앱은 다양한 경우(예: 다중 창 모드에서 실행되는 경우) 작동이 중단될 수 있습니다.
-
-  </li>
-
-  <li>파노라마 모드에서 셔터를 계속해서 누르면 카메라 앱의 작동이 중단될 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>오디오</h4>
-<ul>
-  <li>플랫폼의 오디오 플레이어 문제로 인해 일부 앱이 정상적으로 작동하지 않습니다.
- 예를 들어, Skype 및 기타 앱이 이 문제의 영향을 받습니다.
-  </li>
-</ul>
-
-<h4>연결</h4>
-
-
-<ul>
-  <li>블루투스 저전력(Bluetooth Low Energy, BLE) 주변 역할 기기가 서비스를 알리고 있는데 BLE 중앙 역할 기기가 연결되면, 주변 역할 기기가 즉각적으로 연결을 해제합니다.
-
-
-  </li>
-
-  <li>화면이 꺼지면 Wi-Fi 연결이 끊길 수 있습니다.
-  </li>
-
-  <li>RFCOMM 연결이 불안정하며, 이로 인해 데이터 손상 및 연결 자주 끊김이 발생할 수 있습니다.
-
-  </li>
-
-  <li>일부 제한된 백그라운드 시나리오 중에, 활성 네트워크 상태({@link android.net.NetworkInfo#getState NetworkInfo.getState()} 및 {@link android.net.NetworkInfo#getDetailedState NetworkInfo.getDetailedState()})가 잘못된 값을 반환할 수 있습니다.
-
-
-
-  </li>
-</ul>
-
-
-<h4>
-  런처
-</h4>
-
-<ul>
-  <li>화면이 꺼졌다가 켜진 후 기본 런처의 All Apps 트레이가 응답하지 않을 수 있습니다.
- 홈 화면으로 돌아간 후 All Apps 트레이를 다시 실행하면 이 문제가 해결될 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>
-  키보드
-</h4>
-
-<ul>
-  <li>Android 6.0 이전 버전이 실행되는 기기를 N Developer Preview로 업데이트하는 경우, Google 키보드가 최신 그림 이모티콘 및 소리 설정과 같은 기본 설정 데이터를 유지하지 않습니다.
-
-
-  </li>
-
-  <li>Google Indic Managed Keyboard는 불안정할 수 있습니다.
-  </li>
-
-  <li>비밀번호 필드에 텍스트를 입력할 때 사용자가 러시아어를 입력 언어로 선택할 수 있지만 키보드는 계속 영어를 유지합니다.
- 이로 인해 사용자가 러시아어 언어로 암호를 입력할 수 없습니다.
-
-  </li>
-</ul>
-
-<h4>
-  로케일 및 언어
-</h4>
-
-<ul>
-  <li>오른쪽에서 왼쪽으로 읽기(RTL) 로케일을 사용하는 경우, 기기를 재시작한 후 예기치 않게 왼쪽에서 오른쪽으로 읽기(LTR) 표시로 시스템이 전환될 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>미디어</h4>
-
-<ul>
-  <li>HD 비디오 재생 문제를 비롯하여, Nexus 9 및 Nexus Player에서 미디어 재생이 불안정할 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>
-  다중 창 모드
-</h4>
-
-<ul>
-  <li>다중 창 모드에서 방향을 변경하면 기기가 작동을 멈출 수 있습니다.
-  </li>
-
-  <li>현재 여러 앱에서 다중 창 모드와 관련하여 문제가 있습니다.
-    <ul>
-      <li>Settings &gt; Display &gt; Screen brightness를 다중 창에 도킹하면 시스템 UI의 작동이 중단될 수 있습니다.
-
-      </li>
-
-      <li>카메라 앱을 다중 창 모드에서 실행하면 작동이 중단될 수 있습니다.
-      </li>
-
-      <li>YouTube를 다중 창 모드에서 실행하면 작동이 중단될 수 있습니다. Storage &gt; Apps &gt; YouTube에서 YouTube 앱 데이터를 지워서 이 문제를 수정할 수 있습니다.
-
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>
-  Google Play 서비스
-</h4>
-
-<ul>
-  <li>Google Play 서비스를 통해 Google Cast를 사용하는 앱의 경우, ASCII 범위에 속하지 않는 글자 및 숫자를 사용하는 시스템 로케일을 사용자가 선택하면 앱이 불안정해질 수 있습니다.
-
-
-  </li>
-</ul>
-
-<h4>
-  Android for Work 및 Google Apps Device Policy
-</h4>
-
-<ul>
-  <li>사용자가 "device policy status" 화면이 고정된 상태로 기기의 잠금을 해제할 경우, Device Policy 앱의 작동이 중단될 수 있습니다.
-
-  </li>
-
-  <li>파일 기반 암호화가 설정된 채로 작업 프로필을 설정하고, Work를 끈 후에 사용자가 다시 한 번 더 기본 프로필 화면 잠금을 해제하여 Work 앱에 액세스해야 합니다.
-
-
-  </li>
-
-  <li>보안 패턴 잠금을 제거하고 업무용 앱/개인 앱을 다중 창에서 열면 기기가 재부팅됩니다.
-
-  </li>
-
-  <li>DISALLOW_VPN_CONFIG를 설정하면 Device Policy Client에 의해 설정되는 상시 접속 VPN 모드에 동의 대화 상자가 나타납니다.
-
-  </li>
-
-  <li>VPN이 상시 접속 VPN 모드에서 연결될 때까지는 트래픽이 잠기지 않습니다.
-  </li>
-</ul>
-
-<h4>
-  외부 저장소
-</h4>
-
-<ul>
-  <li>사용자가 앱을 내부 저장소에서 채택 가능 외부 저장소(SD 카드 또는 USB를 통해 연결된 기기 포함)로 이동하면 앱이 불안정해질 수 있습니다.
-
-
-  </li>
-</ul>
-
-<h4>
-  Google Play에서의 화면 확대/축소 및 다중 APK
-</h4>
-
-<ul>
-  <li>Android N이 실행되는 기기에서 Google Play 서비스 9.0.83은 안정적인 화면 밀도 대신 현재 화면 밀도를 잘못 보고합니다.
- 이러한 기기에서 화면 확대/축소가 활성화된 경우, 이로 인해 Google Play는 더 작은 화면용으로 설계된 다중 APK 앱의 버전을 선택할 수가 있습니다.
-
- 이 문제는 차기 버전의 Google Play 서비스에서 수정되었으며, 나중에 Developer Preview 릴리스에 포함될 것입니다.
-
-
-  </li>
-
-  <li>Android N이 실행되는 기기에서 현재 Google Play 서비스 9.0.83은 Vulkan 버전이 아닌 Vulkan 지원을 보고합니다.
- 이로 인해 Google Play는 더 높은 버전이 지원되는 기기에서 더 낮은 Vulkan 지원용으로 설계된 다중 APK 앱의 버전을 선택할 수가 있습니다.
-
- 현재 Google Play Store에서는 Vulkan 버전 대상 지정을 사용하는 앱의 업로드를 허용하지 않습니다.
- 이 지원은 향후에 Google Play Store에 추가될 예정이고 차기 버전의 Google Play 서비스에서 수정되어 나중에 Developer Preview 릴리스에 포함될 것입니다. Google Play 서비스 9.0.83 버전을 사용하는 모든 N 기기는 기본 Vulkan 지원을 대상으로 하는 앱의 버전을 계속해서 수신합니다.
-
-
-
-
-  </li>
-</ul>
-
-<h4 id="">알림</h4>
-
-<ul>
-  <li>MessagingStyle에서는 "null"(본인 자신) 발신자인 알림을 표시하지 않습니다.
-  </li>
-</ul>
-
-<h4 id="">개발자 도구</h4>
-
-<ul>
-  <li>
-    JDWP 디버깅을 사용하는 중에 <code>adb</code>의 연결이 가끔씩 끊길 수 있습니다.
-  </li>
-</ul>
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-
-
-
-
-
-
-
-<!-- DP2 Release Notes Archive -->
-
-<h2 id="dp2">Developer Preview 2</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>날짜: 2016년 4월<br>
-        빌드: NPC91K, NPC91O<br>
-        에뮬레이터 지원: x86 및 ARM(32비트/64비트)<br>
-        Google Play 서비스: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp2-new">DP2의 새로운 기능</h3>
-
-<ul>
-  <li>Vulkan에 대한 플랫폼 지원. Vulkan은 새로운 3D 렌더링 API이며, 낮은 오버헤드의 명시적 GPU(Graphics Processor Unit, 그래픽 처리 장치) 컨트롤을 제공하고 그리기 호출이 잦은 애플리케이션에 향상된 성능을 제공합니다.
-
- 자세한 내용은 <a href="{@docRoot}ndk/guides/graphics/index.html">문서</a>를 참조하세요.
-
-  </li>
-
-  <li>피부 색조를 지원하는 새로운 사람 그림 이모티콘 및 새로운 유니코드 9 문자 모양.
-  피부 색조 및 새로운 그림 이모티콘은 키보드에 의해 이들 기능에 대한 지원이 색상표에 구축될 때까지는 표시되지 않습니다.
- 시스템에서 제공하지 않는 글꼴을 사용하지 않는 한, 앱은 이러한 새로운 그림 이모티콘을 활용하기 위해 어떠한 작업도 수행할 필요가 없습니다.
- IME 개발자는 새로운 그림 이모티콘에 대한 지원을 포함시켜야 합니다.
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/api-overview.html#launcher_shortcuts">런처 바로 가기 API</a>:
- 앱은 <code>ShortcutManager</code>를 사용하여 해당 앱 내부의 시작점에 대한 바로 가기를 런처로 전송할 수 있습니다.
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/features/multi-window.html">다중 창</a>:
-    이제 액티비티에 대해 최소 높이와 최소 너비를 별도로 지정할 수 있습니다.
- 또한, 여러 가지 API 이름이 약간 변경되었습니다.
-  </li>
-</ul>
-
-<h4 id="dp2-fixes">개발자가 보고한 문제의 수정 사항</h4>
-
-<p>
-  다음을 비롯하여 개발자가 보고한 여러 문제가 수정되었습니다.
-</p>
-
-<ul>
-  <li>숨겨진 SSID 또는 비-브로드캐스트 Wi-Fi에 연결할 수 없음(버그 <a href="https://code.google.com/p/android/issues/detail?id=203116">203116</a>)
-  </li>
-
-  <li>마이크 음소거 상태가 액티비티 간에 유지됨(버그 <a href="https://code.google.com/p/android/issues/detail?id=205922">205922</a>)
-  </li>
-
-  <li>다중 창의 포커스를 변경하면 YouTube가 일시 중지됨(버그 <a href="https://code.google.com/p/android/issues/detail?id=203424">203424</a>)
-  </li>
-
-  <li>열려 있는 액티비티를 직접 회신으로 닫을 수 있음(버그 <a href="https://code.google.com/p/android/issues/detail?id=204411">204411</a>)
-  </li>
-
-  <li>다양한 안정성 문제 수정
-  </li>
-</ul>
-
-<h3 id="dp2-general">일반 권고 사항</h3>
-
-<p>
-  이 Developer Preview 릴리스는 <strong>앱 개발자 전용</strong>이며, 호환성 테스트 및 조기 개발 용도로만 사용하도록 설계되었습니다.
-
-  이 릴리스에 대한 다음과 같은 일반적인 참고 사항을 숙지하시기 바랍니다.
-</p>
-
-<ul>
-
-  <li>개발 도구 구성 요소 및 지원 라이브러리가 DP2 릴리스에 대해 업데이트되었습니다.
- DP2용으로 개발하기 전에 Preview 개발 환경을 업데이트해야 합니다.
- 개발 환경을 설정하는 방법에 대한 지침은 <a href="{@docRoot}preview/setup-sdk.html">Preview 설정</a>을 참조하세요.
-
-
-  </li>
-
-  <li>이 릴리스의 경우 모든 기기에서 다양한 안정성 및 성능 문제가 있으므로 <strong>전화 또는 태블릿에서 일상적으로 사용하는 데 적합하지 않으며</strong>, 특히 개발자가 아닌 일반 사용자가 사용하기에 적합치 않습니다.
-
-
-  </li>
-
-  <li>배터리 수명 및 성능은 이 릴리스에서 아직 최적화되지 않았습니다.
-
-
-    <ul>
-      <li>시스템 및 앱 <strong>성능이 주기적으로 느려지고 저하되는 것으로 확인되었으며</strong>, 기기가 가끔씩 응답을 멈출 수 있습니다.
- 이러한 문제는 장기 사용 시 더 심해질 수 있습니다.
-
-      </li>
-
-      <li>이 릴리스에서 화면을 켜고 끄는 과정에서 배터리 수명이 감소할 수 있습니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>일부 앱의 경우 Developer Preview 2에서 <strong>정상적으로 작동하지 않을 수 있습니다</strong>. 여기에는 Google 앱뿐만 아니라 다른 앱도 포함됩니다.
-
-  </li>
-
-  <li>이 조기 빌드는 <strong>CTS(Compatibility Test Suite) 승인</strong>을 받지 않았습니다.
- CTS 승인을 받은 빌드를 사용하는 앱은 작동하지 않습니다(예: Android Pay).
-
-  </li>
-
-  <li>이 프리뷰 릴리스에서는 Nexus 5X, Nexus 6, Nexus 6P, Nexus 9 및 Pixel C 뿐만 아니라 General Mobile 4G(Android One) 기기를 지원합니다.
-
- Nexus Player 지원은 곧 추가될 것입니다.
-  </li>
-
-
-  <li><a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a>는 DP1 및 DP2 사이의 API 변경 사항을 처리하도록 업데이트되었습니다.
-
-  </li>
-</ul>
-
-<h3 id="dp2-ki">알려진 문제</h3>
-
-<h4>성능 및 배터리</h4>
-
-<ul>
-  <li>시스템 및 앱 성능이 <strong>주기적으로 느려지고 저하</strong>되는 것으로 확인되었으며, 기기가 가끔씩 응답을 멈출 수 있습니다.
- 이러한 문제는 장기 사용 시 더 심해질 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>Google 계정</h4>
-
-<ul>
-  <li>경우에 따라 <code>AccountManagerService</code>와 관련된 문제가 있을 수 있으며, 이로 인해 Google 계정에 로그인하지 못할 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>시스템 업데이트</h4>
-
-<ul>
-  <li>DP2로 업데이트한 후 즉시 기기가 재시작될 수 있습니다.
-  </li>
-</ul>
-
-<h4>접근성</h4>
-
-<ul>
-  <li>피치가 최대 수준에 가깝게 설정된 경우 TTS(텍스트 음성 변환) 출력을 듣는 데 문제가 있습니다.
-
-  </li>
-</ul>
-
-<h4>블루투스</h4>
-
-<ul>
-  <li>블루투스 저전력(LE) GATT 특성이 잘못된 쓰기 유형을 사용하며 원격 기기로 전송되지 않습니다.
- 이에 따라 예를 들면 일부 피트니스 기기가 작동하지 않습니다.
-
-  </li>
-</ul>
-
-<h4>설정 마법사</h4>
-
-<ul>
-  <li>"Your Google Account"에서 새 기기(또는 새롭게 초기화된 기기)의 데이터를 복원하는 옵션이 설정 마법사에서 작동하지 않습니다.
- 설정 마법사에서 "다른 Android 기기"를 선택하여 기존 기기의 데이터를 복원하거나, 기존 기기를 새 기기로 설정해야 합니다.
-
-
-  </li>
-</ul>
-
-<h4>OEM 잠금 해제</h4>
-
-<ul>
-  <li>일부 기기에서, DP2를 실행하는 동안 "Developer Options"에서 <strong>Enable OEM unlock</strong>이 비활성화됩니다.
-<br>
-  <strong>해결 방법:</strong> <a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a>를 방문하여 Android 베타 프로그램에 옵트인합니다(아직 옵트인하지 않은 경우).
-
- 그런 다음 옵트아웃하고 다운그레이드 OTA를 수락합니다.
- 옵트아웃하면 기기가 Android 6.0으로 다운그레이드됩니다. 이제 "Developer Options"에서 <strong>Enable OEM unlock</strong>을 선택할 수 있을 것입니다.
-
- 기기를 다운그레이드하면 개인 데이터가 삭제되지만, 부트로더의 잠금을 해제하는 경우에도 이 데이터가 삭제됩니다.
-
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>작업 보안 인증 질문
-    <ul>
-      <li>N으로 마이그레이션한 후나 사용자가 작업 프로필을 생성한 후에, 사용자가 자신의 패턴, PIN 또는 비밀번호를 변경하거나 작업 인증 질문을 설정할 때까지는 작업 프로필에서 키 저장소에 키를 생성할 수 없습니다.
-
-
-      </li>
-
-      <li>직접 부팅 모드에서 비밀번호 제한을 기기에 적용하면, 기기가 잠겨 있는 경우에도 작업 프로필의 잠금이 해제됩니다.
-
-      이로 인해 작업 프로필이 기기 잠금 화면으로 보호되어야 하는 경우에도 작업 프로필에 액세스할 수 있게 됩니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>상시 접속 VPN
-    <ul>
-      <li>상시 접속 VPN 모드가 설정되었는데도 VPN을 사용할 수 없는 경우, 앱이 일반 네트워크를 통해 연결합니다.
- VPN 연결을 사용할 수 없는 경우 앱은 오프라인이어야 합니다.
-
-      </li>
-
-      <li>상시 접속 모드가 설정된 경우 사용자가 보안 잠금 화면의 잠금을 해제한 후에도, 기기가 직접 부팅 모드로 재부팅된 후 VPN 연결이 설정되지 않습니다.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>패키지 일시 중단
-    <ul>
-      <li>기기 관리자는 예상치 못한 동작(예: "Telephone disabled" 대화 상자가 표시되어 있는데도 전화가 걸림)을 초래할 수 있는 중대한 시스템 패키지를 일시 중단시킬 수 있습니다.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>기타
-    <ul>
-      <li>{@link android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA}가 true로 설정된 경우, 사용자가 SD 카드와 같은 물리적 미디어를 삽입하면 Settings 앱이 실행 시에 작동을 멈춥니다.
-
-
-      </li>
-
-      <li>작업 프로필의 첫 번째 체크인은 완료되는 데 몇 분 정도 걸립니다.
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4 id="vulkan">Vulkan</h4>
-
-<ul>
-   <li>Nexus 5X/6P</li>
-   <ul>
-      <li>바인딩 번호와 0이 아닌 첫 번째 바인딩 번호 사이에 격차가 있는 경우 {@code vkCreateGraphicsPipeline()}이 실패합니다.
-</li>
-      <li>투영된 텍스처 좌표에서 Vulkan이 잘못된 샘플링 동작을 보입니다.</li>
-      <li>multithreadCmdBuffer 샘플에서 N-DP2 드라이버와 함께 실행되는 경우 {@code vkCmdClearColorImage()}가 작동을 중단합니다.
-</li>
-      <li>{@code vkGetPhysicalDeviceFormatProperties()}의 반환 값은 결과로 0 값을 취하는 {@code VkFormatProperties::linearTilingFeatures}의 값을 설정하지 않습니다.
-
-</li>
-      <li>Vulkan 부동 소수점 프레임 버퍼 첨부 파일이 올바르게 처리되지 않습니다.</li>
-    </ul>
-   <li>Nexus Player</li>
-   <ul>
-      <li>SPIR-V 셰이더가 드라이버 어설션을 트리거할 수 있습니다.</li>
-      <li>일부 파이프라인 구성에서는 {@code vkCreateGraphicsPipeline()}이 작동을 중단할 수 있습니다.
-</li>
-  </ul>
-</ul>
-
-<h4>기기별 문제</h4>
-
-<dl>
-  <dt>
-    <strong>Android One</strong>
-  </dt>
-
-  <dd>
-    기기가 슬롯 1에서 슬롯 2 SIM으로 전환된 경우 데이터 연결이 실패합니다.
-  </dd>
-
-  <dt>
-    <strong>Pixel C</strong>
-  </dt>
-
-  <dd>
-    음성 검색 "Always On" 옵션을 전환할 수 없습니다.
-  </dd>
-
-  <dt>
-    <strong>Nexus 6</strong>
-  </dt>
-
-  <dd>
-    HDR+ 사진을 제외하고, 세로 방향의 카메라 사진이 손상됩니다.
-
-  </dd>
-
-  <dt>
-    <strong>Nexus Player</strong>
-  </dt>
-
-  <dd>
-    Nexus Player에서 Netflix HD 콘텐츠의 재생이 실패할 수 있습니다.
-  </dd>
-
-  <dd>
-    동적 비디오 해상도 변경에 의존하는 모든 애플리케이션이 Nexus Player에서 실패할 수 있습니다.
-
-  </dd>
-
-  <dd>
-    VP9 비디오 코덱을 사용하는 모든 애플리케이션이 Nexus Player에서 실패할 수 있습니다.
-  </dd>
-</dl>
-
-<!-- DP 1 release notes archive -->
-
-<h2 id="dp1">Developer Preview 1</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>날짜: 2016년 3월<br>
-        빌드: NPC56P, NPC56R, 업데이트됨: NPC56W, NPC56X<br>
-        에뮬레이터 지원: x86 및 ARM(32비트/64비트)<br>
-        Google Play 서비스: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp1-general">일반 권고 사항</h3>
-
-<p>
-  이 Developer Preview 릴리스는 앱 개발자 전용이며, 호환성 테스트 및 조기 개발 용도로만 사용하도록 설계되었습니다.
- 이 릴리스에 대한
-  다음과 같은 일반적인 참고 사항을 숙지하시기 바랍니다.
-</p>
-<ul>
-  <li>이 릴리스의 경우 모든 기기에서 다양한 안정성 및 성능 문제가 있으므로 <em>전화 또는 태블릿에서 일상적으로 사용하는 데 적합하지 않으며</em>, 특히 개발자가 아닌 일반 사용자가 사용하기에 적합치 않습니다.
-
-
-  </li>
-
-  <li>시스템 및 앱 성능이 <strong>주기적으로 느려지고 저하</strong>되는 것으로 확인되었으며, 기기가 가끔씩 응답을 멈출 수 있습니다.
- 이러한 문제는 장기 사용 시 더 심해질 수 있습니다.
-
-  </li>
-
-  <li>이 릴리스에서 화면을 켜고 끄는 과정에서 배터리 수명이 감소할 수 있습니다.
-
-  </li>
-
-  <li>일부 앱의 경우 Developer Preview 1에서 정상적으로 작동하지 않을 수 있습니다.
-여기에는 Google 앱뿐만 아니라 다른 앱도 포함됩니다.
-  </li>
-
-  <li>이 조기 빌드는 CTS(Compatibility Test Suite) 승인을 받지 않았습니다. CTS 승인을 받은 빌드를 사용하는 앱은 작동하지 않습니다(예: Android Pay).
-
-  </li>
-
-  <li>이 프리뷰 릴리스에서는 Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player 및 Pixel C 뿐만 아니라 General Mobile 4G(Android One) 기기를 지원합니다.
-
-
-  </li>
-</ul>
-
-<h3 id="dp1-platform">플랫폼 문제</h3>
-
-<h4>성능 및 배터리</h4>
-
-<ul>
-  <li>시스템 및 앱 성능이 <strong>주기적으로 느려지고 저하</strong>되는 것으로 확인되었으며, 기기가 가끔씩 응답을 멈출 수 있습니다.
- 이러한 문제는 장기 사용 시 더 심해질 수 있습니다.
-
-  </li>
-
-  <li>이 릴리스에서 화면을 켜고 끄는 과정에서 배터리 수명이 감소할 수 있습니다.
-
-  </li>
-</ul>
-<h4 id="dialer">다이얼러</h4>
-
-<ul>
-  <li>Dialer 앱이 직접 부팅을 지원하지 않습니다. 이 문제는 N Developer Preview에서 나중에 해결될 것입니다.
-
-  </li>
-
-  <li>음성사서함 재생이 작동하지 않습니다.
-  </li>
-</ul>
-
-<h4>마이크</h4>
-
-<ul>
-   <li>앱 및 재부팅에 걸쳐 시스템이 마이크 음소거 상태를 잘못 유지할 수 있습니다. 앱에서 마이크를 음소거하고 그 상태가 유지되는 경우, 마이크 음소거 컨트롤이 있는 앱을 열고 마이크의 음소거를 해제하세요.</li>
-</ul>
-
-<h4 id="ui">시스템 UI</h4>
-
-<ul>
-  <li>시스템 UI에서 새로운 문자열이나 수정된 일부 문자열이 모든 언어로 번역되어 있지 않습니다.
-
-  </li>
-
-  <li>Overview UI는 여전히 개발 중에 있으므로 변경될 수 있습니다. 예를 들어, 사용자가 앱 사이를 전환할 때 나타나는 타이머를 저희가 삭제할 계획입니다.
-
-
-  </li>
-
-  <li>설정 컨트롤 및 토글이 느리거나 응답이 없는 것으로 나타날 수 있습니다.
-  </li>
-
-  <li>알림의 시각적 디자인이 변경될 수 있습니다.
-  </li>
-
-  <li>Gmail 앱에서, 알림 번들에 포함된 이메일의 직접 아카이빙 기능이 제대로 작동하지 않습니다.
-
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>작업 보안 인증 질문
-    <ul>
-      <li>N으로 마이그레이션한 후나 사용자가 작업 프로필을 생성한 후에, 사용자가 자신의 패턴, PIN 또는 비밀번호를 변경하거나 작업 인증 질문을 설정할 때까지는 작업 프로필에서 키 저장소에 키를 생성할 수 없습니다.
-
-
-      </li>
-
-      <li>직접 부팅 모드에서 비밀번호 제한을 기기에 적용하면, 기기가 잠겨 있는 경우에도 작업 프로필의 잠금이 해제됩니다.
-
-      이로 인해 작업 프로필이 기기 잠금 화면으로 보호되어야 하는 경우에도 작업 프로필에 액세스할 수 있게 됩니다.
-
-      </li>
-
-      <li>사용자가 잘못된 비밀번호와 PIN을 입력하면, 시스템이 정보 메시지를 표시하지 않고 그 대신 입력 필드의 내용을 지웁니다.
-
- 이 문제는 패턴 또는 지문 입력에는 영향을 주지 않습니다.
-      </li>
-
-      <li>태블릿에서 작업 인증 질문에 표시되는 배경이 비정상적으로 작습니다.
-
-      </li>
-
-      <li>N Developer Preview에 번들로 제공되는 <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">Google Apps Device Policy</a>의 버전은 아직 작업 프로필 보안 인증 질문 기능을 지원하지 않습니다.
-
-
-        개발자는 그 대신 <a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a>를 사용하여 이 기능을 테스트해야 합니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>상시 접속 VPN
-    <ul>
-      <li>상시 접속 VPN 모드가 설정되었는데 VPN을 사용할 수 없는 경우, 상시 접속 정책에 대한 예외로 지정되지 않은 앱은 일반 네트워크를 통해 연결됩니다.
-
- 상시 접속 VPN 정책에 대한 예외로 지정되지 않은 한, VPN 연결을 사용할 수 없는 경우 앱은 오프라인이어야 합니다.
-
-        <ul>
-          <li>상시 접속 모드가 설정된 경우 사용자가 보안 잠금 화면의 잠금을 해제한 후에도, 기기가 직접 부팅 모드로 재부팅된 후 VPN 연결이 설정되지 않습니다.
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>향상된 연락처
-    <ul>
-      <li>블루투스 PBAP/MAP 기기가 업무용 연락처에 대해 발신번호를 표시하지 않습니다.
- Preview의 차기 릴리스에서 이 문제를 해결합니다.
-      </li>
-    </ul>
-  </li>
-
-  <li>작업 모드
-    <ul>
-      <li>Google Now 런처가 작업 모드의 켜짐 또는 꺼짐 여부를 표시하지 않습니다.
- 이 런처는 또한 앱 일시 중단 상태도 표시하지 않습니다.
-      </li>
-
-      <li>사용자가 작업 모드를 껏다가 켠 후, 시스템이 더 이상 작업 프로필 앱 위젯(예: 캘린더)을 표시하지 않습니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>패키지 일시 중단
-  </li>
-
-  <li>기기 관리자는 예상치 못한 동작(예: "Telephone disabled" 대화 상자가 표시되어 있는데도 전화가 걸림)을 초래할 수 있는 중대한 시스템 패키지를 일시 중단시킬 수 있습니다.
-
-
-  </li>
-
-  <li>기타
-    <ul>
-      <li>{@link android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA}가 true로 설정된 경우, 사용자가 SD 카드와 같은 물리적 미디어를 삽입하면 Settings 앱이 실행 시에 작동을 멈춥니다.
-
-
-      </li>
-
-      <li>사용자가 앱을 제거한 후 다시 설치하면 {@code DPM.setPackagesSuspended} 상태가 유지되지 않습니다.
- 제거/재설치에 후 앱이 일시 중단 상태를 유지해야 하거나, 일시 중단된 앱이 제거가 불가능해야 합니다.
-
-
-      </li>
-
-      <li>작업 프로필의 첫 번째 체크인은 완료되는 데 몇 분 정도 걸립니다.
- 이로 인해 기기가 Play EMM API에서 보일 때까지 보통 때보다 더 오래 걸릴 수 있습니다.
-
-      </li>
-
-      <li>작업 프로필 앱으로부터 전송되는 알림은 개인 프로필에 설치된 알림 수신자에게는 표시되지 않습니다.
- 따라서 시스템에서 알림이 예상대로 표시되지 않습니다.
-
-      </li>
-
-    </ul>
-  </li>
-</ul>
-
-<h4 >키보드</h4>
-
-<ul>
-  <li>키보드 및 Android 기기 간의 블루투스 페어링이 불안정할 수 있습니다.
-  </li>
-</ul>
-
-<h4 >비디오</h4>
-
-<ul>
-<li>비디오 재생이 지연되고 끊김 현상이 나타날 수 있습니다.</li>
-</ul>
-
-<h4>Wi-Fi</h4>
-
-<ul>
-  <li>API 특수 사례 동작을 변경시킬 수도 있는 일부 리팩터링이 Wi-Fi에 발생했습니다.
- 특히, 특정 네트워크에 연결하려고 시도하는 애플리케이션이나 네트워크에 재연결하려고 시도하는 애플리케이션은 테스트를 다시 거쳐야 합니다.
-
-  </li>
-
-  <li>레거시 DHCP 클라이언트가 플랫폼에서 제거되었습니다. 플랫폼이 지원하는 유일한 DHCP 클라이언트는 M에 추가된 DHCP 클라이언트뿐입니다.
-
-  </li>
-</ul>
-
-<h4>직접 부팅</h4>
-
-<ul>
-  <li>최초 잠금 해제가 수행될 때까지는 NFC가 작동하지 않습니다.
-    <ul>
-      <li>블루투스가 활성화된 전화가 재시작될 때, 블루투스가 자동으로 켜지지 않습니다.
- 블루투스를 수동으로 다시 활성화해야 합니다.
-      </li>
-
-      <li>어떤 경우에는, 전화 및 메시지가 온 경우 기본 벨소리가 울리지 않을 수 있습니다.
- 이 동작은 차기 N Preview 릴리스에서 수정되었습니다. 단, 한 가지 예외가 있으며 이에 대한 내용과 해결 방법은 다음과 같습니다.
-
-      </li>
-
-      <li>직접 부팅 모드로 설정된 이후 최소 한 번 이상 부팅되었지만 완전히 초기화되지 않은 기기에서는 기본 알림 벨소리가 울리지 않습니다.
-
- 사용자가 Settings에서 벨소리를 수동으로 선택하여 이 문제를 해결할 수 있습니다.
-
-      </li>
-
-      <li>N Developer Preview 빌드가 실행되는 기기에서는 기본적으로 직접 부팅이 활성화되지 않습니다.
- 테스트 및 개발에 직접 부팅을 활성화하려면 Developer Options로 이동하고 Convert to File Encryption을 탭하세요.
-
-      이 Developer Preview에서는 파일 기반 암호화를 위해 기기를 다시 파티셔닝하고 다시 포맷하려면 공장 초기화를 수행해야 합니다.
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>PIP for Android TV</h4>
-
-<ul>
-  <li>Recents UI에서의 PIP 통합은 완료되지 않았으며, 변경될 수 있습니다.
-
-    <ul>
-      <li>PIP 창의 애니메이션이 매끄럽지 않습니다. 향후 프리뷰 릴리스에서 이 문제가 개선될 것입니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li style="list-style: none">향후 프리뷰 릴리스에서 PIP의 시각적 디자인과 레이아웃 맞춤이 개선될 것입니다.
-
-  </li>
-</ul>
-
-<h4>버그 보고서</h4>
-
-<ul>
-  <li>버그 보고서가 항상 성공적으로 완료되는 것은 아닙니다. 그 해결 방법으로, 내부 저장소에 있는 버그 보고서 문서 제공자를 통해 버그 보고서에 액세스할 수 있는 경우도 있습니다.
-
-
-  </li>
-</ul>
-
-<h4>분할 화면 다중 창</h4>
-
-<ul>
-  <li>분할 화면 모드로 전환하면 앱이 작동을 중단하고 예기치 않은 UI 동작이 발생할 수 있습니다.
- 이는 앱 개발자가 수정해야 하는 앱 문제입니다.
-
-  </li>
-
-  <li>앱이 N 이전 버전의 Android 플랫폼을 대상으로 하는 경우, 이 앱이 분할 화면에서 작동하지 않을 수 있으며, 알림 메시지가 여러 번 나타날 수 있습니다.
-
-  </li>
-
-  <li>방향이 고정된 상태로 앱을 사용하는 중에 Overview 버튼을 길게 누르면 예기치 않은 앱 동작이 발생할 수 있습니다.
-
-  </li>
-
-  <li>크기를 조정하는 중에 앱이 깜박일 수 있습니다.
-  </li>
-
-  <li>애니메이션은 아직 최종 버전이 아닙니다.
-  </li>
-</ul>
-
-<h4>입력 방법</h4>
-
-<ul>
-  <li><b>Use system language</b>가 설정된 경우 예기치 않게 Google 키보드가 일반 Google 키보드로 다시 돌아가지만, 시스템 언어 기본 설정에 선택된 언어를 Google 키보드가 지원하지 않습니다.
-
- Google 키보드는 미국식 영어로 돌아가야 합니다.
-
-    <p>
-      Google 키보드에서 지원하는 언어를 최소 하나 이상 추가하여 이 문제를 해결할 수 있습니다.
-
-    </p>
-  </li>
-</ul>
-
-<h4>접근성</h4>
-
-<ul>
-  <li>알림, Quick Settings 타일 및 다중 창 표시를 비롯한 여러 기능에 대한 문제가 음성 안내 지원(TalkBack)에서 발생합니다. 이러한 문제로 인해 시스템 작동이 중단되거나 음성 안내 지원에서 음성 피드백이 제공되지 않을 수 있습니다.
-
- 향후 프리뷰 릴리스에서 이러한 문제가 해결될 것입니다.
-
-  </li>
-</ul>
-
-<h3 id="dp1-device-sp">기기별 참고 사항 및 문제</h3>
-
-<h4>Nexus Player</h4>
-<ul>
-  <li>이 프리뷰 릴리스에서는 비디오 재생, 앱 호환성 및 안정성 문제가 Nexus Player에 있을 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>Pixel C</h4>
-<ul>
-<li>다중 창 크기를 조정하면 작동이 중단될 수 있습니다.</li>
-</ul>
-
-<h4>Nexus 9</h4>
-<ul>
-<li>Android 베타 프로그램을 통해 OTA(Over-The-Air) 업데이트를 받은 후에 Nexus 9 기기가 시작되지 않을 수 있습니다.
- 이 문제로부터 복구하기 위해 OTA 이미지를 수동으로 설치해 보실 수 있습니다.
- 자세한 내용은 <a href="{@docRoot}preview/download-ota.html">기기 OTA 이미지 적용</a>을 참조하세요.
-
-</li>
-</ul>
-
diff --git a/docs/html-intl/intl/ko/preview/features/direct-boot.jd b/docs/html-intl/intl/ko/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/ko/preview/features/direct-boot.jd
rename to docs/html-intl/intl/ko/training/articles/direct-boot.jd
index 2674481..e58a4f9 100644
--- a/docs/html-intl/intl/ko/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ko/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>이 문서의 내용</h2>
   <ol>
     <li><a href="#run">직접 부팅 시 실행하기 위한 액세스 요청</a></li>
diff --git a/docs/html-intl/intl/ko/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ko/training/articles/scoped-directory-access.jd
similarity index 92%
rename from docs/html-intl/intl/ko/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/ko/training/articles/scoped-directory-access.jd
index 2fe02b1..f2ce650 100644
--- a/docs/html-intl/intl/ko/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/ko/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>이 문서의 내용</h2>
   <ol>
     <li><a href="#accessing">외부 저장소 디렉터리 액세스</a></li>
@@ -71,8 +71,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>그림 1.</strong> Pictures 디렉터리에
 액세스를 요청하는 애플리케이션.</p>
 
@@ -138,8 +138,8 @@
 사용자 환경을 저해하는 결과를 낳습니다. 사용자가 요청을 거부하는데 앱이 다시 액세스를
 요청하면, UI에 <b>Don't ask again</b> 체크박스가 표시됩니다.</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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-dont-ask_2x.png 2x" />
 <p class="img-caption"><strong>그림 1.</strong> 이동식 미디어에 대해
 다시 액세스 요청을 하는 애플리케이션.</p>
 
diff --git a/docs/html-intl/intl/ko/preview/features/security-config.jd b/docs/html-intl/intl/ko/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/ko/preview/features/security-config.jd
rename to docs/html-intl/intl/ko/training/articles/security-config.jd
index 7e3f951..414c139 100644
--- a/docs/html-intl/intl/ko/preview/features/security-config.jd
+++ b/docs/html-intl/intl/ko/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>이 문서의 내용</h2>
 <ol>
diff --git a/docs/html-intl/intl/ko/preview/features/data-saver.jd b/docs/html-intl/intl/ko/training/basics/network-ops/data-saver.jd
similarity index 99%
rename from docs/html-intl/intl/ko/preview/features/data-saver.jd
rename to docs/html-intl/intl/ko/training/basics/network-ops/data-saver.jd
index a5e4741..3c22b5e 100644
--- a/docs/html-intl/intl/ko/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/ko/training/basics/network-ops/data-saver.jd
@@ -4,8 +4,8 @@
 page.image=images/cards/card-nyc_2x.jpg
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>
       이 문서의 내용
     </h2>
@@ -231,4 +231,4 @@
     지정된 패키지 UID를 허용 목록에서 제거하여, Data Saver가 활성화된 동안 백그라운드 데이터 통신 연결을
 차단합니다.
   </dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html-intl/intl/ko/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ko/training/tv/playback/picture-in-picture.jd
similarity index 97%
rename from docs/html-intl/intl/ko/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/ko/training/tv/playback/picture-in-picture.jd
index bc6ec62..96129ce 100644
--- a/docs/html-intl/intl/ko/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/ko/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>이 문서의 내용</h2>
 <ol>
@@ -59,7 +59,7 @@
 메인 화면에서 재생되기 시작하면 PIP 창이
 자동으로 닫힙니다. 사용자가 Recents를 통해서 PIP 창을 닫을 수도 있습니다.</p>
 
-<img src="{@docRoot}preview/images/pip-active.png" />
+<img src="{@docRoot}images/android-7.0/pip-active.png" />
 <p class="img-caption"><strong>그림 1.</strong> 사용자가 메인 화면에서 콘텐츠를 탐색하는 동안
 화면 모서리에 표시되는 PIP 동영상.
 </p>
@@ -116,7 +116,7 @@
 <p>미디어 컨트롤 막대에 PIP 버튼을 추가하면
 사용자가 동영상 재생을 제어하면서 PIP 모드로 쉽게 전환할 수 있습니다.</p>
 
-<img src="{@docRoot}preview/images/pip-button.png" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>그림 1.</strong> 미디어 컨트롤 막대의 PIP
 버튼.</p>
 
diff --git a/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ko/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/ko/training/tv/tif/content-recording.jd
index fa557bc..ed8b6e0 100644
--- a/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/ko/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>이 문서의 내용</h2>
   <ol>
     <li><a href="#supporting">녹화 지원 나타내기</a></li>
diff --git a/docs/html-intl/intl/pt-br/preview/guide.jd b/docs/html-intl/intl/pt-br/about/versions/marshmallow/android-6.0-testing.jd
similarity index 98%
rename from docs/html-intl/intl/pt-br/preview/guide.jd
rename to docs/html-intl/intl/pt-br/about/versions/marshmallow/android-6.0-testing.jd
index b33369e..c00fd21 100644
--- a/docs/html-intl/intl/pt-br/preview/guide.jd
+++ b/docs/html-intl/intl/pt-br/about/versions/marshmallow/android-6.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Neste documento</h2>
       <ol>
         <li><a href="#runtime-permissions">Teste de permissões</a></li>
diff --git a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-changes.jd
similarity index 97%
rename from docs/html-intl/intl/pt-br/preview/behavior-changes.jd
rename to docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-changes.jd
index b2f07d9..18a08f4 100644
--- a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Neste documento</h2>
 
@@ -77,7 +77,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -96,7 +96,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -282,10 +282,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/pt-br/preview/samples.jd b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-samples.jd
similarity index 77%
rename from docs/html-intl/intl/pt-br/preview/samples.jd
rename to docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-samples.jd
index 16515e4..7ed583f 100644
--- a/docs/html-intl/intl/pt-br/preview/samples.jd
+++ b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -74,7 +74,7 @@
 
 <div style="clear: both;"></div>
 <h3 id="sda">Acesso a diretórios com escopo</h3>
-<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
 Obter no GitHub</a>
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/pt-br/preview/guide.jd b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-testing.jd
similarity index 98%
copy from docs/html-intl/intl/pt-br/preview/guide.jd
copy to docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-testing.jd
index b33369e..c00fd21 100644
--- a/docs/html-intl/intl/pt-br/preview/guide.jd
+++ b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Neste documento</h2>
       <ol>
         <li><a href="#runtime-permissions">Teste de permissões</a></li>
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0.jd
similarity index 97%
rename from docs/html-intl/intl/pt-br/preview/api-overview.jd
rename to docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0.jd
index d638e71..e3d58cd 100644
--- a/docs/html-intl/intl/pt-br/preview/api-overview.jd
+++ b/docs/html-intl/intl/pt-br/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Principais recursos para desenvolvedores</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -78,7 +78,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/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>
@@ -142,15 +142,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -277,7 +277,7 @@
 <h2 id="data_saver">Economia de dados</h2>
 
 <div class="col-5of12" style="margin-right:1.5em;">
-<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>Figura 4.</strong> Economia de dados em Settings.
@@ -357,7 +357,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/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.
diff --git a/docs/html-intl/intl/pt-br/preview/index.jd b/docs/html-intl/intl/pt-br/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/pt-br/preview/index.jd
rename to docs/html-intl/intl/pt-br/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/pt-br/design/patterns/notifications.jd b/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
deleted file mode 100644
index 5560e85..0000000
--- a/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
+++ /dev/null
@@ -1,872 +0,0 @@
-page.title=Notificações
-page.tags="notifications","design","L"
-@jd:body
-
- <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>Documentos do desenvolvedor</h3>
-    <p>Notificação ao usuário</p>
-  </div>
-</a>
-
-<a class="notice-designers" href="notifications_k.html">
-  <div>
-    <h3>Notificações no Android 4.4 e em anteriores</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>Vídeo</h3>
-    <p>DevBytes: Notificações na pré-visualização do desenvolvedor do Android L</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>O sistema de notificações permite que os usuários se mantenham informados sobre eventos relevantes e
-imediatos
-no aplicativo, como novas mensagens de bate-papo de um amigo ou um evento de calendário.
-Pense nas notificações como um canal de notícias que alerta o usuário sobre eventos
-importantes à
-medida que acontecem ou sobre um registro que grava eventos enquanto o usuário não está prestando
-atenção &mdash; e que é sincronizado conforme apropriado em todos os dispositivos Android dele.</p>
-
-<h4 id="New"><strong>Novo no Android 5.0</strong></h4>
-
-<p>No Android 5.0, as notificações recebem atualizações importantes: em termos estruturais, visuais e
-funcionais:</p>
-
-<ul>
-  <li>As notificações passaram por mudanças visuais consistentes com o novo
-tema do Material Design.</li>
-  <li> As notificações agora estão disponíveis na tela de bloqueio do dispositivo, enquanto que
-o conteúdo sensível ainda pode
-ficar oculto atrás dela.</li>
-  <li>Notificações de alta prioridade recebidas enquanto o dispositivo está em uso agora usam um novo formato, chamado de
-notificações heads-up.</li>
-  <li>Notificações sincronizadas na nuvem: descartar uma notificação em um dos
-dispositivos Android a descarta
-também nos outros.</li>
-</ul>
-
-<p class="note"><strong>Observação:</strong> o projeto de notificação nesta versão do
-Android é uma mudança
-significativa em relação às versões anteriores. Para obter informações sobre o projeto de notificação em versões
-anteriores, consulte <a href="./notifications_k.html">Notificações no Android 4.4 ou em anteriores</a>.</p>
-
-<h2 id="Anatomy">Anatomia de uma notificação</h2>
-
-<p>Esta seção aborda as partes básicas de uma notificação e como elas
-podem aparecer em diferentes tipos de dispositivos.</p>
-
-<h3 id="BaseLayout">Layout básico</h3>
-
-<p>No mínimo, todas as notificações consistem em um layout básico, incluindo:</p>
-
-<ul>
-  <li> O <strong>ícone</strong> da notificação. O ícone simboliza o
-aplicativo de origem. Ele também
-  pode indicar o tipo de notificação, caso o aplicativo gere mais de um
-tipo.</li>
-  <li> Um <strong>título</strong> da notificação e
-<strong>texto</strong> adicional.</li>
-  <li> Uma <strong>marcação de data e hora</strong>.</li>
-</ul>
-
-<p>Notificações criadas com {@link android.app.Notification.Builder Notification.Builder}
-para versões anteriores da plataforma têm a mesma aparência e o mesmo funcionamento no Android
-5.0, com apenas mudanças menores de estilo que o sistema
-entrega a você. Para obter mais informações sobre notificações em versões
-anteriores do Android, consulte
-<a href="./notifications_k.html">Notificações no Android 4.4 ou em anteriores</a>.</p></p>
-
-
-    <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      Layout básico de uma notificação em dispositivo portátil (à esquerda) e a mesma notificação em Wear (à direita),
-com uma foto do usuário e um ícone de notificação
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">Layouts expandidos</h3>
-
-
-<p>Você pode escolher o nível de detalhe que as notificações de seu aplicativo
-devem fornecer. Elas podem mostrar as primeiras
-linhas de uma mensagem ou exibir uma visualização de imagem maior. As informações
-adicionais fornecem ao usuário mais
-contexto e &mdash; em alguns casos &mdash; podem permitir que o usuário leia uma mensagem
-em sua totalidade. O usuário pode
-pinçar para aproximar ou afastar a vista ou realizar deslizamento de um dedo para alternar entre os layouts
-compacto e expandido.
- Para notificações de um evento, o Android fornece três modelos de layout
-expandido (texto, caixa de entrada e
- imagem) para usar em seu aplicativo. As imagens a seguir mostram como
-se parecem notificações de um evento em
- dispositivos portáteis (à esquerda) e usados junto ao corpo (à direita).</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">Ações</h3>
-
-<p>O Android tem suporte para ações opcionais que são exibidas na parte inferior
-da notificação.
-Com ações, os usuários podem tratar as tarefas mais comuns para
-determinada notificação de dentro da sombra da notificação sem precisar abrir o
-aplicativo de origem.
-Isso acelera a interação e, em conjunto com deslizar-para-descartar, ajuda os usuários a
-se concentrarem em notificações que sejam importantes.</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" />
-
-
-
-<p style="clear:both">Tenha cuidado com o número de ações que inclui em uma
-notificação. Quanto mais
-ações incluir, maior será a complexidade cognitiva criada. Limite-se
-ao menor número possível
-de ações, incluindo apenas as ações efetivamente mais importantes e
-significativas.</p>
-
-<p>Boas candidatas a ações em notificações são ações que:</p>
-
-<ul>
-  <li> Sejam essenciais, frequentes e típicas para o tipo de conteúdo
-exibido
-  <li> Permitam que o usuário realize tarefas rapidamente
-</ul>
-
-<p>Evite ações que sejam:</p>
-
-<ul>
-  <li> Ambíguas
-  <li> Idênticas à ação padrão da notificação (como "Ler" ou
-"Abrir")
-</ul>
-
-
-
-<p>Você pode especificar no máximo três ações, cada uma consistindo em um ícone
-e um nome de ação.
- Adicionar ações a um layout básico simples torna a notificação expansível,
-mesmo se a
-notificação não tiver um layout expandido. Como as ações são exibidas apenas para notificações
-expandidas
- e que ficam de outra forma ocultas, certifique-se de que qualquer ação que um
-usuário possa invocar de dentro de uma
- notificação esteja disponível também dentro do aplicativo
-associado.</p>
-
-<h2 style="clear:left">Notificação heads-up</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" />
-  <p class="img-caption">
-    Exemplo de uma notificação heads-up (chamada telefônica recebida, alta prioridade)
-que aparece sobre um
-aplicativo imersivo
-  </p>
-</div>
-
-<p>Quando uma notificação de alta prioridade chega (veja à direita), ela é apresentada
-aos usuários por
-um período curto com um layout expandido mostrando possíveis ações.</p>
-<p> Depois desse período, a notificação recua para a sombra
-de notificação. Se a <a href="#correctly_set_and_manage_notification_priority">prioridade</a> de uma notificação for
-marcada como Alta, Máxima ou tela cheia, ela receberá uma notificação heads-up.</p>
-
-<p><b>Bons exemplos de notificações heads-up</b></p>
-
-<ul>
-  <li> Chamada telefônica recebida durante o uso do dispositivo</li>
-  <li> Alarme durante o uso do dispositivo</li>
-  <li> Nova mensagem SMS</li>
-  <li> Bateria fraca</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">Diretrizes</h2>
-
-
-<h3 id="MakeItPersonal">Torne-a pessoal</h3>
-
-<p>Para notificações de itens enviados por outra pessoa (como uma mensagem ou
-atualização de status), inclua a imagem da pessoa usando
-{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Anexe também informações sobre
-a pessoa nos metadados da notificação (consulte {@link android.app.Notification#EXTRA_PEOPLE}).</p>
-
-<p>O ícone principal de sua notificação ainda é mostrado, portanto, o usuário pode associá-lo
-ao ícone
-visível na barra de status.</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" />
-<p style="margin-top:10px" class="img-caption">
-  Notificação que mostra a pessoa que a ativou e o conteúdo enviado.
-</p>
-
-
-<h3 id="navigate_to_the_right_place">Navegação para o lugar certo</h3>
-
-<p>Quando o usuário toca no corpo de uma notificação (fora dos botões
-de ação), abra o aplicativo
-no lugar em que o usuário possa visualizar e agir sobre os dados referenciados na
-notificação. Na maioria dos casos, será a exibição detalhada de um único item de dado, como uma mensagem,
-mas também poderá ser uma
-vista resumida se a notificação estiver empilhada. Se o aplicativo
-levar o usuário a qualquer lugar abaixo do nível superior do aplicativo, insira a navegação na pilha de retorno do aplicativo para que
-o usuário possa pressionar o botão Voltar do sistema para voltar ao nível superior. Para obter mais informações, consulte
-<em>Navegação para o seu aplicativo pelos widgets de página inicial e notificações</em> no padrão de projeto de <a href="{@docRoot}design/patterns/navigation.html#into-your-app">Navegação</a>.
-</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">Definição e gerenciamento
-corretos da prioridade das
-notificações</h3>
-
-<p>O Android tem suporte para um sinalizador de prioridade para notificações. Esse sinalizador permite
-influenciar o local em que a notificação é exibida em relação a outras notificações e
-ajuda a garantir
-que os usuários sempre vejam primeiro as notificações mais importantes. Você pode escolher entre
-os seguintes
-níveis de prioridade ao publicar uma notificação:</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>Prioridade</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>Uso</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>Use para notificações críticas e urgentes que alertam o usuário sobre uma condição
-que depende
-do tempo ou que precisa ser resolvida antes que o usuário possa continuar
-com uma determinada tarefa.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>Use principalmente para comunicações importantes, como uma mensagem ou
-eventos de bate-papo com conteúdo particularmente interessante para o usuário.
-Notificações de alta prioridade acionam a exibição de uma notificação heads-up.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>Use para todas as notificações que não recaiam em nenhuma das outras prioridades descritas aqui.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>Use para notificações sobre as quais deseja que o usuário seja informado, mas
-que sejam menos urgentes. Notificações de baixa prioridade tendem a ser exibidas na parte inferior da lista,
-o que as torna uma boa
-opção para coisas como atualizações públicas ou sociais não direcionadas: o usuário pediu para
-ser notificado sobre
-elas, mas essas notificações nunca devem ter precedência sobre comunicações
-urgentes ou diretas.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>Use para informações contextuais ou de histórico, como informações sobre clima ou
-informações contextuais de localização.
-Notificações de prioridade mínima não aparecem na barra de status. O usuário
-as descobre expandindo a sombra da notificação.</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>Como escolher uma prioridade
-adequada
-</strong></h4>
-
-<p><code>DEFAULT</code>, <code>HIGH</code> e <code>MAX</code> são níveis de prioridade de interrupção e arriscam
-interromper a atividade
-do usuário. Para evitar irritar os usuários de seu aplicativo, reserve níveis de prioridade de interrupção para
-notificações que:</p>
-
-<ul>
-  <li> Envolvam outra pessoa</li>
-  <li> Dependam do tempo</li>
-  <li> Possam mudar imediatamente o comportamento do usuário no mundo real</li>
-</ul>
-
-<p>Notificações definidas como <code>LOW</code> e <code>MIN</code> ainda podem
-ser valiosas para o usuário: muitas, se não a maioria, das notificações não precisam demandar a atenção
-imediata do usuário, ou vibrar o pulso do usuário, mas ainda contêm informações que o usuário
-achará valiosas ao decidir procurar
-notificações. Os critérios para notificações de prioridade <code>LOW</code> e <code>MIN</code>
-incluem:</p>
-
-<ul>
-  <li> Não envolver outras pessoas</li>
-  <li> Não depender de tempo</li>
-  <li> Ter conteúdo no qual o usuário pode estar interessado, mas que pode decidir
-verificar no momento em que desejar</li>
-</ul>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" />
-
-
-<h3 style="clear:both" id="set_a_notification_category">Definição de uma categoria
-de notificação</h3>
-
-<p>Se a sua notificação recair em uma das categorias predefinidas (veja
-abaixo), atribua-a
-adequadamente.  Aspectos da IU do sistema, como a sombra da notificação (ou qualquer
-outra escuta
-de notificação), podem usar essas informações para tomar decisões de classificação e filtragem.</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>Chamada recebida (voz ou vídeo) ou solicitação similar de
-comunicação síncrona</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>Mensagem direta recebida (SMS, mensagem instantânea etc.)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>Mensagens assíncronas em lote (e-mail)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>Evento de calendário</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>Promoção ou publicidade</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>Alarme ou cronômetro</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>Andamento de uma operação de execução longa em segundo plano</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>Atualização de rede social ou de compartilhamento</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>Erro em operação de segundo plano ou no status de autenticação</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>Controle de transporte de mídia para reprodução</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>Atualização do sistema ou do status do dispositivo.  Reservado para uso do sistema.</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>Indicação de serviço de segundo plano em execução</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>Uma recomendação específica e oportuna para uma única coisa.  Por exemplo, um aplicativo
-de notícias pode querer
-recomendar uma notícia que acredita que o usuário desejará ler em seguida.</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>Informações contínuas sobre o dispositivo ou o status contextual</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">Resuma as notificações</h3>
-
-<p>Se uma notificação de um certo tipo já estiver pendente quando o aplicativo tentar enviar uma nova
-notificação do mesmo tipo, combine-as em uma única notificação de resumo para o aplicativo. Não
-crie um novo objeto.</p>
-
-<p>Uma notificação de resumo cria uma descrição resumida e permite que o
-usuário entenda quantas notificações
-de um determinado tipo estão pendentes.</p>
-
-<div class="col-6">
-
-<p><strong>O que não fazer</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>O que fazer</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" />
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">Você pode fornecer
-mais detalhes sobre as notificações individuais que compõem um
-resumo usando o layout resumido expandido. Essa abordagem permite que os usuários
-entendam melhor quais
-notificações estão pendentes e decidam se estão interessados o suficiente para lê-las
-em detalhes dentro
-do aplicativo associado.</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" />
-  <p class="img-caption">
-  Notificação expandida e contraída que é um resumo (usando <code>InboxStyle</code>)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">Torne as notificações
-opcionais</h3>
-
-<p>Os usuários devem sempre controlar as notificações. Permita que o usuário
-desative as notificações
-de seu aplicativo ou altere as propriedades de alerta, como som de alerta e
-se a vibração será usada,
-adicionando um item de configuração da notificação nas configurações do aplicativo.</p>
-
-<h3 id="use_distinct_icons">Use ícones distintos</h3>
-<p>Ao olhar para a área de notificação, o usuário deverá ser capaz de discernir
-que tipos de
-notificações estão atualmente pendentes.</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" />
-</div>
-
-  <div><p><strong>O que fazer</strong></p>
-    <p>Verifique os ícones de notificação que os aplicativos do Android já fornecem e crie
-ícones de notificação para o seu
-aplicativo que tenham aparência suficientemente distinta.</p>
-
-    <p><strong>O que fazer</strong></p>
-    <p>Use o <a href="/design/style/iconography.html#notification">estilo de ícone de notificação</a> apropriado
- para ícones pequenos e o
-    <a href="/design/style/iconography.html#action-bar">estilo de ícone de barra
-de ação</a> da luminosidade do Material para os ícones
-    de ação.</p>
-<p ><strong>O que fazer</strong></p>
-<p >Mantenha os ícones visualmente simples, evitando detalhes excessivos que sejam
-difíceis de discernir.</p>
-
-  <div><p><strong>O que não fazer</strong></p>
-    <p>Coloque um alfa adicional (esmaecimento ou redução de intensidade) nos ícones pequenos
-e nos ícones de
-    ação; eles podem ter bordas suavizadas, mas, como o Android usa esses
-ícones como máscaras (ou seja, somente
-    o canal alfa é usado), a imagem normalmente deve ser desenhada com
-opacidade total.</p>
-
-</div>
-<p style="clear:both"><strong>O que não fazer</strong></p>
-
-<p>Use cores para distinguir o seu aplicativo dos outros. Ícones de notificação devem
-somente ser uma imagem com fundo branco sobre transparente.</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">Pisque o LED de notificação
-adequadamente</h3>
-
-<p>Muitos dispositivos Android contêm um LED de notificação, que é usado para manter o
-usuário informado sobre
-eventos enquanto a tela está desligada. Notificações com um nível de prioridade de <code>MAX</code>,
-<code>HIGH</code> ou <code>DEFAULT</code> devem
-fazer com que o LED brilhe, enquanto que os de prioridade mais baixa (<code>LOW</code> e
-<code>MIN</code>) não devem.</p>
-
-<p>O controle do usuário sobre as notificações deve se estender ao LED. Ao usar
-DEFAULT_LIGHTS, o
-LED brilhará na cor branca. Suas notificações não devem usar uma cor
-diferente, a não ser que o
-usuário as tenha explicitamente personalizado.</p>
-
-<h2 id="building_notifications_that_users_care_about">Criação de notificações
-que agradam aos usuários</h2>
-
-<p>Para criar um aplicativo que os usuários amem, é importante projetar as
-notificações cuidadosamente.
-As notificações personificam a voz do seu aplicativo e contribuem para
-a personalidade dele. Notificações indesejadas ou
-irrelevantes podem irritar o usuário ou fazer com que ele reprove a
-quantidade de atenção que o
-aplicativo exige. Portanto, use notificações de forma cuidadosa.</p>
-
-<h3 id="when_to_display_a_notification">Quando exibir uma notificação</h3>
-
-<p>Para criar um aplicativo que as pessoas gostem de usar, é importante
-reconhecer que a atenção e o foco
-do usuário são recursos que devem ser protegidos. Apesar de o sistema de
-notificação do Android ter
-sido projetado para minimizar o impacto das notificações na atenção do usuário,
-ainda é
-importante ter ciência do fato de que as notificações interrompem o
-fluxo de tarefas do usuário.
-Ao planejar as notificações, pergunte-se se elas são importantes o suficiente para
-justificar uma interrupção. Se não tiver certeza, permita que o usuário decida se quer
-uma notificação usando as configurações de notificação do seu aplicativo ou ajuste
-o sinalizador de prioridade das notificações para <code>LOW</code> ou <code>MIN</code> para
-evitar distrair o usuário enquanto ele faz
-alguma outra coisa.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   Exemplos de notificação que depende de tempo
-  </p>
-
-<p>Apesar de aplicativos bem comportados geralmente se manifestarem apenas quando ocorre interação com eles, alguns
-casos justificam que o aplicativo interrompa o usuário com uma notificação não solicitada.</p>
-
-<p>Use notificações principalmente para <strong>eventos que dependam de tempo</strong>, especialmente
- se esses eventos síncronos <strong>envolverem outras pessoas</strong>. Por
-exemplo, um bate-papo recebido
-é uma forma síncrona em tempo real de comunicação: outro usuário
-espera ativamente a resposta. Eventos de calendário são outro exemplo bom de quando usar uma
-notificação e atrair a
-atenção do usuário, pois o evento é iminente e eventos de calendário frequentemente
-envolvem outras pessoas.</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">Quando não exibir
-uma notificação</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" />
-</div>
-
-<p>Em muitos outros casos, notificações não são adequadas:</p>
-
-<ul>
-  <li> Evite notificar o usuário sobre informações que não são especificamente
-direcionadas a ele ou
-que não dependam realmente de tempo. Por exemplo, as atualizações
-assíncronas e não direcionadas
-que fluem por uma rede social geralmente não justificam uma interrupção
-em tempo real. Para os usuários que se importam
-com elas, deixe que decidam recebê-las.</li>
-  <li> Não crie uma notificação se as informações novas relevantes estiverem
-atualmente na tela. Em vez disso,
-use a IU do próprio aplicativo para notificar o usuário das novas informações
-diretamente no contexto.
-  Por exemplo, um aplicativo de bate-papo não deve criar notificações de sistema enquanto o
-usuário estiver conversando ativamente com outro usuário.</li>
-  <li> Não interrompa o usuário para realizar operações técnicas de baixo nível, como salvar
-ou sincronizar informações, nem atualize um aplicativo se o aplicativo ou o sistema puder resolver
-o problema sem envolver o usuário.</li>
-  <li> Não interrompa o usuário para informar um erro se o aplicativo
-puder se recuperar dele por conta própria, sem que o usuário
-tome qualquer ação.</li>
-  <li> Não crie notificações que não tenham conteúdo real de notificação e
-que meramente anunciem o seu
-aplicativo. Uma notificação deve fornecer informações úteis, oportunas e novas e
-não deve ser usada
-meramente para executar um aplicativo.</li>
-  <li> Não crie notificações supérfluas apenas para colocar sua marca na frente
-dos usuários.
-  Tais notificações frustram e provavelmente alienam seu público-alvo. A
-melhor forma de fornecer
-  pequenas quantidades de informações atualizadas e manter o usuário envolvido
-com o seu
-  aplicativo é desenvolver um widget que ele possa colocar na
-tela inicial.</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">Interação com
-notificações</h2>
-
-<p>Notificações são indicadas por ícones na barra de status e podem ser acessadas
-abrindo a
-gaveta de notificações.</p>
-
-<p>Tocar em uma notificação abre o aplicativo associado com o conteúdo
-detalhado que corresponde à notificação.
-Deslizar à esquerda ou à direita em uma notificação a remove da gaveta.</p>
-
-<h3 id="ongoing_notifications">Notificações contínuas</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" />
-      <p class="img-caption">
-    Notificação contínua devido à reprodução de música
-  </p>
-</div>
-<p>Notificações contínuas mantêm os usuários informados sobre um processo em andamento em
-segundo plano.
-Por exemplo, reprodutores de música anunciam a faixa em reprodução no
-sistema de notificação e
-continuam a fazer isso até que o usuário interrompa a reprodução. Notificações contínuas também podem
-mostrar ao usuário
-feedback sobre tarefas mais longas, como o download de um arquivo ou a codificação de um vídeo. Um usuário não pode remover
-manualmente uma notificação contínua da gaveta de notificações.</p>
-
-<h3 id="ongoing_notifications">Reprodução de mídia</h3>
-<p>No Android 5.0, a tela de bloqueio não mostra controles de transporte por causa da classe
-{@link android.media.RemoteControlClient} obsoleta. Mas ela <em>mostra</em> notificações, portanto, a notificação de reprodução
-de cada aplicativo agora é a forma
-principal para que os usuários controlem a reprodução em um estado bloqueado. Esse comportamento dá aos aplicativos mais
-controle sobre quais
-botões exibir e de que forma, ao mesmo tempo em que fornece uma experiência consistente
-para o usuário, com a tela bloqueada ou não.</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">Diálogos
-e avisos</h3>
-
-<p>O seu aplicativo não deve criar uma caixa de diálogo ou um aviso se não estiver
-atualmente na tela. Uma caixa de diálogo ou um aviso
- deve ser exibido somente como uma resposta imediata ao usuário tomando uma ação
-dentro do seu aplicativo.
-Para obter orientação adicional sobre o uso de caixas de diálogo e avisos, consulte
-<a href="/design/patterns/confirming-acknowledging.html">Confirmação e reconhecimento</a>.</p>
-
-<h3>Avaliação e classificação</h3>
-
-<p>Notificações são notícias e, portanto, são essencialmente exibidas
-em ordem cronológica inversa, com
-consideração especial para a
-<a href="#correctly_set_and_manage_notification_priority">prioridade</a> da notificação declarada no aplicativo.</p>
-
-<p>Notificações são uma parte importante da tela de bloqueio e são exibidas proeminentemente
-sempre
-que a tela do dispositivo é exibida. O espaço na tela de bloqueio é restrito, portanto,
-é mais importante
-do que nunca identificar as notificações mais urgentes ou relevantes. Por esse
-motivo, o Android tem um
-algoritmo de classificação mais sofisticado para notificações, levando em conta:</p>
-
-<ul>
-  <li> A marcação de data e hora e a prioridade declarada no aplicativo.</li>
-  <li> Se a notificação incomodou recentemente o usuário com som ou
-vibração (ou seja,
-  se o celular acabou de fazer um ruído e o usuário deseja saber "O que acabou de
-acontecer?", a tela de bloqueio
-  deve responder com um olhar rápido).</li>
-  <li> Qualquer pessoa anexada à notificação usando {@link android.app.Notification#EXTRA_PEOPLE}
-  e, em particular, se é contato especial (com estrelas).</li>
-</ul>
-
-<p>Para aproveitar ao máximo essa classificação, concentre-se na experiência
-do usuário que deseja
-criar, e não em um determinado local na lista.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Notificações do Gmail têm
-prioridade padrão e normalmente
-  são classificadas abaixo de mensagens de um aplicativo de mensagem instantânea, como o Hangouts, mas
-recebem
-  uma promoção temporária quando novas mensagens chegam.
-  </p>
-
-
-<h3>Na tela de bloqueio</h3>
-
-<p>Como as notificações são visíveis na tela de bloqueio, a privacidade do usuário é uma consideração
-especialmente
- importante. Notificações frequentemente contêm informações sensíveis e
-não devem necessariamente estar visíveis
-para qualquer pessoa que ligar a tela do dispositivo.</p>
-
-<ul>
-  <li> Para dispositivos que têm uma tela de bloqueio segura (PIN, padrão ou senha), a interface tem
-partes públicas e privadas. A interface pública pode ser exibida em uma tela de bloqueio segura e,
-portanto, vista por qualquer pessoa. A interface privada é o mundo atrás da tela de bloqueio e
-só é revelada depois que o usuário faz login no dispositivo.</li>
-</ul>
-
-<h3>Controle do usuário sobre as informações exibidas na tela de bloqueio segura</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" />
-      <p class="img-caption">
-    Notificações na tela de bloqueio com conteúdo revelado depois que o usuário desbloqueia o dispositivo.
-  </p>
-</div>
-
-<p>Ao definir uma tela de bloqueio segura, o usuário poderá escolher ocultar
-detalhes sensíveis da tela de bloqueio segura. Nesse caso, a IU do sistema
-considerará o <em>nível de visibilidade</em> da notificação para descobrir o que pode
-ser exibido com segurança.</p>
-<p> Para controlar o nível de visibilidade, chame
-<code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>
-e especifique um destes valores:</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>.
-Exibe o conteúdo inteiro da notificação.
-  Esse é o padrão do sistema se a visibilidade não for especificada.</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>.
-Na tela de bloqueio, exibe informações básicas sobre essa notificação, incluindo o
-ícone e o nome do aplicativo que a publicou. O restante dos detalhes da notificação não é exibido.
-Alguns pontos a ter em mente são:
-  <ul>
-    <li> Se você quer fornecer uma versão pública diferente da sua notificação
-para que o sistema a exiba em uma tela de bloqueio segura, forneça um objeto
-Notificação substituto no campo <code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>.
-
-    <li> Essa configuração dá ao aplicativo uma oportunidade de criar uma versão alternativa do
-conteúdo que ainda é útil, mas não revela informações pessoais. Considere o exemplo de um
-aplicativo de SMS cujas notificações incluem o texto da mensagem SMS, o nome do remetente e o ícone do contato.
-Essa notificação deve ser <code>VISIBILITY_PRIVATE</code>, mas <code>publicVersion</code> ainda pode
-conter informações úteis, como "3 novas mensagens", sem outros detalhes
-de identificação.
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>. Mostra apenas as informações mínimas, excluindo até mesmo
-o ícone da notificação.</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Notificações no
-Android Wear</h2>
-
-<p>Notificações e suas <em>ações</em> são enviadas a dispositivos Wear por padrão.
-Os desenvolvedores podem controlar que notificações são enviadas do
-celular ao relógio
-e vice-versa. Os desenvolvedores também podem controlar quais ações são transmitidas. Se o
-seu aplicativo inclui
-ações que não podem ser executadas com um toque, oculte essas ações
-na sua notificação do Wear
-ou considere colocá-las em um aplicativo do Wear, permitindo que o usuário
-termine a ação
-no relógio.</p>
-
-<h4>Transmissão de notificações e ações</h4>
-
-<p>Um dispositivo conectado, como um celular, pode transmitir notificações para um dispositivo Wear para que as
-notificações sejam exibidas nele. De forma similar, ele pode transmitir ações para que o usuário possa agir
-sobre as notificações diretamente do dispositivo Wear.</p>
-
-<p><strong>Transmitir</strong></p>
-
-<ul>
-  <li> Novas mensagens instantâneas</li>
-  <li> Ações de um toque, como +1, Curtir, Coração</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" />
-
-<p><strong>Não transmitir</strong></p>
-
-<ul>
-  <li> Notificações de podcasts recém-chegados</li>
-  <li> Ações que mapeiem para recursos que não são possíveis no relógio</li>
-</ul>
-
-
-
-<p><h4>Ações exclusivas a definir para Wear</h4></p>
-
-<p>Há algumas ações que só podem ser realizadas em Wear. Elas incluem:</p>
-
-<ul>
-  <li> Listas rápidas de respostas prontas, como "Volto logo"</li>
-  <li> Abrir no celular</li>
-  <li> Uma ação "Comentar" ou "Responder" que abre a tela de entrada de voz</li>
-  <li> Ações que executam aplicativos específicos de Wear</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" />
diff --git a/docs/html-intl/intl/pt-br/preview/j8-jack.jd b/docs/html-intl/intl/pt-br/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/pt-br/preview/j8-jack.jd
rename to docs/html-intl/intl/pt-br/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/pt-br/preview/features/multi-window.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/pt-br/preview/features/multi-window.jd
rename to docs/html-intl/intl/pt-br/guide/topics/ui/multi-window.jd
index 1a48140..26259f6 100644
--- a/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Neste documento</h2>
       <ol>
         <li><a href="#overview">Visão geral</a></li>
@@ -69,8 +69,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/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>
diff --git a/docs/html-intl/intl/pt-br/preview/_book.yaml b/docs/html-intl/intl/pt-br/preview/_book.yaml
deleted file mode 100644
index 8f75c9a..0000000
--- a/docs/html-intl/intl/pt-br/preview/_book.yaml
+++ /dev/null
@@ -1,342 +0,0 @@
-toc:
-- title: Visão geral do programa
-  path: /preview/overview.html
-  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: Suporte e notas da versão
-  path: /preview/support.html
-
-- title: Configuração do Preview
-  path: /preview/setup-sdk.html
-  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: Testar em um dispositivo
-  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: Mudanças de comportamento
-  path: /preview/behavior-changes.html
-  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: Otimizações em segundo plano
-    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: Idioma e localidade
-    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
-  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: Suporte a várias janelas
-    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: Notificações
-    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: Economia de dados
-    path: /preview/features/data-saver.html
-  - title: Gravação para TV
-    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: Configurações de segurança de rede
-    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: Suporte a ICU4J
-    path: /preview/features/icu4j-framework.html
-    path_attributes:
-    - name: es-lang
-      value: APIs de estrutura do Android para ICU4J
-    - 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: Recursos de linguagem do Java 8
-    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: Atualizações no Android for Work
-    path: /preview/features/afw.html
-  - title: Acesso a diretórios com escopo
-    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: Amostras
-  path: /preview/samples.html
-  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: Contrato de licença
-  path: /preview/license.html
-  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-intl/intl/pt-br/preview/download-ota.jd b/docs/html-intl/intl/pt-br/preview/download-ota.jd
deleted file mode 100644
index 3f817ed..0000000
--- a/docs/html-intl/intl/pt-br/preview/download-ota.jd
+++ /dev/null
@@ -1,332 +0,0 @@
-page.title=Aplicação de uma imagem OTA de dispositivo
-
-@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 contratante e a Google em relação ao uso do Preview.
-
-1.2 "Android" refere-se à 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 desenvolver 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 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 em 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 situação regular 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 Preview que a Google fornece podem mudar sem aviso prévio e que as versões futuras do Preview podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do Preview. 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 observações de direitos de propriedade (incluindo observaçõ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 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 para fazê-lo e para os fins limitados pela 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, perturbe, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades ou serviços da Google ou qualquer outro terceiro.
-
-4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) 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 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 terceiro) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis a terceiros, qualquer lei ou norma aplicável e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) de quaisquer violações.
-
-4.7 O Preview está em desenvolvimento e o seu teste e feedback são uma parte importante deste processo. 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 acessível 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 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 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 com base nestes dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos proprietários.
-
-7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos adicionais entre você e o terceiro em questão.
-
-8. Uso de APIs da Google
-
-8.1 APIs da Google
-
-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, reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados aos quais, 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 estiver disponível.
-
-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">Li e concordo com todos os termos e condições expressos acima</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<p>
-  Esta página fornece links para imagens OTA de dispositivo e descreve
- como aplicar manualmente uma atualização OTA em um dispositivo. Esse procedimento pode ser útil
- para recuperar dispositivos que receberam atualizações OTA usando o programa beta
-do Android e não estão ligando após a instalação.
-</p>
-
-<h2 id="install-ota">Instalação de imagens OTA</h2>
-
-<p></p>
-
-<p>Para instalar um pacote OTA em um dispositivo:</p>
-
-<ol>
-  <li>Baixe uma imagem OTA de dispositivo na tabela abaixo.</li>
-  <li>Reinicialize o dispositivo para ficar em modo Recovery. Para obter mais informações sobre como colocar
- dispositivos Nexus nesse modo, consulte
- <a href="https://support.google.com/nexus/answer/4596836">Redefinição do
-dispositivo Nexus para voltar à configuração de fábrica</a>.
-  </li>
-  <li>No dispositivo, selecione <strong>ADB sideload</strong>.</li>
-  <li>Conecte o dispositivo a um computador que tenha o ambiente de desenvolvimento Android
- carregado e a ferramenta Android Debug Bridge (adb) instalada.</li>
-  <li>Execute o seguinte comando:
-    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
-  </li>
-</ol>
-
-
-
-<h2 id="ota-images">Imagem OTA de dispositivo</h2>
-
-<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-ota-npd90g-0a874807.zip</a><br>
-      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
-      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd90g-06f5d23d.zip</a><br>
-      MD5: 513570bb3a91878c2d1a5807d2340420<br>
-      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd90g-5baa69c2.zip</a><br>
-      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
-      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd90g-c04785e1.zip</a><br>
-      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
-      SHA-1: 31633180635b831e59271a7d904439f278586f49
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
-      MD5: 0493fa79763d67bcdde8007299e1888d<br>
-      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd90g-3a0643ae.zip</a><br>
-      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
-      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd90g-ec931914.zip</a><br>
-      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
-      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
-      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
-      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
-    </td>
-  </tr>
-
-</table>
-
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
-  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/download.jd b/docs/html-intl/intl/pt-br/preview/download.jd
deleted file mode 100644
index 4477142..0000000
--- a/docs/html-intl/intl/pt-br/preview/download.jd
+++ /dev/null
@@ -1,544 +0,0 @@
-page.title=Testes 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 contratante e a Google em relação ao uso do Preview.
-
-1.2 "Android" refere-se à 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 desenvolver 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 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 em 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 situação regular 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 Preview que a Google fornece podem mudar sem aviso prévio e que as versões futuras do Preview podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do Preview. 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 observações de direitos de propriedade (incluindo observaçõ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 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 para fazê-lo e para os fins limitados pela 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, perturbe, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades ou serviços da Google ou qualquer outro terceiro.
-
-4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) 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 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 terceiro) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis a terceiros, qualquer lei ou norma aplicável e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) de quaisquer violações.
-
-4.7 O Preview está em desenvolvimento e o seu teste e feedback são uma parte importante deste processo. 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 acessível 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 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 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 com base nestes dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos proprietários.
-
-7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos adicionais entre você e o terceiro em questão.
-
-8. Uso de APIs da Google
-
-8.1 APIs da Google
-
-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, reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados aos quais, 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 estiver disponível.
-
-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">Li e concordo com todos os termos e condições expressos 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 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"> Android Beta Program</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 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 no dispositivo da mesma maneira que
- atualizações de sistema oficiais.
-</p>
-
-<p>
-  Você pode cancelar a inscrição do 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 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 o 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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </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. Alternativamente, se o dispositivo for compatível
- com o programa beta do Android, será possível inscrevê-lo no
- programa e depois 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 ou mais recente, que oferece suporte ao <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>,
-cujo desempenho é muito superior ao do emulador no
-Android Studio 1.5.</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/afw.jd b/docs/html-intl/intl/pt-br/preview/features/afw.jd
deleted file mode 100644
index 977d2a0..0000000
--- a/docs/html-intl/intl/pt-br/preview/features/afw.jd
+++ /dev/null
@@ -1,552 +0,0 @@
-page.title=Atualizações no Android for Work
-page.metaDescription=Novas APIs do Android for Work e novos recursos do Android N.
-page.keywords="android for work", "android N", "enterprise", "QR code"
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Neste documento</h2>
-      <ol>
-        <li><a href="#qr">Provisionamento de código QR
-</a></li>
-
-        <li><a href="#sec-challenge">Desafio de segurança de perfil de trabalho
-</a></li>
-
-        <li><a href="#suspend">Desativar acesso a aplicativos
-</a></li>
-
-        <li><a href="#toggle-work">Alternar modo de trabalho
-</a></li>
-
-        <li><a href="#always-on-vpn">Always-On VPN
-</a></li>
-
-        <li><a href="#contacts">Integração de contatos com perfil de trabalho
-</a></li>
-
-        <li><a href="#remote-reboot">Reinicialização remota
-</a></li>
-
-        <li><a href="#disable-roaming">Desativação de roaming de dados
-</a></li>
-
-        <li><a href="#process-logging">Registro do processo empresarial
-</a></li>
-
-        <li><a href="#bug-reports">Relatórios de erros remotos
-</a></li>
-
-        <li><a href="#remove-cert">Remoção de certificado do cliente
-</a></li>
-
-        <li><a href="#grant-cert-on-install">Concessão de acesso a certificado do cliente
-na instalação</a></li>
-
-        <li><a href="#ui-policy">Transparência da política de IU do sistema
-</a></li>
-
-        <li><a href="#restrictions-mgmt">Melhorias no gerenciamento de restrições de aplicativos
-</a></li>
-
-        <li><a href="#location-off">Interruptor para desativar localidade
-</a></li>
-
-        <li><a href="#custom-provisioning">Provisionamento personalizado
-</a></li>
-
-        <li><a href="#multi-wifi-ca">Diversos certificados de CA para Wi-Fi
-</a></li>
-
-        <li><a href="#custom-lock">Mensagem de tela de bloqueio personalizada
-</a></li>
-
-        <li><a href="#work-connectionservice">Perfil de trabalho ConnectionService
-</a></li>
-
-        <li><a href="#lock-wp">Bloqueio de plano de fundo
-</a></li>
-
-        <li><a href="#lock-user-icon">Bloqueio de ícone de usuário
-</a></li>
-
-        <li><a href="#health-monitoring">Monitoramento da saúde do dispositivo
-</a></li>
-
-      </ol>
-
-    <h2>Veja também</h2>
-    <ul>
-      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência
-do N Preview SDK</a></li>
-    </ul>
-  </div>
-</div>
-
-<p>Este documento descreve os novos recursos do Android for Work oferecidos no
-Android N.</p>
-
-<h2 id="qr">Provisionamento de código QR</h2>
-
-<p>
-  O Android for Work agora é compatível com o uso de códigos QR para fornecimento de dispositivos
-de responsabilidade corporativa. Este assistente de configuração permite a digitalização de um código QR para fornecer
-ao dispositivo.
-</p>
-
-<h2 id="sec-challenge">Desafio de segurança de perfil de trabalho</h2>
-
-<p>
-  Donos de perfis podem exigir que os usuários especifiquem um desafio de segurança para aplicativos
-em execução no perfil de trabalho. O sistema mostra o desafio de segurança quando o
-usuário tenta abrir qualquer aplicativo de trabalho. Se o usuário preencher corretamente o
- desafio de segurança, o sistema desbloqueará e, se necessário, descriptografará o
-perfil de trabalho.
-</p>
-
-<p>
-  Se um dono de perfil enviar uma intenção {@link
- android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD}, o
- sistema solicitará que o usuário defina um desafio de segurança. O dono de perfil também
- pode enviar uma intenção <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> para
- solicitar que o usuário defina um bloqueio de dispositivo.
-</p>
-
-<p>
-  Os donos de perfil podem escolher políticas de senha diferentes
- das políticas de outros dispositivos para o desafio de trabalho. Por exemplo, o
- tamanho mínimo da resposta do desafio no dispositivo pode ser diferente do tamanho
- exigido para outras senhas. Os donos de perfis definem as
-políticas do desafio por meio dos métodos {@link android.app.admin.DevicePolicyManager}
-usuais, como {@link
-android.app.admin.DevicePolicyManager#setPasswordQuality
-setPasswordQuality()} e {@link
-android.app.admin.DevicePolicyManager#setPasswordMinimumLength
-setPasswordMinimumLength()}. O dono de perfil também pode definir o bloqueio de dispositivo
-usando a instância de {@link android.app.admin.DevicePolicyManager} retornada
-pelo novo método <code>DevicePolicyManager.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> da classe {@link android.app.admin.DevicePolicyManager}
-.
-</p>
-
-<p>
-  Para obter detalhes sobre os novos métodos e constantes, consulte a
-página de referência <code>DevicePolicyManager</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência do N Preview SDK</a>.
-</p>
-
-<h2 id="suspend">Desativar acesso a aplicativos</h2>
-
-<p>
-  Donos de dispositivos e perfis podem suspender temporariamente o acesso a pacotes
- chamando o novo método <code>DevicePolicyManager.setPackagesSuspended()</code>
-. Os donos podem usar o mesmo método para reativar esses pacotes.
-</p>
-
-<p>
-  Enquanto está suspenso, um pacote não consegue iniciar atividades, as notificações
- são suspensas e a entrada do aplicativo na <a href="{@docRoot}guide/components/recents.html">tela de visão geral</a> é ocultada.
-  Os pacotes suspensos não são exibidos na <a href="{@docRoot}guide/components/recents.html">tela de visão geral</a> e não
- podem mostrar caixas de diálogo (incluindo avisos e snackbars). Também não conseguem reproduzir
- áudio nem vibrar o dispositivo.
-</p>
-
-<p>
-  A tela de início pode aplicar uma IU destacada ao aplicativos suspensos para mostrar que
- não estão disponíveis. Podem, por exemplo, exibir o ícone do aplicativo
- em cinza. A tela de início pode descobrir se um aplicativo está suspenso chamando o novo método
- <code>DevicePolicyManager.getPackageSuspended()</code>.
-</p>
-
-<h2 id="toggle-work">Alternar modo de trabalho</h2>
-
-<p>
-  Em dispositivos com dois perfis, o usuário pode ativar ou desativar o modo de trabalho. Quando o modo de trabalho
- é desativado, o perfil gerenciado é encerrado temporariamente. Os aplicativos,
- a sincronização em segundo plano e as notificações do perfil de trabalho são desativados, 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>
-
-<h2 id="always-on-vpn">Always-On VPN</h2>
-
-<p>
-  Os donos de dispositivo e perfil podem exigir que os aplicativos de trabalho se conectem sempre
-por meio de uma VPN especificada. Se os donos definirem este requisito, o
- dispositivo iniciará a VPN automaticamente na inicialização.
-</p>
-
-<p>
-  Os donos podem exigir o uso de uma VPN chamando o novo
-método <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code>. Para descobrir
- se o dono definiu um requisito de VPN, chame o novo
- método <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code>.
-</p>
-
-<p>
-  Como o sistema pode vincular os serviços de VPN diretamente sem interação com aplicativos,
- os clientes de VPN precisam processar novos pontos de entrada para a Always-on VPN. Como antes, você
- pode encontrar serviços ativos usando um filtro de intenção que corresponda à ação
- {@link android.net.VpnService android.net.VpnService}.
-</p>
-
-<p>
-  Os usuários podem configurar manualmente um cliente de VPN always-on que implemente {@link
-android.net.VpnService} usando a tela <strong>Settings &gt; More &gt;
- VPN</strong>.
-</p>
-
-<h2 id="contacts">Integração de contatos com perfil de trabalho</h2>
-
-<p>
-  Os donos de perfil podem permitir pesquisa local e busca no diretório de contatos de trabalho
- do usuário principal. Por exemplo, um usuário pode acessar os diretórios de contatos
- pessoais e de trabalho no telefone ou no aplicativo de contatos particular (se
- permitido pelo administrador do perfil).
-</p>
-
-<p>
-  Desenvolvedores que se valem do Provedor de Contatos podem usar a Enterprise Contacts API
- para acessar as entradas do diretório do perfil de trabalho do usuário principal se permitido
- pela política:
-</p>
-
-<ul>
-  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
-  </li>
-</ul>
-
-<p>
-  Donos de perfis podem controlar a visibilidade de contatos de trabalho no usuário
- principal usando os seguintes novos métodos:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
-  </li>
-</ul>
-
-<h2 id="remote-reboot">Reinicialização remota</h2>
-
-<p>
-  Donos de dispositivos podem reinicializá-los remotamente. Em alguns casos, dispositivos implementados
- dentro de compartimentos em locais públicos podem impedir o acesso ao botão liga/desliga. Se um
- dispositivo precisar de reinicialização, os administradores poderão fazer isso usando o novo
- método <code>DevicePolicyManager.reboot()</code>.
-</p>
-
-<h2 id="disable-roaming">Desativação de roaming de dados</h2>
-
-<p>
-  Os donos de dispositivos podem desativar o roaming de dados usando a nova restrição de usuário <code>DISALLOW_DATA_ROAMING</code> do {@link
-android.os.UserManager}.
-</p>
-
-<h2 id="process-logging">Registro do processo empresarial</h2>
-
-<p>
-  Donos de dispositivos podem monitorá-los remotamente
- para identificar atividades suspeitas, incluindo inicialização de aplicativos, atividade adb e desbloqueios de tela. Registros de processo
- não exigem consentimento do usuário. Para recuperar os registros, os donos de dispositivos precisam ativar
-o registro no dispositivo usando <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
-</p>
-
-<p>
-  As mudanças na API incluem:
-</p>
-
-<ul>
-
-  <li>
-    A nova classe <code>android.app.admin.SecurityLog</code> e seus
- métodos
-  </li>
-
-  <li>
-    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrieveSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
-  </li>
-</ul>
-
-<h2 id="bug-reports">Relatórios de erros remotos</h2>
-
-<p>
-  Donos de dispositivos podem acionar e recuperar remotamente um relatório de erros que contém um
- arquivo de despejo, o que permite a investigação forense de um incidente
- conhecido ou um dispositivo danificado. Devido à natureza detalhada do relatório de erros,
- ele só é gerado com o consentimento do usuário.
-</p>
-
-<p>
-  O Android N inclui as seguintes adições de API para dar suporte a este recurso. Para
-obter detalhes, consulte a <a href="{@docRoot}preview/setup-sdk.html#docs-dl"> Referência do N
- Preview SDK</a>.
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.requestBugreport()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportFailed()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportShared()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
-  </li>
-</ul>
-
-<h2 id="remove-cert">Remoção de certificado do cliente</h2>
-
-<p>
-  Agora, donos de perfis e dispositivos podem remover certificados de cliente que foram
-instalados por meio do {@link android.app.admin.DevicePolicyManager#installKeyPair
- installKeyPair()} chamando o novo método
- <code>DevicePolicyManager.removeKeyPair()</code>.
-</p>
-
-<h2 id="grant-cert-on-install">Concessão de acesso a certificado do cliente
-na instalação</h2>
-
-<p>
-  Se um dono de perfil ou dispositivo conceder a um aplicativo de terceiros a capacidade de
- gerenciar certificados, o próprio aplicativo poderá conceder acesso a certificados que
- tenha instalado sem qualquer intervenção do dono.
-</p>
-
-<p>
-  A API existente para gerenciamento de certificados foi expandida para incluir:
-</p>
-
-<ul>
-  <li><code>DevicePolicyManager.installKeyPair()</code>
-  </li>
-</ul>
-
-<h2 id="ui-policy">Transparência da política de IU do sistema</h2>
-
-<p>
-  Políticas que afetem a experiência do usuário ou restrinjam Settings são
- totalmente divulgadas e os donos de perfis e dispositivos podem atribuir a
- política ao departamento de TI da empresa. Além de incluir uma mensagem consistente de "Ação
- não permitida” em Settings, os administradores de TI podem definir uma
- mensagem de suporte específica para a organização nas configurações do dispositivo com os seguintes
- novos métodos {@link android.app.admin.DevicePolicyManager}:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setShortSupportMessage()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.setLongSupportMessage()</code>
-  </li>
-</ul>
-
-<h2 id="restrictions-mgmt">Melhorias no gerenciamento de restrições de aplicativos</h2>
-
-<p>
-  O dono do dispositivo ou perfil pode habilitar outro aplicativo para gerenciar restrições de aplicativo
- por meio do novo
- método <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
-. O aplicativo indicado pode verificar se a permissão foi
-concedida chamando
- <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
-</p>
-
-<p>
-  Um aplicativo indicado para gerenciar restrições de aplicativos pode chamar {@link
- android.app.admin.DevicePolicyManager#setApplicationRestrictions
-setApplicationRestrictions()} e {@link
-android.app.admin.DevicePolicyManager#getApplicationRestrictions
-getApplicationRestrictions()} para quaisquer pacotes dentro daquele usuário ou perfil.
-</p>
-
-<h2 id="location-off">Interruptor para desativar localidade</h2>
-
-<p>
-  Os usuários podem desativar as permissões de localidade para aplicativos de trabalho sem deixar de
- acessar informações de localidade em seus aplicativos pessoais. Um interruptor de acesso de localidade
- em separado em Location Settings permite que o usuário impeça atualizações de localização ou
- consultas de última localidade em aplicativos executados no perfil de trabalho.
-</p>
-
-<p>
-  O interruptor de desligamento de localidade em nível superior desativa o acesso à localidade para o
- perfil principal e o perfil gerenciado.
-</p>
-
-<h2 id="custom-provisioning">Provisionamento personalizado</h2>
-
-<p>
-  Um aplicativo pode personalizar os fluxos de provisionamento do dono do perfil e do dispositivo
- com cores e logos corporativos.
-</p>
-
-<dl>
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
-  </dt>
-
-  <dd>
-    Personaliza a cor do fluxo.
-  </dd>
-
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
-  </dt>
-
-  <dd>
-    Personaliza o fluxo com um logo corporativo.
-  </dd>
-</dl>
-
-<h2 id="multi-wifi-ca">Diversos certificados de CA para Wi-Fi</h2>
-
-<p>
-  Donos de dispositivos e perfis podem definir vários certificados de CA para uma determinada
- configuração de Wi-Fi. Quando redes Wi-Fi corporativas têm CA separadas para
- pontos de acesso separados com o mesmo SSID, os administradores de TI podem incluir todas as
- CA correspondentes na configuração de Wi-Fi usando o novo método
- <code>setCaCertificates()</code>.
-</p>
-
-<p>
-  As APIs adicionadas foram:
-</p>
-
-<ul>
-  <li>
-    <code>WifiEnterpriseConfig.setCaCertificates()</code>
-  </li>
-
-  <li>
-    <code>WifiEnterpriseConfig.getCaCertificates()</code>
-  </li>
-</ul>
-
-<h2 id="custom-lock">Mensagem de tela de bloqueio personalizada</h2>
-
-<p>
-  Donos de dispositivos podem fornecer informações a ser exibidas na tela de bloqueio.
-  Essas informações têm prioridade sobre a mensagem do usuário na tela de bloqueio (se houver uma
- definida). Os novos métodos {@link android.app.admin.DevicePolicyManager} são:
-</p>
-
-<ul>
-  <li>
-    <code>setDeviceOwnerLockScreenInfo()</code>
-  </li>
-
-  <li>
-    <code>getDeviceOwnerLockScreenInfo()</code>
-  </li>
-</ul>
-
-<h2 id="work-connectionservice">Perfil de trabalho ConnectionService</h2>
-
-<p>
-  Os donos de perfil podem especificar um aplicativo de telefone de trabalho que usa um
- {@link android.telecom.ConnectionService} específico para trabalho para o back-end de
- chamada (contas de chamada). O telefone de trabalho só mantém um registro de chamadas de trabalho
- e baseia-se apenas em contatos de trabalho. Os usuários têm uma experiência consistente
- de IU em chamada em qualquer aplicativo de ligação. As chamadas recebidas pelas contas de trabalho
- são distintas das chamadas recebidas pelas
-contas pessoais.
-</p>
-
-<p>
-  O telefone deve verificar o novo sinalizador
- <code>android.telecom.Call.PROPERTY_WORK_CALL</code> para determinar se a chamada
- é de trabalho. Se for de trabalho, o telefone deverá indicar o fato
- adicionando um distintivo de trabalho, por exemplo.
-</p>
-
-<h2 id="lock-wp">Bloqueio de plano de fundo</h2>
-
-<p>
-  Uma nova restrição de usuário (<code>DISALLOW_SET_WALLPAPER</code>) impede que
- o usuário altere o plano de fundo. O dono do dispositivo ou perfil ainda pode
- alterar o plano de fundo, mas só consegue mudar o plano de fundo
- do usuário ou perfil que controla. Por exemplo, um dono de perfil não consegue mudar o
-plano de fundo do usuário pai, mas o dono de um perfil principal e
- o dono do dispositivo conseguem. Um dono de perfil ou dispositivo que queira alterar o
- plano de fundo precisa verificar se o usuário ou perfil que gerencia tem um
- plano de fundo ({@link android.app.WallpaperManager#isWallpaperSupported
- isWallpaperSupported()}) e se possui permissão para alterá-lo (com o
- novo método <code>WallpaperManager.isWallpaperSettingAllowed()</code>)
-</p>
-
-<h2 id="lock-user-icon">Bloqueio de ícone de usuário</h2>
-
-<p>
-  Uma nova restrição de usuário (<code>DISALLOW_SET_USER_ICON</code>) impede que
- o usuário altere o ícone de usuário. O dono do dispositivo ou perfil
- ainda pode alterar o ícone. No entanto, um dono de perfil só consegue alterar o
- ícone de usuário do perfil que controla.
-</p>
-
-<h2 id="health-monitoring">Monitoramento da saúde do dispositivo</h2>
-
-<p>
-  Um dono de perfil ou dispositivo pode usar a nova interface
- <code>HardwarePropertiesManager</code> para recuperar informações importantes
- sobre a integridade do dispositivo, como temperatura da CPU ou da GPU e uso de CPU. A nova
- interface de monitoramento é especialmente útil para monitorar dispositivos não assistidos
- executados em uma localidade remota.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/license.jd b/docs/html-intl/intl/pt-br/preview/license.jd
deleted file mode 100644
index 7228bb0..0000000
--- a/docs/html-intl/intl/pt-br/preview/license.jd
+++ /dev/null
@@ -1,145 +0,0 @@
-page.title=Contrato de licença
-
-@jd:body
-
-<p>
-Para começar a usar o Android SDK Preview, você deve concordar com os seguintes termos e condições.
-Como descrito abaixo, observe que esta é uma versão de prévia do Android SDK, sujeita a alterações, que deve ser usada por seu risco.  O Android SDK Preview não é uma versão estável e pode conter erros e defeitos que podem resultar em danos sérios aos sistemas de computador, aos dispositivos e aos dados.
-</p>
-
-<p>
-Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença”).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-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 contratante e a Google em relação ao uso do Preview.
-
-1.2 "Android" refere-se à 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 desenvolver 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 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 em 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 situação regular 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 Preview que a Google fornece podem mudar sem aviso prévio e que as versões futuras do Preview podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do Preview. 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 observações de direitos de propriedade (incluindo observaçõ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 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 para fazê-lo e para os fins limitados pela 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, perturbe, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades ou serviços da Google ou qualquer outro terceiro.
-
-4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) 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 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 terceiro) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis a terceiros, qualquer lei ou norma aplicável e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) de quaisquer violações.
-
-4.7 O Preview está em desenvolvimento e o seu teste e feedback são uma parte importante deste processo. 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 acessível 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 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 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 com base nestes dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos proprietários.
-
-7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos adicionais entre você e o terceiro em questão.
-
-8. Uso de APIs da Google
-
-8.1 APIs da Google
-
-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, reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados aos quais, 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 estiver disponível.
-
-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>
\ 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
deleted file mode 100644
index 1c81f6d..0000000
--- a/docs/html-intl/intl/pt-br/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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
- fornece tudo que é necessário para testar e otimizar os aplicativos para a próxima
- versão do Android. É de graça e você pode começar agora mesmo:
- basta fazer o download das ferramentas 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 dê-nos feedback usando o
-<a href="{@docRoot}preview/bug">issue tracker</a>. Conecte-se a 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, forneceremos 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#dp1">Preview 1</a></strong> (versão inicial, alfa)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong> (atualização incremental, alfa)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></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á um
- nível da API 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> em
- 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}studio/intro/update.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 da prévia 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 IU, 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 beta do Android. 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 da 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> é o <strong>canal principal de feedback.</strong> É possível informar erros,
- problemas de desempenho e feedback geral pelo issue tracker. Também é possível verificar os
-<a href="{@docRoot}preview/bugs">erros conhecidos</a> e
- encontrar etapas de resolução. Manteremos você atualizado sobre seu problema conforme ele seja 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 da API padrão</strong>. Caso opte
- pelos comportamentos de compatibilidade para testar o aplicativo (o que é muito
- recomendado), é possível destinar a versão de prévia do Android N
-configurando o <code><a href=
-  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code> do aplicativo
- para <code>“N”</code>.
-</p>
-
-<p>
-  O Android N Developer Preview fornece <strong>APIs de prévia</strong>
- &mdash; as APIs não serão oficiais até o lançamento do SDK final,
- atualmente planejado para o terceiro trimestre de 2016. Isto significa que é possível
- <strong>esperar alterações secundárias de APIs</strong> com o 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>evita a publicação de aplicativos destinados para o N Developer
- Preview</strong>. Quando o SDK final do Android N estiver disponível, você poderá
- destinar o nível da API do Android N oficial e publicar o aplicativo no Google
- Play pelos canais de lançamento alfa e beta. Enquanto isso, caso queira
- distribuir um aplicativo destinado para Android N para testadores, é possível fazê-lo por e-mail ou
- por download direto do 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 aplicativo com o Android N:
-</p>
-
-<ol>
-  <li> Revise 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 do que há de novo e como isto afeta os 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/preview_toc.cs b/docs/html-intl/intl/pt-br/preview/preview_toc.cs
deleted file mode 100644
index 12cb423..0000000
--- a/docs/html-intl/intl/pt-br/preview/preview_toc.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-<ul id="nav">
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="程式總覽"> Visão geral do programa</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/support.html"> Suporte e notas da versão</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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"> Configurar o Preview</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="在裝置上測試"> Testar em um dispositivo</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="行為變更">Alterações de comportamento</a></div>
-      <ul>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/background-optimization.html" 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="背景最佳化">Otimizações em segundo plano</a></li>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/multilingual-support.html" 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="語言和地區設定">Idioma e localidade</a></li>
-      </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="&lt;?cs var:toroot ?&gt;preview/features/multi-window.html" 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="多視窗支援"> Suporte a várias janelas</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/notification-updates.html" 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="通知">Notificações</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/data-saver.html"> Economia de dados</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/tv-recording-api.html" 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="電視錄製"> Gravação para TV</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/security-config.html" 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="網路安全性設定"> Configurações de segurança de rede</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/icu4j-framework.html" 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"> Suporte a ICU4J</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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 語言功能"> Recursos de linguagem do Java 8</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/afw.html"> Mudanças no Android for Work</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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="限定範圍目錄存取"> Acesso a diretórios com escopo</a></li>
-      </ul>
-  </li>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/samples.html" es-lang="Ejemplos" in-lang="Contoh" ja-lang="サンプル" ko-lang="샘플" pt-br-lang="Exemplos" ru-lang="Примеры" zh-cn-lang="示例" zh-tw-lang="範例"> Exemplos</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/license.html" es-lang="Contrato de licencia" ja-lang="使用許諾契約" ko-lang="라이선스 계약" pt-br-lang="Contrato de licença" ru-lang="Лицензионное соглашение" zh-cn-lang="许可协议" zh-tw-lang="授權協議"> Contrato de licença</a></div>
-  </li>
-
-</ul> 
\ 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
deleted file mode 100644
index 9c1f035..0000000
--- a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Configuração do 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</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</h2>
-
-<p>A plataforma Android N adiciona suporte para <a href="{@docRoot}preview/j8-jack.html">recursos de linguagem do Java 8</a>,
- o que requer 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>
-
-<p>Se você já instalou o Android Studio, verifique se tem o Android
-Studio 2.1 ou superior clicando em <strong>Help &gt; Check for Update</strong>
-(no Mac, <strong>Android Studio &gt; Check for Updates</strong>).</p>
-
-<p>Se não o tiver, <a href="{@docRoot}studio/">baixe o Android
-Studio 2.1 aqui</a>.</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>Abra o SDK Manager selecionando <strong>Tools &gt; Android &gt;
- SDK Manager</strong>.</li>
-
-  <li>Na guia <strong>SDK Platforms</strong>, 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 de API 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-3-docs.zip">n-preview-3-docs.zip</a></td>
-    <td width="100%">
-      MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
-    </td>
-  </tr>
-<table>
-
-
-
-<h2 id="java8">Obter o Java 8 JDK</h2>
-
-<p>Para compilar o aplicativo para a plataforma Android N e usar algumas ferramentas com o
-Android Studio 2.1, é preciso instalar o Java 8 Developer Kit (JDK 8). Portanto, se
-não tiver a versão mais recente, baixe o JDK 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-rc3'</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/pt-br/preview/support.jd b/docs/html-intl/intl/pt-br/preview/support.jd
deleted file mode 100644
index 9ae32c8..0000000
--- a/docs/html-intl/intl/pt-br/preview/support.jd
+++ /dev/null
@@ -1,1188 +0,0 @@
-page.title=Notas da versão e suporte
-meta.keywords="preview", "android"
-page.tags="preview", "developer preview"
-page.image=images/cards/card-n-support_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Neste documento</h2>
-
-<ul>
-  <li><a href="#dp3">Developer Preview 3</a>
-    <ul>
-      <li><a href="#general">Alertas gerais</a></li>
-      <li><a href="#new">Novidades no DP3</a></li>
-      <li><a href="#ki">Problemas conhecidos</a></li>
-    </ul>
-  </li>
-  <li><a href="#dp2">Developer Preview 2</a></li>
-  <li><a href="#dp1">Developer Preview 1</a></li>
-</ul>
-
-<!--
-<h2>See Also</h2>
-<ol>
-  <li></li>
-</ol>
--->
-
-</div>
-</div>
-
-<p>
-  Estão disponíveis dois canais de suporte principais para quem está desenvolvendo ou testando
- com o Android N Developer Preview: Registre relatórios de erro em <a href="https://developer.android.com/preview/bug">https://developer.android.com/preview/bug</a> para
- erros específicos de dispositivo, do sistema e do Google App. Para problemas com outros aplicativos,
- entre em contato diretamente com o desenvolvedor.
-</p>
-
-<p>Para discutir problemas ou ideias com outros desenvolvedores que trabalham com o Android N, junte-se à
-<a href="{@docRoot}preview/dev-community">comunidade Developer Preview do Google+</a>.</p>
-
-<h2 id="dp3">Developer Preview 3</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Data: Maio de 2016<br>
-        Versão: NPD35K<br>
-        Suporte do emulador: x86 &amp; ARM (32/64 bits)<br>
-        Serviços Google Play: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="general">Alertas gerais</h3>
-
-<p>
-  Esta versão do Developer Preview é para <strong>desenvolvedores de aplicativos e outros
- usuários iniciais</strong> e está disponível para uso diário, desenvolvimento ou
- testes de compatibilidade. Esteja ciente destas notas gerais sobre a
- versão:
-</p>
-
-<ul>
-  <li>Esta versão pode ter vários <strong>problemas de estabilidade</strong> em
- dispositivos compatíveis. Os usuários podem encontrar instabilidade no sistema, como
- panes e falhas do kernel.
-  </li>
-
-  <li>Alguns aplicativos <strong>podem não funcionar como esperado</strong> na nova
- versão da plataforma. Isso inclui aplicativos do Google e outros aplicativos.
-  </li>
-
-  <li>O Developer Preview 3 foi <strong>aprovado pelo Compatibility Test Suite (CTS)
-</strong> nestes dispositivos: Nexus 5X, Nexus 6, Nexus 6P e Pixel
- C. Aplicativos que dependem de versões aprovadas pelo CTS
- funcionam normalmente nesses dispositivos (por exemplo, Android Pay).
-  </li>
-
-  <li>O Developer Preview 3 está <strong>disponível em todos os
- dispositivos compatíveis:</strong> Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player, Pixel
-  C, General Mobile 4G (Android One), assim como Sony Xperia Z3 (modelos D6603 e
-  D6653).
-
-  </li>
-</ul>
-
-
-<h3 id="new">Novidades no DP3</h3>
-
-<h4 id="">Modo RV para Android</h4>
-
-<p>
-  O Android N adiciona compatibilidade de plataformas e otimizações para um novo Modo RV que dá aos
- desenvolvedores a capacidade de projetar experiências de RV móveis de alta qualidade para os usuários. Há
- diversas melhorias de desempenho, incluindo o acesso a um núcleo exclusivo da CPU
- para aplicativos de RV. Dentro dos aplicativos, é possível aproveitar o rastreamento inteligente
- da cabeça e notificações estéreo que funcionam para RV. Mais importante,
-o Android N oferece gráficos de latência muito baixa.
-</p>
-
-<p>
-  Para obter mais informações, consulte o <a href="https://developers.google.com/vr/android/">Google VR SDK para Android</a>.
-</p>
-
-<h4 id="">Modo de desempenho sustentado</h4>
-
-<p>
-  O Android N inclui compatibilidade opcional para <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">modo de desempenho
-sustentado</a>, permitindo que OEMs ofereçam dicas sobre
- capacidades de desempenho do dispositivo para aplicativos de longa duração. Desenvolvedores de aplicativos podem usar
- essas dicas para ajustar os aplicativos para um nível de
- desempenho do dispositivo previsível e consistente em períodos longos de tempo. Desenvolvedores de aplicativos podem testar essa nova
- API na prévia para desenvolvedores apenas em dispositivos Nexus 6P.
-</p>
-
-<h4>Multiprocess WebView</h4>
-
-<p>
-  A partir da versão 51 do Android N, o WebView executará conteúdo da web em um
- processo de segurança separado quando a opção de desenvolvedor “Multiprocess WebView”
- estiver ativada. A equipe do WebView quer ouvir comentários sobre compatibilidade e
- desempenho durante a execução no N antes de ativar o Multiprocess WebView em uma
- versão futura do Android. Nesta versão, regressões no tempo de inicialização, no
- uso de memória total e no desempenho de renderização do software são esperadas.
-</p>
-
-<p>
-  Queremos
- ser informados se você encontrar problemas inesperados no modo multiprocesso. Entre em contato com a equipe WebView <a href="https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">
- enviando um relatório de erros</a>.
-</p>
-
-<h4 id="">Auxiliar de atalhos de teclado</h4>
-
-<p>
-  No Android N, o usuário pode pressionar <code>Meta+/</code> para acionar uma tela de <strong>atalhos
- de teclado</strong> que exibe todos os atalhos disponíveis do
- sistema e do aplicativo em questão. Os desenvolvedores podem adicionar os próprios atalhos ou
- ativar a tela de atalhos nos aplicativos. Consulte o <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Auxiliar de
-atalhos de teclado</a> para saber mais.
-</p>
-
-<h4 id="">FrameMetrics API</h4>
-
-<p>
-  O DP3 introduz uma nova <a href="{@docRoot}preview/api-overview.html#framemetrics_api">FrameMetrics API</a>
- que permite que um aplicativo monitore o desempenho de renderização da IU ao expor uma API pubsub de
- transmissão para transferir informações sobre sincronização de quadros para a
- janela atual do aplicativo. <code>FrameMetricsListener</code> pode ser usado para medir
- o desempenho da IU em nível de interação em produção com granularidade maior e
- sem precisar de uma conexão USB.
-</p>
-
-<h4 id="api-changes">Alterações de recursos e API</h4>
-
-<dl>
-  <dt>
-    Atalhos do inicializador e a Launcher Shortcuts API
-  </dt>
-
-  <dd>
-    Decidimos adiar esse recurso para uma versão futura do Android. Planejamos
- remover as Launcher Shortcuts APIs (ShortcutManager e outros) da
- API pública do Android N a partir da próxima prévia para desenvolvedores.
-  </dd>
-
-  <dt>
-    WebView JavaScript executado antes do carregamento da página
-  </dt>
-
-  <dd>
-    Começando em aplicativos destinados para o Android N, o contexto do JavaScript é redefinido
- quando uma nova página é carregada. Atualmente, o contexto é transferido para
- a primeira página carregada em uma nova situação de {@link android.webkit.WebView}.
-    Os desenvolvedores que desejam inserir JavaScript no {@link
-    android.webkit.WebView} devem executar o script antes de a página
- começar a carregar.
-  </dd>
-
-  <dt>
-    WebView de Geolocalização em origens desprotegidas
-  </dt>
-
-  <dd>
-    Começando em aplicativos destinados ao Android N, a API de geolocalização será
- permitida apenas em origens seguras (por HTTPS). Essa política tem como objetivo proteger
- as informações privadas dos usuários quando eles estiverem usando uma conexão desprotegida.
-  </dd>
-
-  <dt>
-    Economia de dados
-  </dt>
-
-  <dd>
-    Começando no Developer Preview 3, os aplicativos podem usar uma intenção para exibir uma
- caixa de diálogo do sistema que permite que os usuários adicionem o aplicativo diretamente na
- lista de permissões da Economia de dados. Consulte a <a href="{@docRoot}preview/api-overview.html#data_saver">documentação sobre a Economia de dados
-</a> para obter mais detalhes.
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#number-blocking">Bloqueio de números</a>
-  </dt>
-
-  <dd>
-    Se um usuário não autorizado tenta bloquear ou desbloquear um número, agora a
- operação falha com {@link java.lang.SecurityException}. (Anteriormente,
- a operação lançava {@link java.lang.UnsupportedOperationException}.)
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#tile_api">Quick Settings Tile
-API</a>
-  </dt>
-
-  <dd>
-    Agora o sistema usa os metadados da atividade para decidir o modo do bloco.
-    (Anteriormente, o modo do bloco era determinado pelo valor de retorno do
- <code>TileService.onTileAdded()</code>.) Para obter mais informações, consulte
-<code>TileService.META_DATA_ACTIVE_TILE</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, disponível para download.
-  </dd>
-</dl>
-
-<h4 id="dp3-fixes">Correções de problemas relatados por desenvolvedores</h4>
-
-<p>
-  Diversos problemas relatados por desenvolvedores foram corrigidos, incluindo:
-</p>
-
-<ul>
-  <li>Reprodução de áudio por Bluetooth interrompida após 1 música (erro <a href="https://code.google.com/p/android/issues/detail?id=206889">206889</a>)
-  </li>
-
-  <li>Pixel C falha consistentemente (erro <a href="https://code.google.com/p/android/issues/detail?id=206962">206962</a>)
-  </li>
-
-  <li>Problemas de notificação do Relógio e Aviso (erro <a href="https://code.google.com/p/android/issues/detail?id=203094">203094</a>)
-  </li>
-
-  <li>Pixel C reinicia quando conectado ao MacBook Pro via cabo USB C (erro
-  <a href="https://code.google.com/p/android/issues/detail?id=205432">205432</a>)
-  </li>
-
-  <li>Agenda errada por um dia (erro <a href="https://code.google.com/p/android/issues/detail?id=203002">203002</a>)
-  </li>
-
-  <li>TelephonyManager.getAllCellInfo retorna dados inválidos (erro <a href="https://code.google.com/p/android/issues/detail?id=203022">203022</a>)
-  </li>
-
-  <li>No Nexus 6p, o Bluetooth desconecta continuamente (erro <a href="https://code.google.com/p/android/issues/detail?id=208062">208062</a>)
-  </li>
-</ul>
-
-<p>Para obter a lista completa de problemas corrigidos, consulte<a href="https://goo.gl/6uCKtf"> o
-issue tracker</a>.</p>
-
-<h3 id="ki">Problemas conhecidos</h3>
-
-<h4>Acessibilidade</h4>
-
-<ul>
-  <li>Impossível ouvir a produção de TTS quando o valor de inclinação está configurado quase no nível máximo.
-  </li>
-
-  <li>Recursos e configurações de acessibilidade podem ser interrompidos quando o usuário adiciona um
- perfil de trabalho, incluindo gesto e configuração de ampliação. O
- estado de acessibilidade é restaurado na próxima vez em que o usuário toca nas configurações relacionadas.
-  </li>
-</ul>
-
-<h4>Câmera</h4>
-
-<ul>
-  <li>O aplicativo Câmera mostrou instabilidade; ele pode falhar em diversas
- circunstâncias, como quando é inicializado em modo de várias janelas.
-  </li>
-
-  <li>Pressionar o obturador continuamente no modo panorama pode fazer o
- aplicativo Câmera falhar.
-  </li>
-</ul>
-
-<h4>Áudio</h4>
-<ul>
-  <li>Um problema na plataforma do reprodutor de áudio impede alguns aplicativos de funcionarem
- normalmente. Por exemplo, o Skype e outros aplicativos são afetados por esse problema.
-  </li>
-</ul>
-
-<h4>Conectividade</h4>
-
-
-<ul>
-  <li>Quando um dispositivo Bluetooth Low Energy (BLE) de função periférica anuncia um
- serviço e um dispositivo BLE de função central é conectado, o dispositivo de função periférica
- é desconectado rapidamente.
-  </li>
-
-  <li>A conexão Wi-Fi pode cair quando a tela está desligada.
-  </li>
-
-  <li>Conexões RFCOMM são instáveis e podem resultar em corrompimento de dados e
- oscilação na conexão.
-  </li>
-
-  <li>Os estados de rede ativos ({@link android.net.NetworkInfo#getState
-  NetworkInfo.getState()} e {@link android.net.NetworkInfo#getDetailedState
-  NetworkInfo.getDetailedState()}) podem retornar valores incorretos durante algumas
- situações de segundo plano restritas.
-  </li>
-</ul>
-
-
-<h4>
-  Inicializador
-</h4>
-
-<ul>
-  <li>A bandeja Todos os Aplicativos padrão do inicializador pode parar de responder após
- desligar e ligar a tela. Retornar à tela inicial e reinicializar
- a bandeja Todos os Aplicativos pode resolver o problema.
-  </li>
-</ul>
-
-<h4>
-  Teclado
-</h4>
-
-<ul>
-  <li>Ao atualizar um dispositivo com Android 6.0 ou anterior para o N Developer
- Preview, o Teclado do Google não preserva os dados de preferências como configurações recentes de
- emoticons e som.
-  </li>
-
-  <li>O Teclado do Google em idioma indiano pode ficar instável.
-  </li>
-
-  <li>Ao inserir texto em um campo de senha, o usuário pode selecionar russo como
- o idioma de entrada, mas o teclado continua em inglês. Isso impede que o
- usuário insira senhas no idioma russo.
-  </li>
-</ul>
-
-<h4>
-  Localidades e idiomas
-</h4>
-
-<ul>
-  <li>Ao usar localidade da direita para esquerda (RTL), o sistema pode
- alterar inesperadamente para apresentação de esquerda para direita (LTR) após a reinicialização do dispositivo.
-  </li>
-</ul>
-
-<h4>Mídia</h4>
-
-<ul>
-  <li>Reprodução de mídia instável no Nexus 9 e Nexus Player, incluindo
- problemas ao reproduzir vídeos em HD.
-  </li>
-</ul>
-
-<h4>
-  Modo de várias janelas
-</h4>
-
-<ul>
-  <li>O dispositivo pode congelar após mudar a orientação em modo de várias janelas.
-  </li>
-
-  <li>Atualmente, diversos aplicativos apresentam problemas no modo de várias janelas:
-    <ul>
-      <li>A IU do sistema pode falhar ao ancorar o brilho de Settings &gt; Display &gt;
- Screen no modo de várias janelas.
-      </li>
-
-      <li>O aplicativo Câmera pode falhar quando inicializado em modo de várias janelas.
-      </li>
-
-      <li>O YouTube pode falhar quando inicializado em modo de várias janelas. Para corrigir o
- problema, você deve limpar os dados do aplicativo do YouTube em Storage &gt; Apps &gt;
- YouTube.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>
-  Google Play Services
-</h4>
-
-<ul>
-  <li>Aplicativos que usam Google Cast via Google Play Services podem ficar instáveis quando
- o usuário seleciona uma localidade do sistema que usa letras e números fora do
- intervalo ASCII.
-  </li>
-</ul>
-
-<h4>
-  Política do dispositivo do Android for Work e Google Apps
-</h4>
-
-<ul>
-  <li>O aplicativo de Política do dispositivo pode falhar quando o usuário desbloqueia o dispositivo com a
- tela de “status da política do dispositivo” fixada.
-  </li>
-
-  <li>Depois de configurar o perfil de trabalho com a criptografia baseada em arquivos habilitada e
- desativar o perfil de trabalho, os usuários devem desbloquear o bloqueio de tela de perfil primário para poder
- acessar novamente os aplicativos do Work.
-  </li>
-
-  <li>O dispositivo é reinicializado após remover o padrão de bloqueio de segurança e abrir
- aplicativos de trabalho/pessoal no modo de várias janelas.
-  </li>
-
-  <li>A configuração DISALLOW_VPN_CONFIG faz com que a caixa de diálogo de autorização apareça como
- always-on-vpn pelo Cliente de política do dispositivo.
-  </li>
-
-  <li>O tráfego não é bloqueado até a VPN conectar no modo always-on-vpn.
-  </li>
-</ul>
-
-<h4>
-  Armazenamento externo
-</h4>
-
-<ul>
-  <li>Aplicativos podem ficar instáveis quando o usuário os transfere do armazenamento interno
- para o armazenamento externo adotável (isso pode incluir um cartão SD ou dispositivos conectados
- via USB).
-  </li>
-</ul>
-
-<h4>
-  Zoom de tela e vários APKs no Google Play
-</h4>
-
-<ul>
-  <li>Em dispositivos com Android N, o Google Play Services 9.0.83 relata incorretamente
- a densidade de tela atual em vez da densidade de tela estável. Quando o
- zoom de tela é habilitado nesses dispositivos, isso pode fazer com que o Google Play selecione uma
- versão de um aplicativo com vários APKs projetada para telas menores. Esse problema foi
- corrigido na próxima versão do Google Play Services e será incluído em uma versão
- próxima do Developer Preview.
-  </li>
-
-  <li>Em dispositivos com Android N, o Google Play Services 9.0.83 atualmente relata
- compatibilidade com Vulkan, mas não com a versão do Vulkan. Isso pode fazer com que o Google Play selecione uma
- versão de um aplicativo com vários APKs projetado para compatibilidade com versões anteriores do Vulkan em
- dispositivos compatíveis com versões mais recentes. Atualmente, o Google Play Store
- não aceita carregamento de aplicativos que usam segmentação de versão do Vulkan. Essa compatibilidade
- será adicionada ao Google Play Store no futuro e corrigida na próxima
- versão do Google Play Services (a ser incluída em uma versão futura do Developer Preview
-). Qualquer dispositivo N que estiver usando a versão 9.0.83 do Google Play Services
- continuará a receber versões dos aplicativos com segmentação básica de compatibilidade com o Vulkan.
-  </li>
-</ul>
-
-<h4 id="">Notificações</h4>
-
-<ul>
-  <li>MessagingStyle não exibe notificações com emissor “null” (próprio).
-  </li>
-</ul>
-
-<h4 id="">Ferramentas para desenvolvedor</h4>
-
-<ul>
-  <li>
-    <code>adb</code> pode às vezes se desconectar durante o uso da depuração JDWP.
-  </li>
-</ul>
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-
-
-
-
-
-
-
-<!-- DP2 Release Notes Archive -->
-
-<h2 id="dp2">Developer Preview 2</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Data: Abril de 2016<br>
-        Versões: NPC91K, NPC91O<br>
-        Suporte do emulador: x86 &amp; ARM (32/64 bits)<br>
-        Serviços Google Play: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp2-new">Novidades no DP2</h3>
-
-<ul>
-  <li>Compatibilidade da plataforma com Vulkan, uma nova API de renderização 3D que fornece
- controle explícito e com baixa sobrecarga da GPU (unidade de processamento gráfico), além de oferecer
- desempenho aprimorado para aplicativos com muitas chamadas de desenho. Para saber mais, consulte a
-  <a href="{@docRoot}ndk/guides/graphics/index.html">documentação</a>.
-  </li>
-
-  <li>Novos emoticons de pessoas com compatibilidade com variações de tons de pele e glifos do Unicode 9.
-  Os tons de pele e os novos emoticons não aparecerão até que os teclados adicionem compatibilidade para
- eles na paleta. Os aplicativos não precisam tomar medidas para
- aproveitar esses novos emoticons, a menos que usem uma fonte que não seja no sistema. Desenvolvedores
- IME devem incorporar a compatibilidade para os novos emoticons.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/api-overview.html#launcher_shortcuts">Launcher
-    Shortcuts API</a>: Aplicativos que usam <code>ShortcutManager</code> para enviar
- atalhos para pontos de partida dentro deles mesmos para o inicializador.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/features/multi-window.html">Várias janelas</a>:
-    Agora você pode especificar uma altura e um comprimento mínimos separados para uma
- atividade. Além disso, vários nomes de API foram ligeiramente alterados.
-  </li>
-</ul>
-
-<h4 id="dp2-fixes">Correções de problemas relatados por desenvolvedores</h4>
-
-<p>
-  Diversos problemas relatados por desenvolvedores foram corrigidos, incluindo:
-</p>
-
-<ul>
-  <li>Impossível conectar com SSID oculto ou Wi-Fi sem transmissão. (erro <a href="https://code.google.com/p/android/issues/detail?id=203116">203116</a>)
-  </li>
-
-  <li>O estado mudo do microfone persiste em várias atividades. (erro <a href="https://code.google.com/p/android/issues/detail?id=205922">205922</a>)
-  </li>
-
-  <li>Alterar o foco no modo de várias janelas pausa o YouTube. (erro <a href="https://code.google.com/p/android/issues/detail?id=203424">203424</a>)
-  </li>
-
-  <li>Resposta direta pode fechar atividades abertas. (erro <a href="https://code.google.com/p/android/issues/detail?id=204411">204411</a>)
-  </li>
-
-  <li>Diversas correções de estabilidade.
-  </li>
-</ul>
-
-<h3 id="dp2-general">Alertas gerais</h3>
-
-<p>
-  Esta versão do Developer Preview é apenas para <strong>desenvolvedores de aplicativos</strong>
- e foi projetada para uso apenas em testes de compatibilidade e desenvolvimento inicial.
-  Esteja ciente destas notas gerais sobre a versão:
-</p>
-
-<ul>
-
-  <li>Os componentes da ferramenta de desenvolvimento e bibliotecas de suporte foram atualizados
- para a versão DP2. Lembre-se de atualizar seu ambiente de desenvolvimento de prévia
- antes de desenvolver para o DP2. Para obter instruções sobre como configurar seu ambiente
- de desenvolvimento, consulte
- <a href="{@docRoot}preview/setup-sdk.html">Configuração do Preview</a>.
-  </li>
-
-  <li>Esta versão tem diversos problemas de estabilidade e desempenho em todos os dispositivos,
- portanto, <strong>não é adequada para uso diário em celulares ou tablets</strong>,
- especialmente para quem não é desenvolvedor.
-  </li>
-
-  <li>A vida útil da bateria e o desempenho não foram otimizados nesta
- versão:
-
-    <ul>
-      <li>Sabe-se que o <strong>desempenho do sistema e de aplicativos fica lento/instável
- periodicamente</strong> e dispositivos podem parar de responder ocasionalmente. Esses
- problemas podem aumentar com o uso prolongado.
-      </li>
-
-      <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
- desligar a tela.
-      </li>
-    </ul>
-  </li>
-
-  <li>Alguns <strong>aplicativos podem não funcionar normalmente</strong> no Developer Preview
- 2. Isso inclui aplicativos do Google e outros aplicativos.
-  </li>
-
-  <li>Esta versão inicial não foi aprovada pelo <strong>Compatibility Test Suite (CTS)
-</strong>. Aplicativos que dependem de versões aprovadas pelo CTS não funcionarão
- (por exemplo, o Android Pay).
-  </li>
-
-  <li>Essa versão de prévia é compatível com os dispositivos a seguir: Nexus 5X, Nexus 6,
-  Nexus 6P, Nexus 9 e Pixel C, além do General Mobile 4G
-  (Android One). Compatibilidade com o Nexus Player em breve.
-  </li>
-
-
-  <li><a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> foi
- atualizado para lidar com alterações na API entre o DP1 e o DP2.
-  </li>
-</ul>
-
-<h3 id="dp2-ki">Problemas conhecidos</h3>
-
-<h4>Desempenho e bateria</h4>
-
-<ul>
-  <li>Sabe-se que o desempenho do sistema e de aplicativos fica <strong>lento/instável
- periodicamente</strong> e o dispositivo pode parar de responder ocasionalmente. Esses
- problemas podem aumentar com o uso prolongado.
-  </li>
-</ul>
-
-<h4>Contas do Google</h4>
-
-<ul>
-  <li>Em alguns casos, podem ocorrer problemas com o
- <code>AccountManagerService</code> que impedem o login em contas do Google.
-  </li>
-</ul>
-
-<h4>Atualização do sistema</h4>
-
-<ul>
-  <li>O dispositivo pode reinicializar imediatamente após atualizar para o DP2.
-  </li>
-</ul>
-
-<h4>Acessibilidade</h4>
-
-<ul>
-  <li>Problemas ao ouvir a produção de texto para voz (TTS) quando o valor de inclinação está configurado
- quase no nível máximo.
-  </li>
-</ul>
-
-<h4>Bluetooth</h4>
-
-<ul>
-  <li>Características do Bluetooth Low Energy (LE) GATT usam o tipo de gravação
- errado e não serão enviadas a um dispositivo remoto. Assim, por exemplo, alguns dispositivos de fitness
- não funcionarão.
-  </li>
-</ul>
-
-<h4>Assistente de configuração</h4>
-
-<ul>
-  <li>A opção de restaurar dados em um dispositivo novo (ou dispositivo recentemente redefinido) da
- “Your Google Account” não pode ser realizada no assistente de configuração. Você deve restaurar os
- dados de um dispositivo existente selecionando “another Android device” no
- assistente de configuração ou configurá-lo como um novo dispositivo.
-  </li>
-</ul>
-
-<h4>Desbloquear OEM</h4>
-
-<ul>
-  <li>Em alguns dispositivos, <strong>Enable OEM unlock</strong> está desabilitado em
- “Developer Options” durante o uso do DP2.<br>
-  <strong>Solução alternativa:</strong> Inscreva-se no
- programa beta do Android (se ainda não estiver inscrito) acessando
- <a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a>. Depois, inscreva-se e aceite fazer
- o downgrade OTA. Cancelar a inscrição causa o downgrade para o Android 6.0. Agora você
- deve poder escolher <strong>Enable OEM unlock</strong> em
-  “Developer Options”. Os dados pessoais são apagados após o downgrade do
- dispositivo; entretanto, o desbloqueio do bootloader pode já ter apagado esses dados.
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>Desafio de segurança de perfil de trabalho
-    <ul>
-      <li>Após a migração para o N ou após o usuário criar perfis de trabalho, os
- perfis de trabalho não podem criar chaves no armazenamento de chaves até o usuário alterar o
- padrão, o PIN ou a senha ou configurar um Desafio do Work.
-      </li>
-
-      <li>No modo de inicialização direta, aplicar as restrições de senha ao dispositivo
- faz com que o perfil de trabalho seja desbloqueado, mesmo se o dispositivo estiver bloqueado.
-      Isso torna o perfil de trabalho acessível, mesmo que ele deva estar protegido
- pela tela de bloqueio do dispositivo.
-      </li>
-    </ul>
-  </li>
-
-  <li>Always on VPN
-    <ul>
-      <li>Se modo Always on VPN estiver ativado, mas uma VPN não estiver disponível, os aplicativos
- se conectarão pela rede comum. Os aplicativos devem ficar off-line se não há nenhuma
- conexão VPN disponível.
-      </li>
-
-      <li>Quando o modo Always On estiver ativado, a conexão por VPN não será estabelecida após
- um dispositivo reiniciar no modo de reinicialização direta, mesmo se o usuário desbloquear a
- tela de bloqueio protegida.
-      </li>
-    </ul>
-  </li>
-
-  <li>Suspensão de pacotes
-    <ul>
-      <li>Os administradores do dispositivo podem suspender pacotes críticos do sistema, o que pode provocar
- comportamentos inesperados, como realizar chamadas apesar de a caixa de diálogo “Telephone
-      disabled” ser exibida.
-      </li>
-    </ul>
-  </li>
-
-  <li>Outros
-    <ul>
-      <li>O aplicativo de Configurações falha durante a inicialização se {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} está configurado como verdadeiro quando
- o usuário insere mídias físicas, como um cartão SD.
-      </li>
-
-      <li>A primeira verificação em um Perfil de trabalho leva vários minutos para
- ser concluída.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4 id="vulkan">Vulkan:</h4>
-
-<ul>
-   <li>Nexus 5X/6P</li>
-   <ul>
-      <li>Lacunas entre números de vinculação e outro número diferente de zero
- como o primeiro número de vinculação faz com que {@code vkCreateGraphicsPipeline()} falhe.</li>
-      <li>O Vulkan exibe comportamento de amostragem incorreto em coordenadas projetadas de textura.</li>
-      <li>na amostra multithreadCmdBuffer, {@code vkCmdClearColorImage()} falha quando
- é executado com o driver N-DP2.</li>
-      <li>Valores de retorno do {@code vkGetPhysicalDeviceFormatProperties()} não configuram um valor
- para {@code VkFormatProperties::linearTilingFeatures}, que considera um valor de 0 como
- um resultado.</li>
-      <li>Anexos do buffer de quadro de ponto flutuante do Vulkan não são tratados corretamente.</li>
-    </ul>
-   <li>Nexus Player</li>
-   <ul>
-      <li>Sombreadores SPIR-V podem acionar afirmações de driver.</li>
-      <li>Algumas configurações de pipeline podem fazer {@code vkCreateGraphicsPipeline()}
- falhar.</li>
-  </ul>
-</ul>
-
-<h4>Problemas específicos de dispositivos</h4>
-
-<dl>
-  <dt>
-    <strong>Android One</strong>
-  </dt>
-
-  <dd>
-    A conexão de dados falha quando o dispositivo é alternado do slot 1 para o slot 2 do SIM.
-  </dd>
-
-  <dt>
-    <strong>Pixel C</strong>
-  </dt>
-
-  <dd>
-    Impossível ativar a opção “Always On” da Pesquisa de voz.
-  </dd>
-
-  <dt>
-    <strong>Nexus 6</strong>
-  </dt>
-
-  <dd>
-    Fotos da Câmera na orientação retrato ficam corrompidas, exceto em
- fotos HDR+.
-  </dd>
-
-  <dt>
-    <strong>Nexus Player</strong>
-  </dt>
-
-  <dd>
-    A reprodução de conteúdo HD do Netflix pode falhar no Nexus Player.
-  </dd>
-
-  <dd>
-    Qualquer aplicativo que depende de alterações dinâmicas da resolução de vídeo pode falhar no
- Nexus Player.
-  </dd>
-
-  <dd>
-    Qualquer aplicativo que usa o codec de vídeo VP9 pode falhar no Nexus Player.
-  </dd>
-</dl>
-
-<!-- DP 1 release notes archive -->
-
-<h2 id="dp1">Developer Preview 1</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Data: Março de 2016<br>
-        Versões: NPC56P, NPC56R, atualizada: NPC56W, NPC56X<br>
-        Suporte do emulador: x86 &amp; ARM (32/64 bits)<br>
-        Serviços Google Play: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp1-general">Alertas gerais</h3>
-
-<p>
-  Esta versão do Developer Preview é apenas para desenvolvedores de aplicativos e foi projetada para
- uso apenas em testes de compatibilidade e desenvolvimento inicial. Esteja ciente
- destas notas gerais sobre a versão:
-</p>
-<ul>
-  <li>Esta versão tem diversos problemas de estabilidade e desempenho em todos os dispositivos,
- portanto, <em>não é adequada para uso diário em celulares ou tablets</em>,
- especialmente para quem não é desenvolvedor.
-  </li>
-
-  <li>Sabe-se que o desempenho do sistema e de aplicativos fica <strong>lento/instável
- periodicamente</strong> e o dispositivo pode parar de responder ocasionalmente. Esses
- problemas podem aumentar com o uso prolongado.
-  </li>
-
-  <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
- desligar a tela.
-  </li>
-
-  <li>Alguns aplicativos podem não funcionar normalmente no Developer Preview 1. Isso inclui
- aplicativos do Google e outros aplicativos.
-  </li>
-
-  <li>Esta versão inicial não foi aprovada pelo Compatibility Test Suite (CTS). Aplicativos
- que dependem de versões aprovadas pelo CTS não funcionarão (por exemplo, o Android Pay).
-  </li>
-
-  <li>Essa versão de prévia é compatível com os dispositivos a seguir: Nexus 5X, Nexus 6,
-  Nexus 6P, Nexus 9, Nexus Player e Pixel C, assim como o General Mobile 4G
-  (Android One).
-  </li>
-</ul>
-
-<h3 id="dp1-platform">Problemas da plataforma</h3>
-
-<h4>Desempenho e bateria</h4>
-
-<ul>
-  <li>Sabe-se que o desempenho do sistema e de aplicativos fica <strong>lento/instável
- periodicamente</strong> e o dispositivo pode parar de responder ocasionalmente. Esses
- problemas podem aumentar com o uso prolongado.
-  </li>
-
-  <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
- desligar a tela.
-  </li>
-</ul>
-<h4 id="dialer">Discador</h4>
-
-<ul>
-  <li>O aplicativo Discador não é compatível com a inicialização direta. Isso será resolvido mais tarde no
- N Developer Preview.
-  </li>
-
-  <li>A reprodução do correio de voz não funciona.
-  </li>
-</ul>
-
-<h4>Microfone</h4>
-
-<ul>
-   <li>O sistema pode incorretamente manter o microfone no estado mudo em todos os aplicativos e reinicializações. Se você colocar o microfone no mudo em um aplicativo e o estado persistir, abra qualquer aplicativo que tenha controles de som do telefone e desative o mudo.</li>
-</ul>
-
-<h4 id="ui">IU do sistema</h4>
-
-<ul>
-  <li>Algumas strings novas ou modificadas na IU do sistema não foram traduzidas para todos
- os idiomas.
-  </li>
-
-  <li>A IU de visão geral ainda está em desenvolvimento e está sujeita a alterações. Por exemplo,
- pretendemos remover o temporizador que aparece quando o usuário alterna entre
- aplicativos.
-  </li>
-
-  <li>Os controles e botões de alternância das configurações podem ficar lentos ou parecer que pararam de responder.
-  </li>
-
-  <li>O design visual das notificações está sujeito a alterações.
-  </li>
-
-  <li>No aplicativo Gmail, o arquivamento direto de e-mails inclusos em um
- pacote de notificações não funciona corretamente.
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>Desafio de segurança de perfil de trabalho
-    <ul>
-      <li>Após a migração para o N ou após o usuário criar perfis de trabalho, os
- perfis de trabalho não podem criar chaves no armazenamento de chaves até o usuário alterar o
- padrão, o PIN ou a senha ou configurar um Desafio do Work.
-      </li>
-
-      <li>No modo de inicialização direta, aplicar as restrições de senha ao dispositivo
- faz com que o perfil de trabalho seja desbloqueado, mesmo se o dispositivo estiver bloqueado.
-      Isso torna o perfil de trabalho acessível, mesmo que ele deva estar protegido
- pela tela de bloqueio do dispositivo.
-      </li>
-
-      <li>Quando o usuário insere senha e PIN errados, o sistema não
- exibe nenhuma mensagem informativa; em vez disso, ele apenas limpa o campo
- de entrada. Esse problema não afeta a entrada de padrão ou impressão digital.
-      </li>
-
-      <li>Em um tablet, o segundo plano exibido com o desafio do perfil de trabalho é
- desproporcionalmente pequeno.
-      </li>
-
-      <li>A versão da <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">
- Política do dispositivo do Google Apps</a> empacotada com o N Developer Preview
- ainda não é compatível com o recurso de Desafio de segurança de perfil de trabalho.
-        Em vez disso, os desenvolvedores devem usar <a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a>
- para testar esse recurso.
-      </li>
-    </ul>
-  </li>
-
-  <li>Always on VPN
-    <ul>
-      <li>Se o modo Always on VPN estiver ativado, mas uma VPN não estiver disponível, os aplicativos
- não especificados como exceções na política Always on se conectarão via
- rede comum. Exceto quando especificados como exceções na política Always on,
- os aplicativos deverão ficar off-line se não houver nenhuma conexão VPN disponível.
-        <ul>
-          <li>Quando o modo Always On estiver ativado, a conexão por VPN não será estabelecida
- após um dispositivo reiniciar no modo de reinicialização direta, mesmo se o usuário
- desbloquear a tela de bloqueio protegida.
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>Contatos aprimorados
-    <ul>
-      <li>Dispositivos Bluetooth PBAP/MAP não exibem a identificação de chamadas para
- contatos de trabalho. A próxima versão do Preview corrige esse problema.
-      </li>
-    </ul>
-  </li>
-
-  <li>Modo de trabalho
-    <ul>
-      <li>O Google Now Launcher não mostra se o Modo de trabalho está ativado ou
- desativado. O Launcher também não exibe o estado de suspensão do aplicativo.
-      </li>
-
-      <li>Após o usuário desativar e ativar o Modo de trabalho, o sistema não exibe mais os
- widgets de aplicativos do perfil de trabalho, como a Agenda.
-      </li>
-    </ul>
-  </li>
-
-  <li>Suspensão de pacotes
-  </li>
-
-  <li>Os administradores do dispositivo podem suspender pacotes críticos do sistema, o que pode provocar
- comportamentos inesperados, como realizar chamadas apesar de a caixa de diálogo Telephone
-      disabled ser exibida.
-  </li>
-
-  <li>Outros
-    <ul>
-      <li>O aplicativo de Configurações falha durante a inicialização se {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} está configurado como verdadeiro quando
- o usuário insere mídias físicas, como um cartão SD.
-      </li>
-
-      <li>O estado {@code DPM.setPackagesSuspended} não persiste quando o
- usuário desinstala e reinstala um aplicativo. O aplicativo deve continuar
- suspenso após a desinstalação/reinstalação ou os aplicativos suspensos não podem ser
- desinstalados.
-      </li>
-
-      <li>A primeira verificação em um Perfil de trabalho leva vários minutos para
- ser concluída. Isso pode fazer com que o aplicativo demore mais que o normal para se tornar
- visível na Play EMM API.
-      </li>
-
-      <li>Notificações dos aplicativos do perfil de trabalho não são visíveis para
- detectores de notificações instalados no perfil pessoal. Como resultado, o sistema
- não exibe Notificações conforme esperado.
-      </li>
-
-    </ul>
-  </li>
-</ul>
-
-<h4 >Teclado</h4>
-
-<ul>
-  <li>O pareamento por Bluetooth entre teclados e dispositivos Android pode ser instável.
-  </li>
-</ul>
-
-<h4 >Vídeo</h4>
-
-<ul>
-<li>A reprodução de vídeos pode demorar e exibir interrupções.</li>
-</ul>
-
-<h4>Wi-Fi</h4>
-
-<ul>
-  <li>Wi-Fi passou por refatoramento que pode alterar o
- comportamento de caso isolado da API. Especificamente, aplicativos que tentarem se conectar
- a redes específicas ou que tentarem se reconectar a redes deverão ser testados novamente.
-  </li>
-
-  <li>O cliente DHCP legado foi removido da plataforma. O único
- cliente DHCP compatível com a plataforma é o cliente DHCP introduzido no M.
-  </li>
-</ul>
-
-<h4>Inicialização direta</h4>
-
-<ul>
-  <li>NFC não funciona até o primeiro desbloqueio.
-    <ul>
-      <li>Quando um celular com Bluetooth habilitado é reiniciado, o Bluetooth não
- ativa automaticamente. Você deve reativar o Bluetooth manualmente.
-      </li>
-
-      <li>Sob certas circunstâncias, o toque padrão pode não soar para
- chamadas e mensagens de telefone. Esse comportamento foi corrigido na próxima
- versão do N Preview, com uma exceção (e solução alternativa):
-      </li>
-
-      <li>Em um dispositivos que não tenha sido apagado recentemente -- um que foi inicializado pelo
- menos uma vez desde que foi configurado no modo de inicialização direta -- o
- toque padrão de notificação não soa. O usuário pode resolver esse problema
- selecionando um toque manualmente em Settings.
-      </li>
-
-      <li>A inicialização direta não está ativa por padrão em dispositivos com uma versão do N
- Developer Preview. Para ativar a inicialização direta para testes e
- desenvolvimento, acesse Developer Options e toque em Convert to File Encryption.
-      Nesta prévia de desenvolvedor, isso requer uma reconfiguração de fábrica para fazer o reparticionamento e
- a reformatação do dispositivo para a criptografia baseada em arquivos.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Imagem em imagem para Android TV</h4>
-
-<ul>
-  <li>A integração PIP na IU de Recents não foi finalizada e está sujeita a
- alterações.
-    <ul>
-      <li>A animação da janela PIP não é perfeita. Versões futuras do
- Preview melhorarão isso.
-      </li>
-    </ul>
-  </li>
-
-  <li style="list-style: none">Versões futuras do Preview melhorarão
- o design visual e o alinhamento do layout de PIP.
-  </li>
-</ul>
-
-<h4>Relatórios de erros</h4>
-
-<ul>
-  <li>Os relatórios de erros nem sempre são completados com sucesso (como solução alternativa,
- às vezes eles ainda podem ser acessados usando o fornecedor de documentação do relatório de erros
- no armazenamento interno).
-  </li>
-</ul>
-
-<h4>Várias janelas em tela dividida</h4>
-
-<ul>
-  <li>Os aplicativos podem falhar e apresentar comportamentos inesperados da IU quando colocados em
- modo de tela dividida. Esses são problemas de aplicativo que devem ser corrigidos pelo
- desenvolvedor do aplicativo.
-  </li>
-
-  <li>Quando o aplicativo é destinado para uma versão da plataforma Android anterior ao N,
- ele pode não funcionar com avisos de tela dividida que aparecem diversas vezes.
-  </li>
-
-  <li>Manter pressionado o botão Overview enquanto usa um aplicativo com uma
- orientação corrigida pode provocar um comportamento inesperado do aplicativo.
-  </li>
-
-  <li>Os aplicativos podem tremular durante o redimensionamento.
-  </li>
-
-  <li>As animações ainda não estão finalizadas.
-  </li>
-</ul>
-
-<h4>Método de entrada</h4>
-
-<ul>
-  <li>O Teclado do Google volta inesperadamente ao teclado genérico do Google
- quando <b>usa idiomas do sistema</b>, mas o Teclado do Google não é compatível com nenhum
- dos idiomas selecionados nas preferências de idioma do sistema. Ele deve
- voltar para inglês americano.
-    <p>
-      Alternativamente, você pode solucionar esse problema adicionando ao menos um idioma compatível com o
- Teclado do Google.
-    </p>
-  </li>
-</ul>
-
-<h4>Acessibilidade</h4>
-
-<ul>
-  <li>TalkBack exibe problemas com recursos, incluindo Notifications, Quick
-  Settings Tiles e exibição de várias janelas, que podem causar falhas no sistema ou
- uma falta de feedback falado do TalkBack. Versões futuras do Preview
- resolverão esses problemas.
-  </li>
-</ul>
-
-<h3 id="dp1-device-sp">Observações e problemas específicos de dispositivos</h3>
-
-<h4>Nexus Player</h4>
-<ul>
-  <li>Problemas de reprodução de vídeo, compatibilidade de aplicativo e estabilidade são esperados no
- Nexus Player nesta versão do Preview.
-  </li>
-</ul>
-
-<h4>Pixel C</h4>
-<ul>
-<li>O redimensionamento de várias janelas pode causar falhas.</li>
-</ul>
-
-<h4>Nexus 9</h4>
-<ul>
-<li>Dispositivos Nexus 9 podem não ligar após receberem atualizações OTA
- via programa beta do Android. Para se recuperar desse problema, você deve tentar
- instalar manualmente a imagem OTA. Para obter mais informações, consulte
- <a href="{@docRoot}preview/download-ota.html">Aplicação de uma imagem OTA de dispositivo</a>.
-</li>
-</ul>
-
diff --git a/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd b/docs/html-intl/intl/pt-br/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
rename to docs/html-intl/intl/pt-br/training/articles/direct-boot.jd
index 8f58841..d95f4cd 100644
--- a/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/pt-br/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Neste documento</h2>
   <ol>
     <li><a href="#run">Solicitar acesso para executar durante a inicialização direta</a></li>
diff --git a/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/pt-br/training/articles/scoped-directory-access.jd
similarity index 92%
rename from docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/pt-br/training/articles/scoped-directory-access.jd
index 6a58d76..215afd1 100644
--- a/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/pt-br/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Neste documento</h2>
   <ol>
     <li><a href="#accessing">Acessar um diretório de armazenamento externo</a></li>
@@ -71,8 +71,8 @@
 <p>O sistema tenta conceder acesso ao diretório externo e,
 se necessário, confirma o acesso com o usuário usando uma 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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>Figura 1.</strong> Um aplicativo solicitando
 acesso ao diretório Pictures.</p>
 
@@ -138,8 +138,8 @@
 negativa para o usuário. Se uma solicitação for negada pelo usuário e o aplicativo solicitar acesso
 novamente, a IU exibirá uma caixa de seleção <b>Não perguntar novamente</b>.</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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-dont-ask_2x.png 2x" />
 <p class="img-caption"><strong>Figura 1.</strong> Um aplicativo que faz uma
 segunda solicitação para acesso à mídia removível.</p>
 
diff --git a/docs/html-intl/intl/pt-br/preview/features/security-config.jd b/docs/html-intl/intl/pt-br/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/pt-br/preview/features/security-config.jd
rename to docs/html-intl/intl/pt-br/training/articles/security-config.jd
index 27d8f2e..2ba9b60 100644
--- a/docs/html-intl/intl/pt-br/preview/features/security-config.jd
+++ b/docs/html-intl/intl/pt-br/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Neste documento</h2>
 <ol>
diff --git a/docs/html-intl/intl/pt-br/preview/features/data-saver.jd b/docs/html-intl/intl/pt-br/training/basics/network-ops/data-saver.jd
similarity index 99%
rename from docs/html-intl/intl/pt-br/preview/features/data-saver.jd
rename to docs/html-intl/intl/pt-br/training/basics/network-ops/data-saver.jd
index f42b9cf..a9803b8 100644
--- a/docs/html-intl/intl/pt-br/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/network-ops/data-saver.jd
@@ -4,8 +4,8 @@
 page.image=images/cards/card-nyc_2x.jpg
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>
       Neste documento
     </h2>
@@ -231,4 +231,4 @@
     Adiciona o UID do pacote especificado à lista de permissões para bloquear o uso de dados
  de segundo plano tarifados enquanto a Economia de dados estiver ativada.
   </dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd b/docs/html-intl/intl/pt-br/training/tv/playback/picture-in-picture.jd
similarity index 97%
rename from docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/pt-br/training/tv/playback/picture-in-picture.jd
index 4bdc545..baa7d61 100644
--- a/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/pt-br/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Neste documento</h2>
 <ol>
@@ -59,7 +59,7 @@
 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" />
+<img src="{@docRoot}images/android-7.0/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>
@@ -116,7 +116,7 @@
 <p>Adicionar um botão de PIP à 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" />
+<img src="{@docRoot}images/android-7.0/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>
 
diff --git a/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd b/docs/html-intl/intl/pt-br/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/pt-br/training/tv/tif/content-recording.jd
index 890e140..c6d7bb7 100644
--- a/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/pt-br/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Neste documento</h2>
   <ol>
     <li><a href="#supporting">Indicar suporte para gravação</a></li>
diff --git a/docs/html-intl/intl/ru/preview/behavior-changes.jd b/docs/html-intl/intl/ru/about/versions/nougat/android-7.0-changes.jd
similarity index 98%
rename from docs/html-intl/intl/ru/preview/behavior-changes.jd
rename to docs/html-intl/intl/ru/about/versions/nougat/android-7.0-changes.jd
index a048660..11a2495 100644
--- a/docs/html-intl/intl/ru/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/ru/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Содержание документа</h2>
 
@@ -74,7 +74,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>Рис. 1.</strong> Иллюстрация применения первого уровня ограничений активности системы в режиме Doze
 для экономии заряда аккумулятора.
@@ -93,7 +93,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" />
 <p class="img-caption">
   <strong>Рис. 2.</strong> Иллюстрация применения второго уровня ограничений активности системы в режиме Doze
 после того, как устройство неподвижно в течение определенного времени.
@@ -229,10 +229,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/ru/preview/samples.jd b/docs/html-intl/intl/ru/about/versions/nougat/android-7.0-samples.jd
similarity index 82%
rename from docs/html-intl/intl/ru/preview/samples.jd
rename to docs/html-intl/intl/ru/about/versions/nougat/android-7.0-samples.jd
index 1f674f3..d1dcdb7 100644
--- a/docs/html-intl/intl/ru/preview/samples.jd
+++ b/docs/html-intl/intl/ru/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <h3 id="mw">Многооконный режим</h3>
-<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<img src="{@docRoot}images/android-7.0/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
 <p>
   В данном примере показаны преимущества многооконного
 интерфейса для вашего приложения.
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   В этом ранее созданном примере показана простая служба, которая отправляет
 уведомления с помощью NotificationCompat. Каждое непрочитанное сообщение от пользователя
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
 <p>
   В этом предварительно созданном примере показано, как использовать
 NotificationManager для определения количества уведомлений,
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   В данном примере показано как сохранять и считывать данные в зашифрованном
 хранилище, которое всегда доступно только на загруженном устройстве.
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   В данном примере показано, как выполнять чтение и запись данных из определенных
 каталогов при уменьшении числа требуемых разрешений.
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
 Загрузить с сайта GitHub</a>
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/about/versions/nougat/android-7.0.jd
similarity index 98%
rename from docs/html-intl/intl/ru/preview/api-overview.jd
rename to docs/html-intl/intl/ru/about/versions/nougat/android-7.0.jd
index 887ea63..24a93a8 100644
--- a/docs/html-intl/intl/ru/preview/api-overview.jd
+++ b/docs/html-intl/intl/ru/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Основные возможности для разработчиков</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -70,7 +70,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
 <p class="img-caption">
   <strong>Рис. 1.</strong> Приложения в режиме разделенного экрана.
 </p>
@@ -126,15 +126,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -261,7 +261,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>Рис. 4.</strong> Настройка экономии трафика.
@@ -296,7 +296,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
 
 <p class="img-caption" style="padding-left:2em;">
   <strong>Рис. 5.</strong> Плитки быстрых настроек в панели уведомлений.
diff --git a/docs/html-intl/intl/ru/preview/index.jd b/docs/html-intl/intl/ru/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/ru/preview/index.jd
rename to docs/html-intl/intl/ru/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/ru/design/patterns/notifications.jd b/docs/html-intl/intl/ru/design/patterns/notifications.jd
deleted file mode 100644
index 4d339c2..0000000
--- a/docs/html-intl/intl/ru/design/patterns/notifications.jd
+++ /dev/null
@@ -1,872 +0,0 @@
-page.title=Уведомления
-page.tags="notifications","design","L"
-@jd:body
-
-  <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>Документация для разработчиков</h3>
-    <p>Уведомление пользователя</p>
-  </div>
-</a>
-
-<a class="notice-designers" href="notifications_k.html">
-  <div>
-    <h3>Уведомления в Android версии 4.4 и ниже</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>Видеоролик</h3>
-    <p>DevBytes: Уведомления в Android L Developer Preview</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>Уведомления позволяют извещать пользователя о релевантных и
-периодически возникающих
-событиях в приложении, таких как новые сообщения в чате или события в календаре.
-Систему уведомлений можно рассматривать как канал новостей, извещающий пользователя о важных
-событиях по мере
-их возникновения, или как журнал, ведущий хронику событий, пока пользователь не обращает на них
-внимания, и синхронизируемый должным образом на всех устройствах Android этого пользователя.</p>
-
-<h4 id="New"><strong>Новые возможности Android 5.0</strong></h4>
-
-<p>В Android 5.0 уведомления были существенно обновлены структурно,
-визуально, и функционально:</p>
-
-<ul>
-  <li>был изменен внешний вид уведомлений в соответствии с новой
-темой Material Design;</li>
-  <li> теперь уведомления доступны на экране блокировки, в то время как
-конфиденциальная информация по-прежнему
- может быть скрыта;</li>
-  <li>уведомления с высоким приоритетом, полученные при включенном устройстве, теперь имеют новый формат и называются
- уведомлениями Heads-up;</li>
-  <li>уведомления синхронизируются с облаком: если удалить уведомление на одном из устройств
-Android, оно будет удалено
- и на остальных устройствах.</li>
-</ul>
-
-<p class="note"><strong>Примечание.</strong> Разработка уведомлений в этой версии
-Android значительно
-отличается от их разработки в предыдущих версиях. Информацию о разработке уведомлений в предыдущих
-версиях можно найти в разделе <a href="./notifications_k.html">Уведомления в Android версии 4.4 и ниже</a>.</p>
-
-<h2 id="Anatomy">Структура уведомления</h2>
-
-<p>В этом разделе описываются основные компоненты уведомления и их
-отображение на устройствах различных типов.</p>
-
-<h3 id="BaseLayout">Базовая компоновка</h3>
-
-<p>Все уведомления имеют, как минимум, базовую компоновку, которую составляют следующие элементы.</p>
-
-<ul>
-  <li> <strong>Значок</strong> уведомления. Значок символизирует
-инициирующее приложение. Он также может
-  указывать на тип уведомления, если приложение генерирует уведомления нескольких
-типов.</li>
-  <li> <strong>Заголовок</strong> уведомления и дополнительный
-<strong>текст</strong>.</li>
-  <li> <strong>Временная метка</strong>.</li>
-</ul>
-
-<p>Уведомления, созданные с помощью {@link android.app.Notification.Builder Notification.Builder}
-для предыдущих версий платформы, выглядят и функционируют в Android
-5.0 так же, как и прежде, за исключением незначительных стилистических отличий, вносимых
-системой. Дополнительную информацию о внешнем виде и функциональности уведомлений в предыдущих версиях
-Android можно найти в разделе
-<a href="./notifications_k.html">Уведомления в Android версии 4.4 и ниже</a>.</p></p>
-
-
-    <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      Уведомление в базовой компоновке на мобильном устройстве (слева) и то же уведомление на носимом устройстве (справа)
-      с фотографией пользователя и значком уведомления
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">Расширенная компоновка</h3>
-
-
-<p>Разработчик может выбрать степень подробности уведомлений, генерируемых его
-приложением. Уведомление может содержать первые
-несколько строк сообщения или миниатюру изображения. В качестве дополнительной
-информации можно предоставлять пользователю
-контекст и, &mdash;в некоторых случаях, &mdash;давать ему возможность прочитать сообщение
-целиком. Чтобы переключаться
- между компактной и расширенной компоновкой, пользователь может применить жест сжатия/масштабирования или
-провести пальцем по экрану.
- Для уведомлений о единичных событиях Android предоставляет
- разработчику приложения три шаблона расширенной компоновки
-(текст, входящая почта и изображения). Ниже приведены скриншоты уведомлений о единичных
-событиях на мобильных устройствах (слева)
- и на носимых устройствах (справа).</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">Действия</h3>
-
-<p>Android поддерживает дополнительные действия, отображаемые в нижней части
-уведомления.
-Благодаря этому пользователи могут выполнять операции, типичные для данного
-уведомления, непосредственно из него, не открывая
-само приложение.
-Это ускоряет взаимодействие и, вместе с операцией "провести пальцем, чтобы удалить", позволяет пользователю сосредоточиться на
-важных для него уведомлениях.</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" />
-
-
-
-<p style="clear:both">При определении количества действий в уведомлении следует проявлять
-благоразумие. Чем больше
-действий предоставлено пользователю, тем выше когнитивная сложность приложения. Ограничьтесь
-минимальным количеством
-действий, предоставив пользователю наиболее важные и
-значимые.</p>
-
-<p>В уведомлениях отдавайте предпочтение действиям</p>
-
-<ul>
-  <li> важным, выполняемым наиболее часто и типичным для отображаемого
-содержимого;
-  <li> позволяющим пользователю быстрее решить задачу.
-</ul>
-
-<p>Избегайте действий</p>
-
-<ul>
-  <li> неоднозначных;
-  <li> совпадающих с действиями, выполняемыми для данного уведомления по умолчанию (например, "Прочитать" или
-"Открыть").
-</ul>
-
-
-
-<p>Следует предоставлять не более трех действий, указав для каждого
-значок и название.
- Добавление действий в базовую компоновку делает уведомление расширяемым,
-даже если
- оно не имеет расширенной компоновки. Поскольку действия отображаются только у
-расширенных
- уведомлений, необходимо, чтобы любое действие,
-которое пользователь может выполнить из
- уведомления, было доступно и в соответствующем
-приложении.</p>
-
-<h2 style="clear:left">Уведомления heads-up</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" />
-  <p class="img-caption">
-    Пример уведомления heads-up (входящий телефонный звонок, высокий приоритет),
-появляющегося поверх
-    приложения с эффектом присутствия
-  </p>
-</div>
-
-<p>Когда поступает уведомление с высоким приоритетом (см. изображение справа), оно в течение короткого времени
-отображается
-в расширенной компоновке, позволяя выполнить допустимые действия.</p>
-<p> Затем уведомление принимает обычный
-вид. Если для уведомления установлен высокий, максимальный или полноэкранный <a href="#correctly_set_and_manage_notification_priority">приоритет</a>
-, оно становится уведомлением heads-up.</p>
-
-<p><b>Хорошими примерами событий для уведомлений heads-up являются</b></p>
-
-<ul>
-  <li> входящий телефонный звонок, во время использования устройства;</li>
-  <li> сигнал будильника во время использования устройства;</li>
-  <li> новое SMS-сообщение;</li>
-  <li> низкий уровень заряда аккумулятора.</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">Основные рекомендации</h2>
-
-
-<h3 id="MakeItPersonal">Персонализируете уведомление</h3>
-
-<p>Уведомление о событии, инициированном другим пользователем (например, сообщение или
-обновление статуса), должно содержать изображение пользователя, добавленное с помощью
-{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Кроме того, в метаданные уведомления необходимо включить информацию о
-пользователе (см. {@link android.app.Notification#EXTRA_PEOPLE}).</p>
-
-<p>Главный значок уведомления будет по-прежнему отображаться, чтобы пользователь мог связать
-его со значком
-на строке состояния.</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" />
-<p style="margin-top:10px" class="img-caption">
-  Уведомление, идентифицирующее пользователя-инициатора, и отображающее отправленное содержимое.
-</p>
-
-
-<h3 id="navigate_to_the_right_place">Выполняйте переход в нужное место</h3>
-
-<p>Когда пользователь касается тела уведомления (за пределами кнопок
-с действиями), должен осуществляться переход в то место приложения,
-где пользователь сможет просмотреть информацию, о которой извещает уведомление, и действовать в соответствии
-с нею. В большинстве случаев там будет находиться подробное представление одного элемента данных, например, сообщения,
-но возможно и
-сокращенное представление, если накопилось несколько уведомлений. Если приложение переводит
-пользователя на какой-либо уровень, отличный от верхнего, реализуйте навигацию в стеке переходов назад в приложении, чтобы
-пользователь мог нажать системную кнопку "Назад" и вернуться на верхний уровень. Дополнительную информацию можно найти в разделе
-<em>Навигация внутрь приложения с помощью виджетов и уведомлений главного экрана</em> в шаблоне проектирования
-<a href="{@docRoot}design/patterns/navigation.html#into-your-app">Навигация</a>.</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">Правильно выполняйте расстановку приоритетов уведомлений и
-управление ими
-</h3>
-
-<p>Android поддерживает флаг приоритета для уведомлений. Это флаг позволяет
-влиять на позицию уведомления среди других уведомлений и
-гарантировать,
-что пользователь в первую очередь увидит самые важные уведомления. При отправке уведомления можно выбрать один
-из
-следующих уровней приоритета:</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>Приоритет</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>Использование</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>Применяйте для наиболее важных и неотложных уведомлений, извещающих пользователя
-о ситуации,
-критичной по времени или такой, на которую необходимо отреагировать, чтобы продолжить
-выполнение задачи.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>Применяйте, в основном, для передачи важной информации, например, о сообщениях или событиях
-в чате с содержимым, представляющим особый интерес для пользователя.
-Уведомления с высоким приоритетом отображаются как уведомления heads-up.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>Применяйте для всех уведомлений, не входящих ни в одну из описанных здесь категорий.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>Применяйте для уведомлений, которые должны быть переданы пользователю, но
-не являются неотложными. Низкоприоритетные уведомления обычно появляются в конце списка,
-что позволяет использовать их
-для передачи информации, представляющей всеобщий интерес и не имеющей конкретной направленности. Например, если пользователь подписался
-на новости,
- эта информация не должна иметь преимущество перед неотложными или адресными
-сообщениями.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>Применяйте для уведомлений, с контекстной или фоновой информацией, такой как прогноз погоды, или с информацией,
-связанной с местоположением пользователя.
-Уведомления с минимальным приоритетом не отображаются в строке состояния. Пользователь
-обнаруживает их при раскрытии панели уведомления.</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>Как выбрать
-подходящий
-приоритет</strong></h4>
-
-<p>При выдаче уведомлений с приоритетами <code>DEFAULT</code>, <code>HIGH</code> и <code>MAX</code> существует риск, что деятельность
-пользователя будет прервана
-в самом разгаре. Чтобы не раздражать пользователей вашего приложения, применяйте приоритеты этих уровней для
-уведомлений,</p>
-
-<ul>
-  <li> имеющих отношение к другим пользователям;</li>
-  <li> быстро теряющих актуальность;</li>
-  <li> способных немедленно повлиять на поведение пользователя в реальном мире.</li>
-</ul>
-
-<p>Уведомления с приоритетом <code>LOW</code> и <code>MIN</code> могут представлять определенную ценность
-для пользователя. Значительное количество, если не большинство, уведомлений не требует немедленной
-реакции пользователя,  но, тем не менее, содержит информацию, которую пользователь сочтет
-ценной, когда решит
-просмотреть поступившие уведомления. Приоритеты уровней <code>LOW</code> и <code>MIN</code>
- следует присваивать уведомлениям,</p>
-
-<ul>
-  <li> не имеющим прямого отношения к другим пользователям;</li>
-  <li> долго не теряющим актуальность;</li>
-  <li> содержащим информацию, способную заинтересовать пользователя, если он решит
-просмотреть их в свободное время.</li>
-</ul>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" />
-
-
-<h3 style="clear:both" id="set_a_notification_category">Определите категорию
-уведомления</h3>
-
-<p>Если уведомление попадает в одну из заранее определенных категорий (см.
-ниже), укажите его
-категорию.  Процессы системного пользовательского интерфейса, например, панель уведомления (или любой
-другой процесс-слушатель
-уведомлений) могут воспользоваться этой информацией при классификации и фильтрации уведомлений.</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>Входящий звонок (голосовой или по видеосвязи) или алогичный запрос синхронной
-связи</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>Входящее личное сообщение (SMS-сообщение, мгновенное сообщение и т. д.)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>Асинхронное массовое сообщение (по электронной почте)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>Событие в календаре</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>Промоакция или реклама</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>Сигнал будильника или таймера</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>Информация о ходе выполнения длительной фоновой операции</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>Новости, поступившие из социальной сети или касающиеся совместного использования ресурсов</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>Ошибка в фоновой операции или статусе аутентификации</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>Управление передачей медиаданных для воспроизведения</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>Обновление статуса системы или устройства.  Зарезервировано для использования системой.</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>Индикация работающей фоновой службы</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>Конкретная и привязанная ко времени рекомендация относительно одного объекта.  Например, приложение
-новостей может
-порекомендовать пользователю, какую новость читать следующей.</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>Текущая информация о статусе устройства или контекста</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">Суммируйте уведомления</h3>
-
-<p>Если при наличии ожидающего уведомления определенного типа приложение пытается отправить новое
-уведомление того же типа, объедините их в одно сводное уведомление от этого приложения. Не
-создавайте новый объект.</p>
-
-<p>Сводное уведомление формирует сводное описание и дает пользователю возможность
-понять, сколько
-имеется ожидающих уведомлений того или иного типа.</p>
-
-<div class="col-6">
-
-<p><strong>Неправильно</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>Правильно</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" />
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">Разработчик может сообщить
-подробности об отдельных уведомлениях, образующих
- сводное, используя расширенную компоновку для резюме. Такой подход позволит пользователям
-лучше разобраться, какие
-уведомления ожидают прочтения, и достаточно ли они интересны, чтобы ознакомиться с ними
-более подробно в
- соответствующем приложении.</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" />
-  <p class="img-caption">
-  Расширенное и сжатое сводное уведомление (с использованием <code>InboxStyle</code>)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">Сделайте уведомления
-необязательными</h3>
-
-<p>В распоряжении пользователей всегда должен быть метод управления уведомлениями. Предоставьте пользователю возможность
-отключать уведомления, поступающие от вашего приложения,
-или изменять способы оповещения, такие как звуковой сигнал и
-вибрация.
- С этой целью следует предусмотреть пункт настройки уведомлений в настройках приложения.</p>
-
-<h3 id="use_distinct_icons">Используйте отчетливые значки</h3>
-<p>Беглого взгляда на область уведомлений должно быть достаточно, чтобы распознать
-типы
-ожидающих уведомлений.</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" />
-</div>
-
-  <div><p><strong>Правильно</strong></p>
-    <p>Рассмотрите уже существующие значки уведомлений от приложений Android и создайте
-собственные,
-    достаточно уникальные.</p>
-
-    <p><strong>Правильно</strong></p>
-    <p>Придерживайтесь подходящего <a href="/design/style/iconography.html#notification">стиля значков уведомления</a>
- для мелких значков, и
-    <a href="/design/style/iconography.html#action-bar">стиля строки
-действий</a> Material Light для значков
- действий.</p>
-<p ><strong>Правильно</strong></p>
-<p >Стремитесь к визуальной простоте значков, избегайте излишних трудноразличимых
-деталей.</p>
-
-  <div><p><strong>Неправильно</strong></p>
-    <p>Применяйте к мелким значкам и значкам действий дополнительные альфа-эффекты
-(постепенное появление/исчезание).
-    К их краям может быть применено сглаживание, но, поскольку в Android эти значки
-служат масками (то есть,
- используется только    альфа-канал), изображение, как правило, должно отображаться полностью
-непрозрачным.</p>
-
-</div>
-<p style="clear:both"><strong>Неправильно</strong></p>
-
-<p>Чтобы ваше приложение отличалось от других, используйте цвет. Значки уведомлений должны
-представлять собой изображение белого цвета на прозрачном фоне.</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">Правильно используйте индикатор
-уведомлений</h3>
-
-<p>На многих устройствах Android имеется светодиодный индикатор уведомлений,
-информирующий пользователя о
-событиях, когда экран выключен. Уведомления с приоритетом <code>MAX</code>,
-<code>HIGH</code> или <code>DEFAULT</code> должны
-вызывать свечение индикатора, а уведомления с низким приоритетом (<code>LOW</code> и
-<code>MIN</code>) не должны.</p>
-
-<p>Возможности пользователя управлять уведомлениями должны распространяться на светодиодный индикатор. Когда разработчик использует
-DEFAULT_LIGHTS,
-индикатор светится белым цветом. Ваши уведомления не должны вызывать свечение другим
-цветом, если
-пользователь не указал этого явным образом.</p>
-
-<h2 id="building_notifications_that_users_care_about">Создание уведомлений,
- важных для пользователя</h2>
-
-<p>Чтобы пользователям понравилось ваше приложение, необходимо тщательно
-продумать его уведомления.
-Уведомления — это голос приложения. Они определяют его
-индивидуальность. Ненужные или
-несущественные уведомления раздражают пользователя и заставляют его возмущаться тем, как много
-внимания требует от него
-приложение. Поэтому необходимо применять уведомления взвешенно.</p>
-
-<h3 id="when_to_display_a_notification">Ситуации, в которых следует показывать уведомления</h3>
-
-<p>Чтобы создать приложение, от работы с которым пользователи получат удовольствие, необходимо
-осознать, что внимание пользователя
- является ресурсом, требующим бережного обращения. Система уведомлений
-Android была разработана
-так, чтобы как можно меньше отвлекать пользователя.
-Однако
-вы должны отдавать себе отчет в том, что уведомления прерывают
-деятельность пользователя.
-Планируя уведомления, спрашивайте себя, достаточно ли они важны, чтобы
-послужить основанием для такого прерывания. В случае сомнений предоставьте пользователю возможность запросить
-в настройках приложения получение уведомления или измените
-приоритет уведомления на <code>LOW</code> или <code>MIN</code>, чтобы
-не отвлекать пользователя от
-текущих занятий.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   Примеры уведомлений, быстро теряющих актуальность
-  </p>
-
-<p>Хотя правильно работающие приложения ведут себя неназойливо, бывают ситуации,
-заслуживающие того, чтобы приложение по своей инициативе прервало деятельность пользователя уведомлением.</p>
-
-<p>Отправляйте уведомления только в случае <strong>событий, требующих неотложной реакции</strong>, особенно
- если эти синхронные события <strong>имеют прямое отношение к другим пользователям</strong>. Например,
-чат
- представляет собой форму синхронного общения в реальном времени, — другой пользователь
-с нетерпением ожидает вашего ответа. События в календаре являются еще одним хорошим примером ситуации, в которой следует выдать
-уведомление и завладеть
-  вниманием пользователя, потому что в приближающееся календарное событие часто
-вовлечены другие люди.</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">Ситуации,
-в которых не следует показывать уведомления</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" />
-</div>
-
-<p>В большинстве остальных случаев уведомления неуместны.</p>
-
-<ul>
-  <li> Не следует извещать пользователя о событиях, не имеющих отношения
-к нему конкретно, или
-  не теряющих актуальность со временем. Например, асинхронные
-и безадресные новости,
-  циркулирующие в социальных сетях, как правило, не требуют немедленного
-привлечения внимания. Пользователям,
-  действительно интересующимся таким новостями, предоставьте возможность запросить соответствующие уведомления.</li>
-  <li> Не генерируйте уведомление, если релевантная свежая информация уже находится
-на экране. Вместо этого
-  воспользуйтесь интерфейсом самого приложения, чтобы донести до пользователя новую информацию
-непосредственно в контексте.
-  Например, приложение-чат не должно генерировать системные уведомления,
-пока пользователь активно общается с собеседником.</li>
-  <li> Не отвлекайте пользователя ради низкоуровневых технических действий, такие как сохранение
-или синхронизация информации или обновление приложения, если приложение или система способны выполнить задачу
-без вмешательства пользователя.</li>
-  <li> Не отвлекайте пользователя, чтобы проинформировать его об ошибке, если
-приложение может восстановиться после нее самостоятельно, не требуя от пользователя
-никаких действий.</li>
-  <li> Не создавайте уведомления, не имеющие осмысленного содержимого и
-всего лишь рекламирующие ваше
-приложение. Уведомление должно нести полезную, актуальную и новую информацию. Не следует
-использовать его
-  исключительно для презентации приложения.</li>
-  <li> Не создавайте избыточные уведомления только для того, чтобы продемонстрировать свой бренд
-пользователям.
-  Такие уведомления раздражают и отталкивают аудиторию. Лучший
-способ сообщать
-  новую информацию небольшими порциями и поддерживать связь пользователей
-с вашим
- приложением заключается в том, чтобы разработать виджет, который они смогут поместить на
- главный экран.</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">Взаимодействие с
-уведомлениями</h2>
-
-<p>Уведомления обозначаются значками в строке состояния. Чтобы получить к ним доступ,
-следует открыть
-панель уведомлений.</p>
-
-<p>Если коснуться уведомления, откроется соответствующее приложение с подробным содержимым,
-связанным с эти уведомлением.
-Если провести пальцем по уведомлению влево или вправо, оно будет удалено из панели.</p>
-
-<h3 id="ongoing_notifications">Постоянные уведомления</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" />
-      <p class="img-caption">
-    Постоянные уведомления при воспроизведении музыки
-  </p>
-</div>
-<p>Постоянные уведомления информируют пользователя о текущих фоновых
-процессах.
-Например, плееры сообщают через систему уведомлений информацию о дорожке,
-воспроизводимой в данный момент, и
-это продолжается, пока пользователь не остановит воспроизведение. Кроме того, постоянные уведомления могут
-информировать пользователя
-о ходе выполнения длительных задач, таких как загрузка файла или кодирование видеоданных. Пользователь не может вручную
-удалить постоянное уведомление из панели уведомлений.</p>
-
-<h3 id="ongoing_notifications">Воспроизведение медиаданных</h3>
-<p>В Android 5.0 на экране блокировки не отображаются элементы управления воспроизведением от устаревшего
-класса {@link android.media.RemoteControlClient}. Однако на нем <em>отображаются</em> уведомления, так что теперь каждое
-уведомление приложения о воспроизведении является для пользователей основным
-способом управления воспроизведением в заблокированном состоянии. В результате у приложения появляется больше возможностей
-управлять тем, какие
-кнопки отображать, и каким образом. При этом с точки зрения пользователя система ведет себя непротиворечиво,
-независимо от того, заблокирован ли экран.</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">Диалоговые окна
-и всплывающие уведомления</h3>
-
-<p>Приложение, не отображаемое на экране, не должно генерировать диалоговое окно или всплывающее
-уведомление. Диалоговое окно или всплывающее уведомление
- должно появляться исключительно в качестве немедленной реакции на действия пользователя
-в приложении.
-Более подробные рекомендации по использованию диалоговых окон и всплывающих уведомлений см. в разделе
-<a href="/design/patterns/confirming-acknowledging.html">Подтверждение и уведомление</a>.</p>
-
-<h3>Упорядочение уведомлений по степени важности</h3>
-
-<p>По своей сути уведомления — это новости, и поэтому они принципиально отображаются в
-обратном хронологическом порядке.
-При этом обязательно принимается во внимание
-<a href="#correctly_set_and_manage_notification_priority">приоритет</a>, установленный приложением.</p>
-
-<p>Уведомления являются важной составляющей экрана блокировки и отображаются на видном месте
-каждый
-раз, когда включается дисплей устройства. На экране блокировки мало свободного места, поэтому
-исключительно важно
-выявлять неотложные или наиболее релевантные уведомления. По этой
-причине Android применяет
-сложный алгоритм сортировки уведомлений, в котором учитываются</p>
-
-<ul>
-  <li> временная метка и приоритет, установленный приложением;</li>
-  <li> тот факт, что уведомление только что оповестило пользователя звуковым сигналом
-или вибрацией (иными словами,
- если телефон издает звуки, и пользователь хочет узнать, в чем
-дело, то на экране блокировки
-  должен находиться ответ, понятный с первого взгляда);</li>
-  <li> пользователи, связанные с уведомлением при помощи {@link android.app.Notification#EXTRA_PEOPLE},
- и, в частности, присутствие их в списке помеченных контактов.</li>
-</ul>
-
-<p>Чтобы воспользоваться преимуществами этой сортировки наилучшим образом, думайте в первую очередь о создании
-удобных условий для
-пользователя, и не нацеливайтесь на конкретное место в рейтинге.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Уведомления от Gmail имеют
-приоритет DEFAULT, поэтому они
-  обычно оказываются ниже уведомлений от приложений мгновенного обмена сообщениями, таких как Hangouts, но
-поднимаются в списке
- на некоторое время, когда поступают новые сообщения.
-  </p>
-
-
-<h3>Уведомления на экране блокировки</h3>
-
-<p>Поскольку уведомления видны на экране блокировки, защита конфиденциальной информации пользователей приобретает
-особо
-важное значение. Уведомления нередко содержат частную информацию, и они
-не должны быть доступны
-каждому, кто взял в руки устройство и включил дисплей.</p>
-
-<ul>
-  <li> У устройств, экран блокировки которых защищен (при помощи PIN-кода, графического ключа или пароля), интерфейс имеет
- общедоступную и закрытую части. Элементы общедоступного интерфейса отображаются на защищенном экране блокировки и
- следовательно, видны всем. Закрытый интерфейс находится "позади" экрана блокировки и
-  доступен только пользователю, выполнившему вход в устройство.</li>
-</ul>
-
-<h3>Возможности пользователя контролировать информацию, отображаемую на экране блокировки</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" />
-      <p class="img-caption">
-    Уведомления на экране блокировки с содержимым, отображаемым после того, как пользователь разблокирует устройство.
-  </p>
-</div>
-
-<p>При настройке защиты экрана блокировки пользователь может предпочесть,
- чтобы конфиденциальные данные не отображались на защищенном экране блокировки. В этом случае системный пользовательский интерфейс
-учитывает <em>уровень видимости</em> уведомления, чтобы выяснить, какую информацию
-можно отображать без риска.</p>
-<p> Чтобы установить уровень видимости, вызовите
-<code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>
-и укажите одно из следующих значений:</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>.
-Содержимое уведомления отображается полностью.
-  Это значение принимается системой по умолчанию, если уровень видимости не указан.</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>.
-На экране блокировки отображается основная информация о наличии уведомления, включая его
-значок и название приложения, отправившего его. Прочие данные уведомления скрыты.
-Здесь уместно дать разработчику пару рекомендаций.
-  <ul>
-    <li> Если вы хотите реализовать отдельную общедоступную версию уведомления,
-которую система будет отображать на экране блокировки, создайте замещающий
-объект Notification в поле<code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>.
-
-    <li> Этот параметр предоставляет приложению возможность создавать "цензурированную" версию
-содержимого, достаточно информативную, но скрывающую личную информацию. Рассмотрим в качестве примера приложение для отправки
-SMS-сообщений. Его уведомления содержат текст SMS-сообщения и имя и контактный значок отправителя.
-Такое уведомление должно иметь атрибут <code>VISIBILITY_PRIVATE</code>, но его версия <code>publicVersion</code> может
-содержать полезную информацию, например, "3 новых сообщения", без уточняющих
-подробностей.
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>. Отображается минимум информации,
-даже без значка уведомления.</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Уведомления на
-Android Wear</h2>
-
-<p>По умолчанию уведомления и их <em>действия</em> передаются на носимые устройства.
-Разработчики могут управлять тем, какие уведомления следует передавать с
-телефона на часы,
-и наоборот. У разработчиков также есть возможность управлять передачей действий. Если
-приложение включает в себя
-действия, которые невозможно выполнить одним касанием, нужно либо скрывать их
-в уведомлениях, отображаемых на носимом
-устройстве, либо обеспечить их привязку к приложению под управлением Android Wear, позволив пользователю
-совершать действие
-на часах.</p>
-
-<h4>Передача уведомлений и действий на другое устройство</h4>
-
-<p>Подключенное устройство, например, телефон, может передавать уведомления на носимое устройство,
-чтобы они отображались и на нем. Аналогичным образом можно передавать действия, чтобы пользователь мог реагировать
-на уведомления непосредственно на носимом устройстве.</p>
-
-<p><strong>Передавайте</strong></p>
-
-<ul>
-  <li> новые мгновенные сообщения;</li>
-  <li> действия, выполняемые одним касанием, например, "+1", "Лайк", "Сердечко".</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" />
-
-<p><strong>Не передавайте</strong></p>
-
-<ul>
-  <li> уведомления о новых подкастах;</li>
-  <li> действия, соответствующие функциям, недоступным на часах.</li>
-</ul>
-
-
-
-<p><h4>Уникальные действия, определяемые для носимых устройств</h4></p>
-
-<p>Некоторые действия можно выполнить только на носимых устройствах, например:</p>
-
-<ul>
-  <li> выбор из списка шаблонных ответов, например, "Скоро вернусь"</li>
-  <li> действие "Открыть на телефоне";</li>
-  <li> действия "Прокомментировать" или "Ответить", открывающие окно речевого ввода;</li>
-  <li> действия, запускающие приложения, специфичные для Android Wear.</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" />
diff --git a/docs/html-intl/intl/ru/preview/j8-jack.jd b/docs/html-intl/intl/ru/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/ru/preview/j8-jack.jd
rename to docs/html-intl/intl/ru/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/ru/preview/features/multi-window.jd b/docs/html-intl/intl/ru/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/ru/preview/features/multi-window.jd
rename to docs/html-intl/intl/ru/guide/topics/ui/multi-window.jd
index b45766c..3583616 100644
--- a/docs/html-intl/intl/ru/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Содержание документа</h2>
       <ol>
         <li><a href="#overview">Обзор</a></li>
@@ -68,8 +68,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/mw-splitscreen_2x.png 2x," id="img-split-screen" />
 <p class="img-caption">
   <strong>Рис. 1.</strong> Два приложения отображаются рядом в режиме разделения экрана.
 </p>
diff --git a/docs/html-intl/intl/ru/preview/download.jd b/docs/html-intl/intl/ru/preview/download.jd
deleted file mode 100644
index 3af4a5a..0000000
--- a/docs/html-intl/intl/ru/preview/download.jd
+++ /dev/null
@@ -1,550 +0,0 @@
-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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </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/overview.jd b/docs/html-intl/intl/ru/preview/overview.jd
deleted file mode 100644
index 303e9ce..0000000
--- a/docs/html-intl/intl/ru/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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#dp1">Предварительная версия 1</a></strong> (первоначальный выпуск, альфа-версия)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Предварительная версия 2</a></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/setup-sdk.jd b/docs/html-intl/intl/ru/preview/setup-sdk.jd
deleted file mode 100644
index 6ae86e9..0000000
--- a/docs/html-intl/intl/ru/preview/setup-sdk.jd
+++ /dev/null
@@ -1,223 +0,0 @@
-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>
-
-<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/ru/preview/features/direct-boot.jd b/docs/html-intl/intl/ru/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/ru/preview/features/direct-boot.jd
rename to docs/html-intl/intl/ru/training/articles/direct-boot.jd
index 3392c13..98849fe 100644
--- a/docs/html-intl/intl/ru/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ru/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Содержание документа</h2>
   <ol>
     <li><a href="#run">Запрос доступа для запуска в режиме Direct Boot</a></li>
diff --git a/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ru/training/articles/scoped-directory-access.jd
similarity index 96%
rename from docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/ru/training/articles/scoped-directory-access.jd
index 51a4c4d..3e67d35 100644
--- a/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/ru/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Содержание документа</h2>
   <ol>
     <li><a href="#accessing">Доступ к каталогу во внешнем хранилище</a></li>
@@ -57,8 +57,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>Рисунок 1.</strong> Приложение запрашивает
 доступ к каталогу Pictures.</p>
 
diff --git a/docs/html-intl/intl/ru/preview/features/security-config.jd b/docs/html-intl/intl/ru/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/ru/preview/features/security-config.jd
rename to docs/html-intl/intl/ru/training/articles/security-config.jd
index 5294a4f..dee9b77b 100644
--- a/docs/html-intl/intl/ru/preview/features/security-config.jd
+++ b/docs/html-intl/intl/ru/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Содержание документа</h2>
 <ol>
diff --git a/docs/html-intl/intl/ru/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ru/training/tv/playback/picture-in-picture.jd
similarity index 98%
rename from docs/html-intl/intl/ru/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/ru/training/tv/playback/picture-in-picture.jd
index 5be0bff..fc26368 100644
--- a/docs/html-intl/intl/ru/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/ru/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Содержание документа</h2>
 <ol>
@@ -57,7 +57,7 @@
 видео, окно PIP автоматически
 закроется. Пользователи также могут закрыть окно PIP, используя экран последних задач.</p>
 
-<img src="{@docRoot}preview/images/pip-active.png" />
+<img src="{@docRoot}images/android-7.0/pip-active.png" />
 <p class="img-caption"><strong>Рисунок 1.</strong> Видео в режиме "картинка в картинке"
  отображается в углу экрана, пока пользователь просматривает
 контент на главном экране.</p>
@@ -114,7 +114,7 @@
 <p>Добавление кнопки PIP на панель управления мультимедиа позволяет пользователям легко переключаться
 в режим PIP с сохранением возможностей управления воспроизведением видео.</p>
 
-<img src="{@docRoot}preview/images/pip-button.png" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>Рисунок 1.</strong> Кнопка режима "картинка в картинке"
 на панели управления мультимедиа.</p>
 
diff --git a/docs/html-intl/intl/ru/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ru/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/ru/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/ru/training/tv/tif/content-recording.jd
index 5e6ce45..19d6db3 100644
--- a/docs/html-intl/intl/ru/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/ru/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Содержание документа</h2>
   <ol>
     <li><a href="#supporting">Указание на поддержку записи</a></li>
diff --git a/docs/html-intl/intl/vi/preview/behavior-changes.jd b/docs/html-intl/intl/vi/about/versions/nougat/android-7.0-changes.jd
similarity index 97%
rename from docs/html-intl/intl/vi/preview/behavior-changes.jd
rename to docs/html-intl/intl/vi/about/versions/nougat/android-7.0-changes.jd
index 3060fbf..58834a5 100644
--- a/docs/html-intl/intl/vi/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/vi/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Trong tài liệu này</h2>
 
@@ -74,7 +74,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -93,7 +93,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -229,10 +229,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/vi/preview/samples.jd b/docs/html-intl/intl/vi/about/versions/nougat/android-7.0-samples.jd
similarity index 78%
rename from docs/html-intl/intl/vi/preview/samples.jd
rename to docs/html-intl/intl/vi/about/versions/nougat/android-7.0-samples.jd
index aa1a8c6..448c39d 100644
--- a/docs/html-intl/intl/vi/preview/samples.jd
+++ b/docs/html-intl/intl/vi/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/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.
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
   Tải mã trên GitHub</a>
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/vi/preview/api-overview.jd b/docs/html-intl/intl/vi/about/versions/nougat/android-7.0.jd
similarity index 97%
rename from docs/html-intl/intl/vi/preview/api-overview.jd
rename to docs/html-intl/intl/vi/about/versions/nougat/android-7.0.jd
index 5abc2f8..b218a4e 100644
--- a/docs/html-intl/intl/vi/preview/api-overview.jd
+++ b/docs/html-intl/intl/vi/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Các tính năng chính cho nhà phát triển</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -70,7 +70,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/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>
@@ -126,15 +126,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -261,7 +261,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/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.
@@ -296,7 +296,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/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.
diff --git a/docs/html-intl/intl/vi/preview/index.jd b/docs/html-intl/intl/vi/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/vi/preview/index.jd
rename to docs/html-intl/intl/vi/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/vi/preview/j8-jack.jd b/docs/html-intl/intl/vi/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/vi/preview/j8-jack.jd
rename to docs/html-intl/intl/vi/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/vi/preview/features/multi-window.jd b/docs/html-intl/intl/vi/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/vi/preview/features/multi-window.jd
rename to docs/html-intl/intl/vi/guide/topics/ui/multi-window.jd
index 5b2cb54..3317d1c 100644
--- a/docs/html-intl/intl/vi/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>Trong tài liệu này</h2>
       <ol>
         <li><a href="#overview">Tổng quan</a></li>
@@ -68,8 +68,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/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>
diff --git a/docs/html-intl/intl/vi/preview/download.jd b/docs/html-intl/intl/vi/preview/download.jd
deleted file mode 100644
index 8b2a272..0000000
--- a/docs/html-intl/intl/vi/preview/download.jd
+++ /dev/null
@@ -1,550 +0,0 @@
-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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </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/overview.jd b/docs/html-intl/intl/vi/preview/overview.jd
deleted file mode 100644
index f709489..0000000
--- a/docs/html-intl/intl/vi/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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#dp1">Preview 1</a></strong> (phát hành lần đầu, alpha)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong> (bản cập nhật tăng dần, alpha)</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/setup-sdk.jd b/docs/html-intl/intl/vi/preview/setup-sdk.jd
deleted file mode 100644
index bdba713..0000000
--- a/docs/html-intl/intl/vi/preview/setup-sdk.jd
+++ /dev/null
@@ -1,223 +0,0 @@
-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>
-
-<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/vi/preview/features/direct-boot.jd b/docs/html-intl/intl/vi/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/vi/preview/features/direct-boot.jd
rename to docs/html-intl/intl/vi/training/articles/direct-boot.jd
index 9b2a557..c93e255 100644
--- a/docs/html-intl/intl/vi/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/vi/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <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>
diff --git a/docs/html-intl/intl/vi/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/vi/training/articles/scoped-directory-access.jd
similarity index 95%
rename from docs/html-intl/intl/vi/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/vi/training/articles/scoped-directory-access.jd
index d6db0ece..a4d9779 100644
--- a/docs/html-intl/intl/vi/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/vi/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <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>
@@ -57,8 +57,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-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>
 
diff --git a/docs/html-intl/intl/vi/preview/features/security-config.jd b/docs/html-intl/intl/vi/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/vi/preview/features/security-config.jd
rename to docs/html-intl/intl/vi/training/articles/security-config.jd
index 797e198..1d8670d 100644
--- a/docs/html-intl/intl/vi/preview/features/security-config.jd
+++ b/docs/html-intl/intl/vi/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Trong tài liệu này</h2>
 <ol>
diff --git a/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd b/docs/html-intl/intl/vi/training/tv/playback/picture-in-picture.jd
similarity index 98%
rename from docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/vi/training/tv/playback/picture-in-picture.jd
index 65799db..9156152 100644
--- a/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/vi/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Trong tài liệu này</h2>
 <ol>
@@ -57,7 +57,7 @@
 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" />
+<img src="{@docRoot}images/android-7.0/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>
@@ -114,7 +114,7 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/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>
 
diff --git a/docs/html-intl/intl/vi/preview/features/tv-recording-api.jd b/docs/html-intl/intl/vi/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/vi/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/vi/training/tv/tif/content-recording.jd
index 6dfb53e..bfd718b 100644
--- a/docs/html-intl/intl/vi/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/vi/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>Trong tài liệu này</h2>
   <ol>
     <li><a href="#supporting">Chỉ báo Hỗ trợ ghi lại</a></li>
diff --git a/docs/html-intl/intl/zh-cn/preview/guide.jd b/docs/html-intl/intl/zh-cn/about/versions/marshmallow/android-6.0-testing.jd
similarity index 98%
rename from docs/html-intl/intl/zh-cn/preview/guide.jd
rename to docs/html-intl/intl/zh-cn/about/versions/marshmallow/android-6.0-testing.jd
index 9f7737f..d1e1187 100644
--- a/docs/html-intl/intl/zh-cn/preview/guide.jd
+++ b/docs/html-intl/intl/zh-cn/about/versions/marshmallow/android-6.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>本文内容</h2>
       <ol>
         <li><a href="#runtime-permissions">测试权限</a></li>
diff --git a/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-changes.jd
similarity index 97%
rename from docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
rename to docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-changes.jd
index 4e3a6b5..71aff37 100644
--- a/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>本文内容</h2>
 
@@ -77,7 +77,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>图 1.</strong> 低电耗模式如何应用第一级系统活动限制以延长电池寿命的图示。
 
@@ -96,7 +96,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" />
 <p class="img-caption">
   <strong>图 2.</strong> 低电耗模式如何在设备处于静止状态达到一定时间后应用第二级系统活动限制的图示。
 
@@ -282,10 +282,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/zh-cn/preview/samples.jd b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-samples.jd
similarity index 74%
rename from docs/html-intl/intl/zh-cn/preview/samples.jd
rename to docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-samples.jd
index dd68566..600e33a 100644
--- a/docs/html-intl/intl/zh-cn/preview/samples.jd
+++ b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <h3 id="mw">多窗口 Playground</h3>
-<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<img src="{@docRoot}images/android-7.0/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
 <p>
   此示例演示如何在您的应用中充分利用多窗口用户界面。
 
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   这是一个已存在的示例,其显示一个使用 NotificationCompat 发送通知的简单服务。该服务将来自用户的每个未读会话以不同的通知形式发送。
 
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
 <p>
   这是一个已存在的示例,其演示如何使用 NotificationManager 指示应用当前显示的通知数量。
 
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   此示例显示如何在设备加密的存储(启动设备后始终可用)中存储和访问数据。
 
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   此示例演示如何从特定目录读取和写入数据,同时需要较少的权限。
 
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">在 GitHub 中获取</a>
 
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/guide.jd b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-testing.jd
similarity index 98%
copy from docs/html-intl/intl/zh-cn/preview/guide.jd
copy to docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-testing.jd
index 9f7737f..d1e1187 100644
--- a/docs/html-intl/intl/zh-cn/preview/guide.jd
+++ b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0-testing.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>本文内容</h2>
       <ol>
         <li><a href="#runtime-permissions">测试权限</a></li>
diff --git a/docs/html-intl/intl/zh-cn/preview/api-overview.jd b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0.jd
similarity index 97%
rename from docs/html-intl/intl/zh-cn/preview/api-overview.jd
rename to docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0.jd
index f4f889d..8810d39 100644
--- a/docs/html-intl/intl/zh-cn/preview/api-overview.jd
+++ b/docs/html-intl/intl/zh-cn/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>重要的开发者功能</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -78,7 +78,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
 <p class="img-caption">
   <strong>图 1. </strong>在分屏模式下运行的应用。
 </p>
@@ -142,15 +142,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -277,7 +277,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>图 4. </strong> 设置中的 Data Saver
@@ -357,7 +357,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
 
 <p class="img-caption" style="padding-left:2em;">
   <strong>图 5.</strong> 通知栏中的快速设置图块。
diff --git a/docs/html-intl/intl/zh-cn/preview/index.jd b/docs/html-intl/intl/zh-cn/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/zh-cn/preview/index.jd
rename to docs/html-intl/intl/zh-cn/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/zh-cn/design/patterns/notifications.jd b/docs/html-intl/intl/zh-cn/design/patterns/notifications.jd
deleted file mode 100644
index 57e02e4..0000000
--- a/docs/html-intl/intl/zh-cn/design/patterns/notifications.jd
+++ /dev/null
@@ -1,872 +0,0 @@
-page.title=通知
-page.tags="notifications","design","L"
-@jd:body
-
-  <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>开发者文档</h3>
-    <p>通知用户</p>
-  </div>
-</a>
-
-<a class="notice-designers" href="notifications_k.html">
-  <div>
-    <h3>Android 4.4 及更低版本中的通知</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>视频</h3>
-    <p>DevBytes:Android L 开发者预览当中的通知</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>通知系统可让用户随时了解应用中的相关和即时事件,例如来自好友的新聊天信息或日历事件。可将通知视作新闻频道,在重要的事件发生时提醒用户注意,或者当作日志,在用户未注意时记录事件&mdash;可在用户的所有 Android 设备上按需同步。
-
-
-
-
-
-</p>
-
-<h4 id="New"><strong>Android 5.0 新增内容</strong></h4>
-
-<p>在 Android 5.0 中,通知在结构、外观和功能方面获得了重要的更新:
-</p>
-
-<ul>
-  <li>通知在外观上发生了更改,与新的材料设计主题保持一致。
-</li>
-  <li> 通知现在可以在设备锁定屏幕上使用,而敏感信息仍然可以隐藏于背后。
-
-</li>
-  <li>设备在使用时收到的高优先级通知现在采用名为浮动通知的新格式。
-</li>
-  <li>云同步通知:在一台 Android 设备上清除通知,则在其他设备上也会将其清除。
-
-</li>
-</ul>
-
-<p class="note"><strong>注:</strong>该版本 Android 的通知设计与之前的版本大不相同。
-
-有关之前版本通知设计的信息,请参阅<a href="./notifications_k.html"> Android 4.4 及更低版本中的通知</a>。
-</p>
-
-<h2 id="Anatomy">通知详解</h2>
-
-<p>本部分介绍通知的基本组成部分,及其在不同类型设备上显示的方式。
-</p>
-
-<h3 id="BaseLayout">基本布局</h3>
-
-<p>所有通知至少要包括一个基本布局,包括:</p>
-
-<ul>
-  <li> 通知的<strong>图标</strong>。图标以符号形式表示来源应用。如果应用生成多个类型的通知,它也可用于指明通知类型。
-
-
-</li>
-  <li> 通知<strong>标题</strong>以及其他
-<strong>文本</strong>。</li>
-  <li> <strong>时间戳</strong>。</li>
-</ul>
-
-<p>利用 {@link android.app.Notification.Builder Notification.Builder}为之前版本平台创建的通知,其外观和行为方式与在 Android
-5.0 中完全相同,唯一的变动在于系统为您处理通知的方式存在细微的样式变动。
-
-如需了解之前 Android 版本通知设计的详细信息,请参阅<a href="./notifications_k.html"> Android 4.4 及更低版本中的通知</a>。
-
-</p></p>
-
-
-    <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      手持设备通知(左)和穿戴设备(右)上同一通知的基本布局,带有用户照片和通知图标
-
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">展开布局</h3>
-
-
-<p>您可以选择让应用的通知提供多少信息详情。
-它们可显示消息的前几行,也可以显示更大的预览图像。
-额外的信息可以为用户提供更多上下文,并且,在某些情况下,可能允许用户完整阅读消息。
-
-
-用户可进行两指缩放或执行单指滑移,在紧凑和展开布局之间切换。
-
-
- 对于单一事件通知,Android 提供了三种展开布局模板(文本、收件箱和图像),供您在应用中使用。
-
-下图展示单一事件通知在手持设备(左)和穿戴式设备(右)上的外观。
-
-</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">操作</h3>
-
-<p>Android 支持在通知底部显示可选的操作。通过操作,用户可在通知栏中处理最常见的任务,而无需打开来源应用。这样可加快交互的速度,而通过结合使用滑动清除通知的功能,有助于用户专注于对自身重要的通知。
-
-
-
-
-
-</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" />
-
-
-
-<p style="clear:both">请慎重考虑要在通知中包含多少操作。
-您加入的操作越多,用户就越无所适从。
-请通过只包含最重要且有意义的操作,尽量减少通知中的操作数量。
-
-
-</p>
-
-<p>适合在通知中使用的操作具有如下特点:</p>
-
-<ul>
-  <li> 对正在显示的内容类型必要、常用且常见
-
-  <li> 让用户可以迅速完成任务
-</ul>
-
-<p>避免以下类型的操作:</p>
-
-<ul>
-  <li> 含义模糊
-  <li> 跟通知的默认操作一样(例如“阅读”或“打开”)
-
-</ul>
-
-
-
-<p>您最多可以指定三个操作,每个操作由操作图标和名称组成。
-
- 通过为简单的基本布局添加操作,可以展开该通知,即使该通知没有展开布局,此方法仍然有效。
-
-由于操作仅对展开的通知显示(否则会隐藏),因此要确保用户从通知调用的任何操作都可在相关联的应用中使用。
-
-
-
-
-</p>
-
-<h2 style="clear:left">浮动通知</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" />
-  <p class="img-caption">
-    出现在沉浸式应用顶部的浮动通知(手机来电,高优先级)示例
-
-
-  </p>
-</div>
-
-<p>收到高优先级通知时(见右侧),它会向用户短时间显示一个包含可选操作的展开布局。
-
-</p>
-<p> 之后,通知会缩回通知栏。
-如果通知的<a href="#correctly_set_and_manage_notification_priority">优先级</a>标志为高、最大或全屏,则会得到浮动通知。
-</p>
-
-<p><b>浮动通知的范例</b></p>
-
-<ul>
-  <li> 使用设备时来电</li>
-  <li> 使用设备时闹铃</li>
-  <li> 新的短信</li>
-  <li> 电池电量过低</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">指导原则</h2>
-
-
-<h3 id="MakeItPersonal">个人化</h3>
-
-<p>对于他人发送的项目通知(例如消息或状态更新),请使用
-{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()} 包含此人的头像。
-另外将有关此人的信息附加到通知的元数据(参阅 {@link android.app.Notification#EXTRA_PEOPLE})。
-</p>
-
-<p>您通知的主图标仍然会显示,因此,该用户可将其与状态栏中显示的图标相关联。
-
-</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" />
-<p style="margin-top:10px" class="img-caption">
-  显示触发通知的用户以及该用户所发送信息的通知。
-</p>
-
-
-<h3 id="navigate_to_the_right_place">导航至正确位置</h3>
-
-<p>在用户触摸通知的正文时(在操作按钮的外面),打开应用并定位至正确的位置,以便用户可查看通知中引用的数据并据此操作。
-
-
-在大多数情况下,该位置是某个数据项目(例如消息)的详情视图,但如果是存档通知,那么也可能是摘要视图。
-
-如果您的应用将用户带到应用顶层以下的任何位置,可将导航插入应用的返回栈,这样用户就可以通过按下系统返回按钮返回至顶层。
-
-如需了解详细信息,请参阅<a href="{@docRoot}design/patterns/navigation.html#into-your-app">导航</a>设计模式中的“通过主屏幕小工具和通知进入您的应用”<em></em>。
-
-</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">正确设置和管理通知优先级。
-
-</h3>
-
-<p>Android 支持通知的优先级标志。该标志可以影响您的通知相对于其他通知出现的位置,并且可以帮助确保用户始终能在第一时间看到对他们最重要的通知。
-
-
-在发布通知时,您可以选择下列优先级之一:
-
-</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>优先级</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>用法</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>用于重要和紧急的通知,告知用户属于时间关键型状况,或者必须予以解决方可继续执行某个特定任务。
-
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>主要用于重要通信,例如包含用户特别感兴趣的内容的消息或聊天事件。高优先级通知会触发浮动通知显示。
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>用于不属于此处所述其他任何优先级的所有通知。</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>用于您希望告知用户但不是很紧急的通知。
-低优先级通知最好显示在列表的底部,这里正适合放置公共事项或无收件人姓名的社交更新之类的通知:
-
-用户要求接收相关通知,但是这些通知的优先级永远不会高于紧急或直接通信。
-
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>用于上下文或背景信息,例如天气信息或上下文位置信息。最低优先级通知不会出现在状态栏中。
-
-用户可在展开的通知栏上找到它们。
-</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>如何选择合适的优先级</strong>
-
-</h4>
-
-<p><code>DEFAULT</code>、<code>HIGH</code> 和 <code>MAX</code> 是中断优先级别,在活动过程中有中断用户的风险。
-
-为了避免打扰应用的用户,中断优先级仅保留用于以下通知
-:</p>
-
-<ul>
-  <li> 涉及另一个用户</li>
-  <li> 时间敏感</li>
-  <li> 可能会立即改变用户在现实世界中的行为</li>
-</ul>
-
-<p>设置为 <code>LOW</code> 和 <code>MIN</code> 的通知可能仍然对用户很重要:
-很多通知(如果不是绝大多数)不需要用户立即注意,也不需要振动,但仍然包含用户选择查看通知时将会觉得重要的信息。
-
-
-<code>LOW</code> 和 <code>MIN</code>优先级通知的条件包括:
-</p>
-
-<ul>
-  <li> 不涉及其他用户</li>
-  <li> 不属于时间敏感型</li>
-  <li> 包含用户可能感兴趣但可选择在空闲时浏览的内容
-</li>
-</ul>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" />
-
-
-<h3 style="clear:both" id="set_a_notification_category">设置通知类别
-</h3>
-
-<p>如果通知属于以下预定义类别(参阅下文)之一,则为其分配相应的类别。
-
-诸如通知栏(或其他任何通知侦听器)这样的系统 UI 项目,可使用该信息来进行评级和筛选决策。
-
-</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>来电(语音或视频)或相似的同步通信请求
-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>传入的直接消息(短信、即时消息等)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>异步群发消息(电子邮件)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>日历事件</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>促销或广告</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>闹铃或定时器</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>长时间运行的后台操作的进度</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>社交网络或共享更新</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>后台操作或身份验证状态中的错误</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>媒体传输播放控制</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>系统或设备状态更新。保留给系统使用。</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>正在运行的后台服务的指示</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>对于某个事件的特定、及时建议。例如,新闻应用可能会建议用户接下来可能想要阅读的新话题。
-
-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>有关设备或上下文状态的持续信息</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">通知摘要</h3>
-
-<p>如果特定类型的通知已经在您的应用尝试发送同类型的新通知时挂起,可将它们合并到单个应用摘要通知中,而不要新建对象。
-
-</p>
-
-<p>摘要通知会生成摘要说明,让用户了解特定类型的通知有多少处于挂起状态。
-
-</p>
-
-<div class="col-6">
-
-<p><strong>禁忌用法</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>建议用法</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" />
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">您可通过使用展开的摘要布局提供有关组成摘要的各个通知的更多详情。
-
-此方法可让用户更好地了解哪些通知处于挂起状态,如果他们有足够的兴趣,还可在相关联的应用中阅读详情。
-
-
-
-</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" />
-  <p class="img-caption">
-  展开和收起的摘要通知(使用 <code>InboxStyle</code>)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">将通知设置为可选
-</h3>
-
-<p>用户应始终能控制通知。允许用户通过将某个通知设置项目添加至您的应用设置,禁用应用的通知或更改其提醒属性,例如警报声和是否使用振动。
-
-
-
-</p>
-
-<h3 id="use_distinct_icons">使用不同的图标</h3>
-<p>通过扫一眼通知区域,用户可以了解哪些类型的通知当前处于挂起状态。
-
-</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" />
-</div>
-
-  <div><p><strong>建议用法</strong></p>
-    <p>查看 Android 应用已经提供的通知图标并为您的应用创建外观明显不同的通知图标。
-
-</p>
-
-    <p><strong>建议用法</strong></p>
-    <p>对小图标使用正确的<a href="/design/style/iconography.html#notification">通知图标样式</a>,对操作图标使用相应的材料灯<a href="/design/style/iconography.html#action-bar">操作栏图标</a>。
-
-
-
-</p>
-<p ><strong>建议用法</strong></p>
-<p >图标外观要简洁清晰,避免使用过于精细、难以辨认的图标。
-</p>
-
-  <div><p><strong>禁忌用法</strong></p>
-    <p>对小图标和操作图标设置任何附加的阿尔法通道属性(变暗或变淡);这些图标会有抗锯齿边缘,但是由于 Android 使用这些图标作为蒙板(即仅使用阿尔法通道),因此通常应以完全不透明的方式绘制图像。
-
-
-
-
-</p>
-
-</div>
-<p style="clear:both"><strong>禁忌用法</strong></p>
-
-<p>利用色彩将您的应用与其他应用区分开来。通知图标应该是纯白透明背景图像。
-</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">对通知 LED 施加相应的脉冲
-</h3>
-
-<p>许多 Android 设备都配有通知 LED,用于让用户在屏幕关闭时了解事件。
-
-优先级为 <code>MAX</code>、
-<code>HIGH</code> 或 <code>DEFAULT</code> 的通知应让 LED 发光,而优先级较低的通知(<code>LOW</code> 和 <code>MIN</code>)则不应让 LED 发光。
-
-</p>
-
-<p>用户对通知的控制应延伸至 LED。当您使用 DEFAULT_LIGHTS 时,LED 将发出白光。
-
-您的通知不应使用不同的颜色,除非用户明确对其进行了自定义。
-
-</p>
-
-<h2 id="building_notifications_that_users_care_about">构建用户关注的通知
-</h2>
-
-<p>要创建用户喜爱的应用,精心设计通知很重要。通知是应用的代言人,还可增强应用的个性化特征。
-
-
-无用或者不重要的通知会给用户带来烦恼,或者由于过分分散用户的注意力而使其感到愤怒,因此请谨慎使用通知。
-
-
-</p>
-
-<h3 id="when_to_display_a_notification">何时显示通知</h3>
-
-<p>要创建人们乐于使用的应用,就需要认识到用户的注意力和关注点是一种必须予以保护的资源,这一点很重要。
-
-尽管 Android 的通知系统在设计上希望最小化通知对用户注意力的影响,但是仍然要重视通知会中断用户任务流程这一事实。在您计划通知时,要问问自己,它们是否足够重要,是否适合让用户中断手上的任务。
-
-
-
-
-
-
-如果您不确定,可允许用户使用应用的通知设置来选择是否接收通知,或者将通知优先级标志调整为 <code>LOW</code> 或 <code>MIN</code>,从而避免在用户做其他事情时分散他们的注意力。
-
-
-
-</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   时间敏感通知的示例
-  </p>
-
-<p>尽管行为良好的应用通常只在用户对其操作后才会发出通知,但在极少数情况下,应用通过无提示的通知形式打断用户也是值得的。
-</p>
-
-<p>将通知主要用于<strong>时间敏感的事件</strong>,尤其是这些同步事件<strong>涉及其他用户时</strong>。
-例如,传入的聊天属于实时同步通信形式:
-
-另一个用户在主动等待您的回应。
-日历事件是使用通知并引起用户注意的另一个好例子,因为事件已经迫近,并且日历事件通常涉及其他人员。
-
-
-</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">何时不显示通知
-</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" />
-</div>
-
-<p>在其他很多情况下都不适合显示通知:</p>
-
-<ul>
-  <li> 不要将并非特定于用户的信息或并非确实时间敏感的信息告知用户。
-
-例如,流经社交网络的异步和未经订阅的更新,通常不适合引发实时中断。
-
-
-对于确实关注它们的用户,可让他们选择接收通知。
-</li>
-  <li> 如果相关的新信息当前显示在屏幕上,则不要创建通知。
-不过可以使用应用本身的 UI 在上下文中将新信息直接告知用户。
-
-
-  例如,聊天应用不应在用户主动和另一名用户聊天时创建系统通知。
-</li>
-  <li> 对于技术要求不高的操作(例如保存或同步信息或更新应用),如果应用或系统无需用户参与就可解决问题,请不要中断用户。
-
-</li>
-  <li> 如果可以让应用自行恢复错误,而不必让用户采取任何操作,则不要中断用户来告知他们发生此错误。
-
-</li>
-  <li> 请不要创建没有实际通知内容和仅仅是为您的应用做宣传的通知。通知应当提供有用、及时、最新的信息,而不应仅用于推广应用。
-
-
-
-</li>
-  <li> 请不要为了向用户宣传您的品牌而创建过多的通知。
-
-  此类通知会让用户不满,从而很可能离您而去。提供少量更新信息并让用户保持与您的应用交互的最佳方式是开发一个小工具,让用户可以选择是否将其放在主屏幕上。
-
-
-
-
-</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">与通知交互
-</h2>
-
-<p>通知由状态栏中的图标指示,并且可以通过打开抽屉式通知栏进行访问。
-
-</p>
-
-<p>触摸通知会打开相关联的应用并进入与通知匹配的详细内容。在通知上向左或向右滑动会将其从抽屉式通知栏中删除。
-
-</p>
-
-<h3 id="ongoing_notifications">持续性通知</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" />
-      <p class="img-caption">
-    因播放音乐而持续显示的通知
-  </p>
-</div>
-<p>持续性通知可让用户持续了解后台运行的进度。例如,音乐播放器在通知系统中通告当前播放的曲目,并继续进行播放,直至用户停止播放。
-
-
-
-持续性通知也可为持续时间较长的任务(例如下载文件或视频编码之类的任务)向用户显示反馈。
-
-用户无法手动从抽屉式通知栏中删除持续性通知。
-</p>
-
-<h3 id="ongoing_notifications">媒体播放</h3>
-<p>在 Android 5.0 中,锁定屏幕不会为弃用的
-{@link android.media.RemoteControlClient} 类显示传输控件。但是它<em>确实</em>会显示通知,因此每个应用的播放通知现在是用户在锁屏状态控制播放的主要方式。
-
-此行为可让应用更好地控制显示哪些按钮,这样,无论是否锁屏,都可以为用户提供一致的体验。
-
-
-</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">对话框和 Toast
-</h3>
-
-<p>如果您的应用当前未显示在屏幕上,则不应创建对话框或 Toast。
-对话框或 Toast 应仅限用于即时响应用户在应用内部采取的操作。有关使用对话框和 Toast 的进一步指导,请参阅<a href="/design/patterns/confirming-acknowledging.html">确认和确知</a>。
-
-
-
-</p>
-
-<h3>排名和排序</h3>
-
-<p>通知属于新闻,因此基本以时间倒序显示,并且会特别考虑应用规定的通知<a href="#correctly_set_and_manage_notification_priority">优先级</a>。
-
-
-</p>
-
-<p>通知是锁定屏幕的关键部分,并且在设备显示屏每次亮起时突出显示。
-
-锁定屏幕上的空间有限,因此确定哪些通知最为紧急或最密切相关非常重要。
-
-由于这个原因,Android 在处理通知时使用了更为精密的排序算法,考虑到以下因素:
-
-</p>
-
-<ul>
-  <li> 时间戳以及应用规定的优先级。</li>
-  <li> 通知是否最近以声音或振动形式告知过用户。
-(也就是说,如果手机刚发出了铃声,并且用户希望知道“刚才发生了什么?”,那么锁定屏幕应让用户一眼看到相应的通知。)
-
-
-</li>
-  <li> 与使用 {@link android.app.Notification#EXTRA_PEOPLE} 的通知相关的任何人,尤其是加星标的联系人。
-</li>
-</ul>
-
-<p>为了充分利用此排序功能,请专注于您希望建立的用户体验,而不是拘泥于列表上的某个特定项。
-
-</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Gmail 通知使用的是默认优先级,因此它们的顺序通常低于来自即时通讯应用(例如环聊)的消息,但是在有新邮件送达时会临时占位。
-
-
-
-
-  </p>
-
-
-<h3>在锁定屏幕上</h3>
-
-<p>由于通知在锁定屏幕上可见,所以用户隐私是特别重要的考虑事项。
-
-通知通常包含敏感信息,并且不一定需要让所有拿起设备并打开显示屏的人看到。
-
-</p>
-
-<ul>
-  <li> 对于配置了安全锁定屏幕(PIN 码、图案或密码)的设备,界面分为公用和私人部分。
-公用界面可显示在安全锁定屏幕上,因此任何人都可看见。
-私人界面是锁定屏幕背后的内容,只有在用户登录设备后才会显示。
-</li>
-</ul>
-
-<h3>用户对显示在安全锁定屏幕上的信息的控制</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" />
-      <p class="img-caption">
-    位于锁定屏幕上的通知,具有用户解锁设备后可显示的内容。
-  </p>
-</div>
-
-<p>在设置安全锁定屏幕时,用户可以选择从安全锁定屏幕隐藏敏感的详细信息。
-在这种情况下,系统 UI 会考虑通知的<em>可见性级别</em>,从而确定哪些内容可以安全地显示出来。
-
-</p>
-<p> 要控制可见性级别,可调用 <code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>,然后指定以下值之一:
-
-</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>。显示通知的完整内容。
-
-  在未指定可见性的情况下,此设置是系统的默认设置。</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>。在锁定屏幕上,会显示通知的基本信息,包括其图标以及发布此通知的应用名称。
-
-剩下的通知详细信息不会显示。需要注意的一些有用建议如下:
-
-  <ul>
-    <li> 如果您希望为通知提供不同的公用版本,供系统显示在安全锁定屏幕上,可在 <code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code> 字段中提供替换通知对象。
-
-
-
-    <li> 该设置可让您的应用有机会创建有用内容的删减版本,但是不会显示个人信息。
-可参考短信应用的示例,这种应用的通知包括短信的文本以及发信者的姓名和联系人图标。该通知应为 <code>VISIBILITY_PRIVATE</code>,但是 <code>publicVersion</code> 仍然可以包含“有 3 条新消息”这样的有用信息,而不会提供其他识别性详细信息。
-
-
-
-
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>。仅显示最为精简的信息,甚至不包括通知图标。
-</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Android Wear 上的通知
-</h2>
-
-<p>通知及其<em>操作</em>默认会和穿戴设备桥接。开发者可以控制哪些通知会从手机桥接至手表,反之亦然。
-
-
-开发者也可以控制哪些操作会进行桥接。如果您的应用包含无法通过单次点击完成的操作,则可以将这些操作隐藏在您的 Android Wear 设备通知中,或者考虑将它们连接至 Android Wear 设备应用,从而可让用户在其手表上完成操作。
-
-
-
-
-
-</p>
-
-<h4>桥接通知和操作</h4>
-
-<p>连接的设备,例如手机,可将通知桥接至 Android Wear 设备,从而将通知显示在此处。
-与此相似,您也可以桥接操作,从而让用户可在 Android Wear 设备上直接操作通知。
-</p>
-
-<p><strong>桥接</strong></p>
-
-<ul>
-  <li> 新的即时通讯</li>
-  <li> 单次点击操作,例如 +1、赞、收藏</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" />
-
-<p><strong>不要桥接</strong></p>
-
-<ul>
-  <li> 新收到的播客通知</li>
-  <li> 映射至手表上无法使用的功能的操作</li>
-</ul>
-
-
-
-<p><h4>为 Android Wear 设备定义的独特操作</h4></p>
-
-<p>有些操作只能在 Android Wear 上执行。包括以下情况:</p>
-
-<ul>
-  <li> 例如“马上回来”这样的预设回复快速列表</li>
-  <li> 在手机上打开</li>
-  <li> 调出语音输入屏幕的“评论”或“回复”操作</li>
-  <li> 启动 Android Wear 专用应用的操作</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" />
diff --git a/docs/html-intl/intl/zh-cn/preview/j8-jack.jd b/docs/html-intl/intl/zh-cn/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/zh-cn/preview/j8-jack.jd
rename to docs/html-intl/intl/zh-cn/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/zh-cn/preview/features/multi-window.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/zh-cn/preview/features/multi-window.jd
rename to docs/html-intl/intl/zh-cn/guide/topics/ui/multi-window.jd
index cfcdf6d..5ec27d7 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>本文内容</h2>
       <ol>
         <li><a href="#overview">概览</a></li>
@@ -69,8 +69,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/mw-splitscreen_2x.png 2x," id="img-split-screen" />
 <p class="img-caption">
   <strong>图 1.</strong> 两个应用在分屏模式中左右并排显示。
 </p>
diff --git a/docs/html-intl/intl/zh-cn/preview/_book.yaml b/docs/html-intl/intl/zh-cn/preview/_book.yaml
deleted file mode 100644
index 81956ed..0000000
--- a/docs/html-intl/intl/zh-cn/preview/_book.yaml
+++ /dev/null
@@ -1,342 +0,0 @@
-toc:
-- title: 计划概览
-  path: /preview/overview.html
-  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: 支持与版本说明
-  path: /preview/support.html
-
-- title: 设置 Preview
-  path: /preview/setup-sdk.html
-  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: 在设备上测试
-  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: 行为变更
-  path: /preview/behavior-changes.html
-  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: 后台优化
-    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: 语言和区域设置
-    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
-  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: 多窗口支持
-    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: 通知
-    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 录制
-    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: 网络安全配置
-    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 支持
-    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 语言功能
-    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: 作用域目录访问
-    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: 示例
-  path: /preview/samples.html
-  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: 许可协议
-  path: /preview/license.html
-  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-intl/intl/zh-cn/preview/download-ota.jd b/docs/html-intl/intl/zh-cn/preview/download-ota.jd
deleted file mode 100644
index 5d17abc..0000000
--- a/docs/html-intl/intl/zh-cn/preview/download-ota.jd
+++ /dev/null
@@ -1,332 +0,0 @@
-page.title=应用设备 OTA 映像
-
-@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 开源项目(项目网址为 http://source.android.com/,其内容会不时更新)名义提供、面向设备的 Android 软件栈。
-
-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">
-
-<p>
-  本页提供了无线 (OTA) 设备映像的下载链接,并描述了如何手动向设备应用一项 OTA 更新。
-此过程可用于恢复通过 Android Beta 计划接收 OTA 更新并且在安装更新后不能启动的设备。
-
-
-</p>
-
-<h2 id="install-ota">安装 OTA 映像</h2>
-
-<p></p>
-
-<p>将 OTA 软件包安装到设备:</p>
-
-<ol>
-  <li>从下表中下载 OTA 设备映像。</li>
-  <li>将设备重新启动为恢复模式。如需有关将 Nexus 设备设为此模式的更多信息,请参阅<a href="https://support.google.com/nexus/answer/4596836">将您的 Nexus 设备恢复为出厂设置</a>。
-
-
-
-  </li>
-  <li>在设备上,选择 <strong>ADB sideload</strong>。</li>
-  <li>将设备连接到加载了 Android 开发环境并安装了Android 调试桥 (ADB) 工具的计算机。
-</li>
-  <li>运行以下命令:
-    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
-  </li>
-</ol>
-
-
-
-<h2 id="ota-images">设备 OTA 映像</h2>
-
-<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-ota-npd90g-0a874807.zip</a><br>
-      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
-      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd90g-06f5d23d.zip</a><br>
-      MD5: 513570bb3a91878c2d1a5807d2340420<br>
-      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd90g-5baa69c2.zip</a><br>
-      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
-      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd90g-c04785e1.zip</a><br>
-      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
-      SHA-1: 31633180635b831e59271a7d904439f278586f49
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
-      MD5: 0493fa79763d67bcdde8007299e1888d<br>
-      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd90g-3a0643ae.zip</a><br>
-      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
-      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd90g-ec931914.zip</a><br>
-      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
-      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
-      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
-      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
-    </td>
-  </tr>
-
-</table>
-
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
-  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/download.jd b/docs/html-intl/intl/zh-cn/preview/download.jd
deleted file mode 100644
index 2d3b883..0000000
--- a/docs/html-intl/intl/zh-cn/preview/download.jd
+++ /dev/null
@@ -1,544 +0,0 @@
-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 库文件(若可用))依据本许可协议的条款授权您使用。本许可协议在您与 Google 之间就您对“Preview”的使用构成具有法律约束力的合约。
-
-1.2 “Android”是指以 Android 开源项目(项目网址为 http://source.android.com/,其内容会不时更新)名义提供、面向设备的 Android 软件栈。
-
-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><strong>通过Android Beta 计划</strong>注册设备以获取自动<a href="https://g.co/androidbeta"> OTA 系统更新</a>。
-注册后,您的设备即会收到 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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </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 或更高版本,该版本支持 <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>,与
-Android Studio 1.5 中的模拟器相比,其运行速度快得多。
-
-</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/afw.jd b/docs/html-intl/intl/zh-cn/preview/features/afw.jd
deleted file mode 100644
index 0d4c562..0000000
--- a/docs/html-intl/intl/zh-cn/preview/features/afw.jd
+++ /dev/null
@@ -1,556 +0,0 @@
-page.title=Android for Work 更新
-page.metaDescription=Android N 中的新 Android for Work API 和功能
-page.keywords="android for work", "android N", "enterprise", "QR code"
-
-@jd:body
-
-
-
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文内容</h2>
-      <ol>
-        <li><a href="#qr">QR 码配置</a>
-</li>
-
-        <li><a href="#sec-challenge">工作资料安全性挑战</a>
-</li>
-
-        <li><a href="#suspend">停用应用访问</a>
-</li>
-
-        <li><a href="#toggle-work">切换工作模式</a>
-</li>
-
-        <li><a href="#always-on-vpn">Always-On VPN</a>
-</li>
-
-        <li><a href="#contacts">联系人与工作资料集成</a>
-</li>
-
-        <li><a href="#remote-reboot">远程重新启动</a>
-</li>
-
-        <li><a href="#disable-roaming">停用数据网络漫游</a>
-</li>
-
-        <li><a href="#process-logging">企业进程记录</a>
-</li>
-
-        <li><a href="#bug-reports">远程错误报告</a>
-</li>
-
-        <li><a href="#remove-cert">移除客户端证书</a>
-</li>
-
-        <li><a href="#grant-cert-on-install">允许访问安装设备上的客户端证书</a>
-</li>
-
-        <li><a href="#ui-policy">系统 UI 策略透明度</a>
-</li>
-
-        <li><a href="#restrictions-mgmt">应用限制管理增强</a>
-</li>
-
-        <li><a href="#location-off">位置关闭开关</a>
-</li>
-
-        <li><a href="#custom-provisioning">自定义配置</a>
-</li>
-
-        <li><a href="#multi-wifi-ca">多 Wi-Fi CA 证书</a>
-</li>
-
-        <li><a href="#custom-lock">自定义锁屏消息</a>
-</li>
-
-        <li><a href="#work-connectionservice">工作资料 ConnectionService</a>
-</li>
-
-        <li><a href="#lock-wp">锁定壁纸</a>
-</li>
-
-        <li><a href="#lock-user-icon">锁定壁纸</a>
-</li>
-
-        <li><a href="#health-monitoring">设备运行状况监测</a>
-</li>
-
-      </ol>
-
-    <h2>另请参阅</h2>
-    <ul>
-      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 参考</a>
-</li>
-    </ul>
-  </div>
-</div>
-
-<p>本文介绍了 Android N 中提供的新 Android for Work 功能。
-</p>
-
-<h2 id="qr">QR 码配置</h2>
-
-<p>
-  Android for Work 现在支持使用 QR 码来配置企业负责的设备。
-安装向导现在允许您通过扫描 QR 码来配置设备。
-
-</p>
-
-<h2 id="sec-challenge">工作资料安全性挑战</h2>
-
-<p>
-  个人资料所有者可以要求用户为在工作资料中运行的应用指定安全性挑战。
-系统会在用户尝试打开任何工作应用时显示安全性挑战。
-如果用户成功完成安全性挑战,系统可解锁工作资料并将其解密(如果需要)。
-
-
-</p>
-
-<p>
-  如果个人资料所有者发送一项 {@link
-  android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD} Intent,系统会提示用户设置一项安全性挑战。
-个人资料所有者也可以发送一项 <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> Intent 来提示用户设置设备锁定。
-
-
-</p>
-
-<p>
-  个人资料所有者可以选择为工作挑战设置不同于其他设备密码策略的密码策略。
-例如,设备挑战响应的最小长度可以与其它密码要求的长度不同。
-
-个人资料所有者使用常见的 {@link android.app.admin.DevicePolicyManager} 方法来设置挑战策略,如 {@link
-  android.app.admin.DevicePolicyManager#setPasswordQuality
-  setPasswordQuality()} 和 {@link
-  android.app.admin.DevicePolicyManager#setPasswordMinimumLength
-  setPasswordMinimumLength()}。
-
-个人资料所有者还能通过使用由新的 <code>DevicePolicyManager.getParentProfileInstance()</code> 方法返回的 {@link android.app.admin.DevicePolicyManager} 实例来设置设备锁定,
-
-
-此外,个人资料所有者可以使用 {@link android.app.admin.DevicePolicyManager} 类的新 <code>setOrganizationColor()</code> 和 <code>setOrganizationName()</code> 方法来自定义工作挑战的凭据屏幕。
-
-
-
-</p>
-
-<p>
-  有关新方法和常量的详细信息,请参阅 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 参考</a> 中的 <code>DevicePolicyManager</code> 参考页面。
-
-</p>
-
-<h2 id="suspend">停用应用访问</h2>
-
-<p>
-  设备所有者和个人资料所有者可以通过调用新 <code>DevicePolicyManager.setPackagesSuspended()</code> 方法来临时暂停软件包访问。
-
-所有者可以用同样的方法来重新启用这些软件包。
-</p>
-
-<p>
-  在软件包被暂停期间,它不能启动 Activity ,到软件包的通知会被阻止,而<a href="{@docRoot}guide/components/recents.html">概览屏幕</a>中的应用条目会被隐藏。
-
-  暂停的软件包不会显示在<a href="{@docRoot}guide/components/recents.html">概览屏幕</a>中,并且它们不能显示对话(包括提醒和 Snackbar),
-也不能播放音频或振动设备。
-
-</p>
-
-<p>
-  启动器应对暂停的应用应用一个独特的 UI,以指示应用目前不可用;例如它们可以将应用图标显示为灰色。
-
-启动器可以通过调用新 <code>DevicePolicyManager.getPackageSuspended()</code> 方法来确定应用是否被暂停。
-
-</p>
-
-<h2 id="toggle-work">切换工作模式</h2>
-
-<p>
-  在双个人资料设备上,用户可以打开或关闭工作模式。在工作模式关闭时,托管个人资料会被暂时关闭。
-工作资料应用、后台同步和通知都会被停用,包括个人资料所有者应用。
-
-在工作资料被停用时,系统会显示一个持久的状态图标,以提醒用户他们将无法启动工作应用。
-
-系统启动器会指示工作应用和小工具都将无法访问。
-
-</p>
-
-<h2 id="always-on-vpn">Always-On VPN</h2>
-
-<p>
-  设备所有者和个人资料所有者可以要求工作应用始终通过指定的 VPN 连接到网络。
-如果所有者设置了此要求,设备会在启动时自动开始 VPN。
-
-</p>
-
-<p>
-  所有者可以通过调用新 <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code> 方法来要求使用 VPN。
-通过调用新 <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code> 方法来确定所有者是否设置了 VPN 要求。
-
-
-</p>
-
-<p>
-  由于 VPN 服务无需应用交互即可由系统直接绑定,因此,VPN 客户端必须针对 Always on VPN 处理新的入口点。
-像以前一样,您可以通过使用与操作 {@link android.net.VpnService android.net.VpnService} 匹配的 Intent 过滤器查找活动的服务。
-
-
-</p>
-
-<p>
-  用户可以使用 <strong>Settings &gt; More &gt; VPN</strong> 屏幕来手动设置实现 {@link
-  android.net.VpnService} 的 Always on VPN 客户端。
-
-</p>
-
-<h2 id="contacts">联系人与工作资料集成</h2>
-
-<p>
-  个人资料所有者可以允许主用户对工作联系人进行本地搜索和目录查找。
-例如,用户可以从他们的个人拨号器或联系人应用访问个人和工作目录联系人(如果他们的个人资料管理员允许)。
-
-
-</p>
-
-<p>
-  利用联系人提供程序的开发者可以使用企业联系人 API 从主用户访问工作资料目录条目(如果策略允许):
-
-
-</p>
-
-<ul>
-  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
-  </li>
-</ul>
-
-<p>
-  个人资料所有者可以使用以下新方法来控制主用户的工作联系人可见性:
-
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
-  </li>
-</ul>
-
-<h2 id="remote-reboot">远程重新启动</h2>
-
-<p>
-  设备所有者可以远程重新启动设备。有些情况下,部署在公共场所的封装内设备会阻止访问电源按钮。
-如果设备需要重新启动,管理员可以使用新 <code>DevicePolicyManager.reboot()</code> 方法来进行此操作。
-
-
-</p>
-
-<h2 id="disable-roaming">停用数据网络漫游</h2>
-
-<p>
-  设备所有者可以使用新的 {@link
-  android.os.UserManager} 用户限制 <code>DISALLOW_DATA_ROAMING</code> 来停用数据网络漫游。
-</p>
-
-<h2 id="process-logging">企业进程记录</h2>
-
-<p>
-  设备所有者可以通过远程跟踪设备活动来识别可疑活动 ,包括应用启动、ADB Activity 和屏幕解锁。
-进程记录不要求用户同意。
-若要检索记录,设备所有者可以使用 <code>DevicePolicyManager.setSecurityLoggingEnabled()</code> 来启用设备记录。
-
-</p>
-
-<p>
-  API 更改包括:
-</p>
-
-<ul>
-
-  <li>
-    新类 <code>android.app.admin.SecurityLog</code> 和它的方法
-
-  </li>
-
-  <li>
-    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrieveSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
-  </li>
-</ul>
-
-<h2 id="bug-reports">远程错误报告</h2>
-
-<p>
-  设备所有者可以远程触发和检索包含设备状态转储文件的错误报告,这允许对已知事故或受损害的设备进行取证调查。
-
-鉴于错误报告的详细性质,需要经过用户同意。
-
-</p>
-
-<p>
-  Android N 包括以下 API 添加来支持此功能。如需详细信息,请参阅 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 参考</a>。
-
-
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.requestBugreport()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportFailed()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportShared()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
-  </li>
-</ul>
-
-<h2 id="remove-cert">移除客户端证书</h2>
-
-<p>
-  个人资料所有者和设备所有者现在可以通过调用新方法 <code>DevicePolicyManager.removeKeyPair()</code> 来移除通过 {@link android.app.admin.DevicePolicyManager#installKeyPair
-  installKeyPair()} 安装的客户端证书。
-
-
-</p>
-
-<h2 id="grant-cert-on-install">允许访问安装设备上的客户端证书
-</h2>
-
-<p>
-  如果个人资料所有者或设备所有者授予第三方应用管理证书的权限,应用便可授予自身访问其所安装证书的权限,无需所有者进行任何干预。
-
-
-</p>
-
-<p>
-  用于管理证书的现有 API 经过扩展,现包括:
-</p>
-
-<ul>
-  <li><code>DevicePolicyManager.installKeyPair()</code>
-  </li>
-</ul>
-
-<h2 id="ui-policy">系统 UI 策略透明度</h2>
-
-<p>
-  影响用户体验或限制用户设置的策略是向用户完全公开的,个人资料所有者和设备所有者可以将策略归于他们公司的 IT 部门。
-
-除了“Settings”中一贯的“Action not allowed”消息之外,IT 管理员可以通过以下新 {@link android.app.admin.DevicePolicyManager} 方法在设备设置中设置组织特定的支持消息:
-
-
-
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setShortSupportMessage()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.setLongSupportMessage()</code>
-  </li>
-</ul>
-
-<h2 id="restrictions-mgmt">应用限制管理增强</h2>
-
-<p>
-  设备或个人资料所有者可以通过新 <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code> 方法启用另一项应用,以管理应用限制。
-
-
-提名的应用可以通过调用 <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code> 来检查是否已被授予此权限。
-
-
-</p>
-
-<p>
-  提名管理应用限制的应用可以为该用户或个人资料内的任何软件包调用 {@link
-  android.app.admin.DevicePolicyManager#setApplicationRestrictions
-  setApplicationRestrictions()} 和 {@link
-  android.app.admin.DevicePolicyManager#getApplicationRestrictions
-  getApplicationRestrictions()}。
-</p>
-
-<h2 id="location-off">位置关闭开关</h2>
-
-<p>
-  用户可以停用工作应用的位置权限,同时仍可继续在个人应用中访问位置信息。
-Location Settings 中的一个单独的位置访问开关允许用户拒绝对工作资料内运行的应用的位置更新或最后位置查询。
-
-
-</p>
-
-<p>
-  顶层位置关闭开关停用对主个人资料和托管个人资料的位置访问权限。
-
-</p>
-
-<h2 id="custom-provisioning">自定义配置</h2>
-
-<p>
-  应用可以用企业颜色和徽标来自定义个人资料所有者和设备所有者配置流程。
-
-</p>
-
-<dl>
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
-  </dt>
-
-  <dd>
-    自定义流程颜色。
-  </dd>
-
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
-  </dt>
-
-  <dd>
-    用企业徽标来自定义流程。
-  </dd>
-</dl>
-
-<h2 id="multi-wifi-ca">多 Wi-Fi CA 证书</h2>
-
-<p>
-  个人资料所有者和设备所有者可以为一项指定的 Wi-Fi 配置设置多个 CA 证书。
-如果企业 Wi-Fi 网络针对有相同 SSID 的独立接入点设置了独立 CA,IT 管理员可以使用新 <code>setCaCertificates()</code> 方法将所有相关 CA 包括在 Wi-Fi 配置中。
-
-
-
-</p>
-
-<p>
-  添加的 API 有:
-</p>
-
-<ul>
-  <li>
-    <code>WifiEnterpriseConfig.setCaCertificates()</code>
-  </li>
-
-  <li>
-    <code>WifiEnterpriseConfig.getCaCertificates()</code>
-  </li>
-</ul>
-
-<h2 id="custom-lock">自定义锁屏消息</h2>
-
-<p>
-  设备所有者可以提供将显示在锁屏上的所有者信息。
-  该信息的优先级高于用户锁屏消息(如果已设置)。
-新 {@link android.app.admin.DevicePolicyManager} 方法有:
-</p>
-
-<ul>
-  <li>
-    <code>setDeviceOwnerLockScreenInfo()</code>
-  </li>
-
-  <li>
-    <code>getDeviceOwnerLockScreenInfo()</code>
-  </li>
-</ul>
-
-<h2 id="work-connectionservice">工作资料 ConnectionService</h2>
-
-<p>
-  个人资料所有者可以为调用后端(调用帐户)指定一项使用工作特定 {@link android.telecom.ConnectionService} 的工作拨号器应用。
-
-工作拨号器会保持仅限工作的调用记录,并仅依赖于工作联系人。
-无论拨号应用是什么,用户都将获得一致的调用内 UI 体验。
-传入到工作调用帐户的工作调用会与传入到个人调用帐户的个人调用相区别。
-
-
-</p>
-
-<p>
-  拨号器应检查新标记 <code>android.telecom.Call.PROPERTY_WORK_CALL</code>,以确定一项调用是否是工作调用。
-
-如果一项调用是工作调用,拨号器应通过添加工作徽章等方式做如此指示。
-
-</p>
-
-<h2 id="lock-wp">锁定壁纸</h2>
-
-<p>
-  新的用户限制 (<code>DISALLOW_SET_WALLPAPER</code>) 可以阻止用户更改他们的壁纸。
-设备所有者或个人资料所有者仍可以改变壁纸,但只能更改他们控制的用户或个人资料的壁纸。
-
-例如,个人资料所有者不能更改父用户的壁纸,但主个人资料的个人资料所有者或设备所有者却可以。
-
-想要更改壁纸的个人资料所有者或设备所有者应检查他们管理的用户或个人资料是否有壁纸 ({@link android.app.WallpaperManager#isWallpaperSupported
-  isWallpaperSupported()}) 以及他们是否被允许更改这个壁纸(通过新方法 <code>WallpaperManager.isWallpaperSettingAllowed()</code>)。
-
-
-
-</p>
-
-<h2 id="lock-user-icon">锁定用户图标</h2>
-
-<p>
-  新的用户限制 (<code>DISALLOW_SET_USER_ICON</code>) 阻止用户更改其用户图标。
-用户的设备所有者或个人资料所有者仍可以更改图标。
-但是个人资料所有者只能更改其控制的个人资料的用户图标。
-
-</p>
-
-<h2 id="health-monitoring">设备运行状况监测</h2>
-
-<p>
-  设备所有者或个人资料所有者可以使用新的 <code>HardwarePropertiesManager</code> 界面来检索有关设备运行状况的信息,如 CPU 或 GPU 温度和 CPU 使用率。
-
-新的监测界面特别适合监测在远程位置运行的无人值守设备。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/license.jd b/docs/html-intl/intl/zh-cn/preview/license.jd
deleted file mode 100644
index 66f3ed3..0000000
--- a/docs/html-intl/intl/zh-cn/preview/license.jd
+++ /dev/null
@@ -1,145 +0,0 @@
-page.title=许可协议
-
-@jd:body
-
-<p>
-在开始使用 Android SDK Preview 之前,您必须同意下列条款和条件。正如下文所述,请注意:这是 Android SDK 的预览版,可能随时更改,恕不另行通知,您使用此版本的风险由您自行承担。
-Android SDK Preview 并非稳定版本,可能包含会对您的计算机系统、设备和数据造成损害的错误和缺陷。
-</p>
-
-<p>
-本协议是 Android SDK Preview 许可协议(以下称为“许可协议”)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. 简介
-
-1.1 Android SDK Preview(在本许可协议中简称为“Preview”,具体包括 Android 系统文件、封装 API 以及Preview 库文件(若可用))依据本许可协议的条款授权您使用。本许可协议在您与 Google 之间就您对“Preview”的使用构成具有法律约束力的合约。
-
-1.2 “Android”是指以 Android 开源项目(项目网址为 http://source.android.com/,其内容会不时更新)名义提供、面向设备的 Android 软件栈。
-
-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>
\ 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
deleted file mode 100644
index 8bbd120..0000000
--- a/docs/html-intl/intl/zh-cn/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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>
-  欢迎使用 <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#dp1">Preview 1</a></strong>(初始版本,alpha)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong>(增量更新,alpha)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></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 工具、Preview 系统映像、模拟器、参考文档和 API 差异。
-
-</p>
-
-<p>
-  <strong>前三个 Preview 里程碑</strong>提供<strong>早期测试和开发环境</strong>,帮助您发现当前应用中的兼容性问题,并针对新平台计划必要的迁移或功能工作。
-
-
-这是向我们提供功能和 API 以及文件兼容性问题反馈的优先期 &mdash; 请使用 <a href="{@docRoot}preview/bug">Issue Tracker</a> 进行反馈。
-
-
-在更新期间,API 可能会有变更。
-</p>
-
-<p>
-  在<strong>Preview 4 和 5</strong> 中,您将可以访问<strong>最终版的 N API 和 SDK</strong> 进行开发,以及用于测试系统行为和功能的接近最终版的系统映像。
-
-此时 Android N 会提供标准的 API 级别。
-您可以对旧版应用进行最终的兼容性测试,并优化使用 N API 或功能的新代码。
-
-</p>
-
-<p>
-  此外,从 Preview 4 开始,您将可以面向运行正式 API 级别的 Android N 的<strong>设备发布应用</strong>,例如选择加入 Android Beta 计划的消费者设备。您可以先在 Google Play 的 alpha 和 beta 渠道发布应用,通过 Android Beta 消费者对应用进行测试,然后在商店大范围推广。
-
-
-
-
-
-</p>
-
-<p>
-  如果您在 Android N 中进行测试和开发,我们郑重建议您随着 Preview 更新的发布,<strong>将开发环境保持为相应的最新版本</strong>。
-
-为了方便更新,您可以在 Android Beta 计划中注册您的测试设备,这样就可以在每个里程碑实现<strong>空中下载 (OTA) 更新</strong>。
-
-此外,您还将获得可手动下载并刷入的系统映像。
-
-</p>
-
-<p>
-  当有 Preview 更新可用时,我们将通过 <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}studio/intro/update.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>手动刷入设备将不会像在去年的 Preview 中一样获得 OTA 更新。</strong>
-今年,您可以通过在 Android Beta 计划中注册设备获得 OTA &mdash; 有关详情请参阅下文。
-
-</p>
-
-<h3 id="android_beta">通过 Android Beta 计划获得 OTA 更新</h3>
-
-<p>
-  Android N 的一项新功能是空中下载 (OTA) 更新计划,该功能可以将 Android N 最新的Preview 更新直接发送到注册该计划的设备。该计划是免费服务,只要您拥有支持的设备并将其注册到 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>
-  在 Preview 更新初期,您可以下载最新的 <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/bugs">已知问题</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">锁定目标、Preview 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 都不是正式的 API。目前,最终的 SDK 计划于 2016 年第三季度发布。
-这意味着一段时期内,特别是该计划的最初几周内,
-<strong>API 可能会出现细微变化</strong>。
-我们会通过 Android N Developer Preview 的每次更新,为您提供一份变更摘要。
-
-</p>
-
-<p class="note">
-  <strong>注</strong>:虽然 Preview 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/preview_toc.cs b/docs/html-intl/intl/zh-cn/preview/preview_toc.cs
deleted file mode 100644
index 9e852c5..0000000
--- a/docs/html-intl/intl/zh-cn/preview/preview_toc.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-<ul id="nav">
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="程式總覽">计划概览</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/support.html">支持与版本说明</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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">设置 Preview</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;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="在裝置上測試">在设备上测试</a></div>
-  </li>
-
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="行為變更">行为变更</a></div>
-      <ul>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/background-optimization.html" 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="背景最佳化">后台优化</a></li>
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/multilingual-support.html" 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="語言和地區設定">语言和区域设置</a></li>
-      </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;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="&lt;?cs var:toroot ?&gt;preview/features/multi-window.html" 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="多視窗支援">多窗口支持</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/notification-updates.html" 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="通知">通知</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/data-saver.html">Data Saver</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/tv-recording-api.html" 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 录制</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/security-config.html" 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="網路安全性設定">网络安全配置</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/icu4j-framework.html" 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 支持</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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 语言功能</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;preview/features/afw.html">Android for Work 更新</a></li>
-
-        <li><a href="&lt;?cs var:toroot ?&gt;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="限定範圍目錄存取">作用域目录访问</a></li>
-      </ul>
-  </li>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/samples.html" es-lang="Ejemplos" in-lang="Contoh" ja-lang="サンプル" ko-lang="샘플" pt-br-lang="Exemplos" ru-lang="Примеры" zh-cn-lang="示例" zh-tw-lang="範例">示例</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/license.html" es-lang="Contrato de licencia" ja-lang="使用許諾契約" ko-lang="라이선스 계약" pt-br-lang="Contrato de licença" ru-lang="Лицензионное соглашение" zh-cn-lang="许可协议" zh-tw-lang="授權協議">许可协议</a></div>
-  </li>
-
-</ul> 
\ 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
deleted file mode 100644
index c629cd9..0000000
--- a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-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</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>
-
-<p>如果您已经安装了 Android Studio,请通过点击 <strong>Help &gt; Check for Update</strong>(在 Mac 上,点击 <strong>Android Studio &gt; Check for Updates</strong>)来确保您安装的是 Android Studio 2.1 或更高版本。
-
-</p>
-
-<p>如果您尚未安装,请在此处<a href="{@docRoot}studio/">下载 Android Studio 2.1</a>。
-</p>
-
-
-<h2 id="get-sdk">获取 N Preview SDK</h2>
-
-<p>开始使用 Android N API 进行开发时,您需要按如下所示在 Android Studio 中安装 Android N Preview SDK:
-</p>
-
-<ol>
-  <li>点击 <strong>Tools &gt;Android &gt;
-SDK Manager</strong> 来打开 SDK 管理器。</li>
-
-  <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-3-docs.zip">n-preview-3-docs.zip</a></td>
-    <td width="100%">
-      MD5:19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
-    </td>
-  </tr>
-<table>
-
-
-
-<h2 id="java8">获取 Java 8 JDK</h2>
-
-<p>若要使用 Android N 平台编译您的应用,并在 Android Studio 2.1 中使用一些工具,您需要安装 Java 8 Developer Kit (JDK 8)。
-因此,如果您还没有最新版本,请立即下载 JDK 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-rc3'</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-cn/preview/support.jd b/docs/html-intl/intl/zh-cn/preview/support.jd
deleted file mode 100644
index 353a71d..0000000
--- a/docs/html-intl/intl/zh-cn/preview/support.jd
+++ /dev/null
@@ -1,1188 +0,0 @@
-page.title=支持和版本说明
-meta.keywords="preview", "android"
-page.tags="preview", "developer preview"
-page.image=images/cards/card-n-support_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>本文内容</h2>
-
-<ul>
-  <li><a href="#dp3">Developer Preview 3</a>
-    <ul>
-      <li><a href="#general">一般公告</a></li>
-      <li><a href="#new">DP3 的新功能</a></li>
-      <li><a href="#ki">已知问题</a></li>
-    </ul>
-  </li>
-  <li><a href="#dp2">Developer Preview 2</a></li>
-  <li><a href="#dp1">Developer Preview 1</a></li>
-</ul>
-
-<!--
-<h2>See Also</h2>
-<ol>
-  <li></li>
-</ol>
--->
-
-</div>
-</div>
-
-<p>
-  当您使用 Android N Developer Preview 进行开发和测试时,您可借助两个主要支持渠道:
-请在 <a href="https://developer.android.com/preview/bug">https://developer.android.com/preview/bug</a> 提交有关设备、系统和 Google App 错误的错误。
-对于其他应用问题,请直接联系开发者。
-
-</p>
-
-<p>若要与其他参与 Android N 的开发者讨论问题或想法,请加入 <a href="{@docRoot}preview/dev-community">Developer Preview Google+ 社区</a>。
-</p>
-
-<h2 id="dp3">Developer Preview 3</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>日期:2016 年 5 月<br>
-        构建:NPD35K<br>
-        模拟器支持:x86 &amp; ARM(32/64 位)<br>
-        Google Play 服务:8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="general">一般公告</h3>
-
-<p>
-  Developer Preview 版本适用于<strong>应用开发者和其他早期试用者</strong>,可用于日常使用、开发或兼容性测试。
-
-请注意关于版本的一般注意事项:
-
-</p>
-
-<ul>
-  <li>这个版本可能会在支持设备上出现不同的<strong>稳定性问题</strong>。
-用户可能会遇到系统不稳定,如内核错误和崩溃。
-
-  </li>
-
-  <li>有些应用<strong>可能无法在新的平台版本上如预期运行。</strong>
-这其中包括 Google 应用和其他应用。
-  </li>
-
-  <li>Developer Preview 3 已在以下设备上经过<strong>兼容性测试套件 (CTS) 批准</strong>:
-Nexus 5X、Nexus 6、Nexus 6P 和 Pixel C。依赖 CTS 批准构建的应用应能在这些设备上正常运行(例如 Android Pay)。
-
-
-  </li>
-
-  <li>Developer Preview 3 <strong>适用于所有支持设备:</strong>
-Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Nexus Player、Pixel C、General Mobile 4G (Android One) 以及 Sony Xperia Z3 (D6603 和
-  D6653 型号)。
-
-
-  </li>
-</ul>
-
-
-<h3 id="new">DP3 的新功能</h3>
-
-<h4 id="">面向 Android 的 VR 模式</h4>
-
-<p>
-  Android N 为新的 VR 模式增加了平台支持和优化,以使开发者能为用户打造高质量移动 VR 体验。
-增加了一些性能增强特性,包括允许 VR 应用访问某个专属的 CPU 核心。
-
-在您的应用中,您可以充分利用到专为 VR 设计的智能头部跟踪和立体声通知功能。
-最重要的是,Android N 的图形延时非常低。
-
-</p>
-
-<p>
-  如需更多信息,请参阅<a href="https://developers.google.com/vr/android/">面向 Android 的Google VR SDK</a>。
-</p>
-
-<h4 id="">持续性能模式</h4>
-
-<p>
-  为解决这些限制,Android N 包括了<a href="{@docRoot}preview/api-overview.html#sustained_performance_api">持续性能模式</a> 支持,帮助原始设备制造商 (OEM) 提供关于长期运行应用的设备性能能力的提示。
-
-应用开发者随后可以使用这些提示来根据可预测的一致设备性能水平调整长期应用。
-
-应用开发者只能在 Nexus 6P 设备的 Developer Preview 上尝试这项新的 API。
-
-</p>
-
-<h4>多进程 WebView</h4>
-
-<p>
-  从 Android N 中的版本 51 开始,WebView 将开发者选项“多进程 WebView”被启用时,在一个单独的沙盒进程中运行网页内容。
-
-WebView 团队正在寻求关于 N 中的兼容性和运行时性能的反馈,并随后将在未来 Android 版本中启用多进程 WebView。
-
-在这个版本中,可预期启动时间回归、总内存使用和软件渲染性能。
-
-</p>
-
-<p>
-  如果您在多进程模式中遇到意外问题,请告诉我们。
-请通过<a href="https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">提交错误</a>来联系 WebView 团队。
-
-</p>
-
-<h4 id="">键盘快捷键辅助工具</h4>
-
-<p>
-  在 Android N 中,用户可以按 <code>Meta+/</code> 触发<strong>键盘快捷键</strong>屏幕,它会显示系统和对焦的应用中可用的所有快捷键。
-
-开发者可以添加自己的快捷键,或者从他们的应用触发快捷键屏幕。
-请参阅<a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">键盘快捷键辅助工具</a>以了解详细信息。
-
-</p>
-
-<h4 id="">FrameMetrics API</h4>
-
-<p>
-  DP3 引入了一项新的 <a href="{@docRoot}preview/api-overview.html#framemetrics_api">FrameMetrics API</a>,它通过公开流式传输 Pub/Sub API 来传递应用的当前窗口帧计时信息,允许应用监测其 UI 渲染性能。<code>FrameMetricsListener</code> 可用于从更高的粒度衡量生产中的交互级 UI 性能,无需 USB 连接。
-
-
-
-
-
-</p>
-
-<h4 id="api-changes">功能和 API 更改</h4>
-
-<dl>
-  <dt>
-    启动器快捷键和启动器快捷键 API
-  </dt>
-
-  <dd>
-    我们已经决定将这项功能推迟到未来的 Android 版本中。我们计划从下一个 Developer Preview 开始,从公开 Android N API 中移除启动器快捷键 API(ShortcutManager 等)。
-
-
-  </dd>
-
-  <dt>
-    WebView Javascript 在页面加载之前运行
-  </dt>
-
-  <dd>
-    从面向 Android N 的应用开始,JavaScript 上下文会在加载新页面时重置。
-目前,新 {@link android.webkit.WebView} 实例中加载的第一个页面会继承上下文。
-
-    想要在 {@link
-    android.webkit.WebView} 中注入 Javascript 的开发者应在页面开始加载后执行脚本。
-
-  </dd>
-
-  <dt>
-    不安全起点上的 WebView 地理定位
-  </dt>
-
-  <dd>
-    从面向 Android N 的应用开始,地理定位 API 将仅在安全的起点(通过 HTTPS)上被允许。
-此政策的目的是在用户使用不安全连接时保护他们的私人信息。
-
-  </dd>
-
-  <dt>
-    Data Saver
-  </dt>
-
-  <dd>
-    从 Developer Preview 3 开始,应用可以使用 Intent 来显示系统对话框,使用户能直接向 Data Saver 豁免白名单中添加应用。
-
-请参阅 <a href="{@docRoot}preview/api-overview.html#data_saver">Data Saver 文档</a>以了解详细信息。
-
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#number-blocking">号码屏蔽</a>
-  </dt>
-
-  <dd>
-    如果未经授权的用户试图屏蔽或取消屏蔽一个号码,操作会即时失败,并返回 {@link java.lang.SecurityException}。
-(之前,操作曾引发 {@link java.lang.UnsupportedOperationException} )
-
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#tile_api">快速设置图块 API</a>
-
-  </dt>
-
-  <dd>
-    系统现在使用 Activity 的元数据来决定图块模式。
-    (之前平铺模式是由 <code>TileService.onTileAdded()</code> 的返回值决定。)
-如需了解详细信息,请参阅可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a> 中的
-<code>TileService.META_DATA_ACTIVE_TILE</code>。
-  </dd>
-</dl>
-
-<h4 id="dp3-fixes">修复开发者报告的问题</h4>
-
-<p>
-  开发者报告的许多问题都已得到修复,包括:
-</p>
-
-<ul>
-  <li>在 1 首歌后蓝牙音频播放中断(错误 <a href="https://code.google.com/p/android/issues/detail?id=206889">206889</a>)
-  </li>
-
-  <li>Pixel C 不断崩溃(错误 <a href="https://code.google.com/p/android/issues/detail?id=206962">206962</a>)
-  </li>
-
-  <li>时钟和 Toast 通知问题(错误 <a href="https://code.google.com/p/android/issues/detail?id=203094">203094</a>)
-  </li>
-
-  <li>当通过 USB C 电缆连接到 MacBook Pro 时,Pixel C 重新启动(错误 <a href="https://code.google.com/p/android/issues/detail?id=205432">205432</a>)
-
-  </li>
-
-  <li>日历偏移一天(错误 <a href="https://code.google.com/p/android/issues/detail?id=203002">203002</a>)
-  </li>
-
-  <li>TelephonyManager.getAllCellInfo 返回无效数据(错误 <a href="https://code.google.com/p/android/issues/detail?id=203022">203022</a>)
-  </li>
-
-  <li>Nexus 6p,蓝牙一直断开(错误 <a href="https://code.google.com/p/android/issues/detail?id=208062">208062</a>)
-  </li>
-</ul>
-
-<p>如需已修复问题的完整清单,请参阅 <a href="https://goo.gl/6uCKtf">Issue Tracker</a>。
-</p>
-
-<h3 id="ki">已知问题</h3>
-
-<h4>无障碍功能</h4>
-
-<ul>
-  <li>将间距被设置为近最大水平时,无法侦听 TTS 输出。
-  </li>
-
-  <li>当用户添加工作资料时可能会使无障碍功能和设置中断。
-无障碍状态会在用户下一次触及相关设置时恢复。
-
-  </li>
-</ul>
-
-<h4>相机</h4>
-
-<ul>
-  <li>相机应用表现出了不稳定性;它可能会在各种情况下崩溃,例如当在多窗口模式下启动时。
-
-  </li>
-
-  <li>在全景模式下连按快门可能导致相机应用崩溃。
-
-  </li>
-</ul>
-
-<h4>音频</h4>
-<ul>
-  <li>平台音频播放器问题阻止某些应用程序的正常运行。
-例如,Skype 和其他应用程序受到此问题的影响。
-  </li>
-</ul>
-
-<h4>连接</h4>
-
-
-<ul>
-  <li>当蓝牙低功耗 (BLE) 外围角色设备公布一项服务和一项 BLE 中心角色设备相连时,外围角色设备很快会断开连接。
-
-
-  </li>
-
-  <li>当屏幕关闭时 Wi-Fi 连接可能丢失。
-  </li>
-
-  <li>RFCOMM 连接不稳定,可能导致数据损坏和悬挂的连接。
-
-  </li>
-
-  <li>活动网络状态({@link android.net.NetworkInfo#getState
-  NetworkInfo.getState()} 和 {@link android.net.NetworkInfo#getDetailedState
-  NetworkInfo.getDetailedState()})可能会在一些受限制的后台情况下返回错误的值。
-
-  </li>
-</ul>
-
-
-<h4>
-  启动器
-</h4>
-
-<ul>
-  <li>默认启动器的所有应用托盘都可能在循环关闭/开启屏幕后无响应。
-返回到主屏幕并重新启动所有应用程序托盘可以解决这个问题。
-
-  </li>
-</ul>
-
-<h4>
-  键盘
-</h4>
-
-<ul>
-  <li>在将一个运行 Android 6.0 或更早版本的设备更新到 N Developer Preview 时,Google 键盘不会保留首选项数据,如最近的表情符号和声音设置。
-
-
-  </li>
-
-  <li>Google Indic 托管键盘可能不稳定。
-  </li>
-
-  <li>当在密码字段中输入文本时,用户可以选择俄罗斯语作为输入语言,但键盘仍将为英语。
-这可以防止用户输入俄罗斯语的密码。
-
-  </li>
-</ul>
-
-<h4>
-  区域设置和语言
-</h4>
-
-<ul>
-  <li>当使用从右到左 (RTL) 的语言区域时,系统可能会在重新启动设备后意外切换到从左到右 (LTR) 表示。
-
-  </li>
-</ul>
-
-<h4>媒体</h4>
-
-<ul>
-  <li>Nexus 9 和 Nexus Player 上的媒体播放可能会不稳定,包括播放高清视频出现问题。
-
-  </li>
-</ul>
-
-<h4>
-  多窗口模式
-</h4>
-
-<ul>
-  <li>当在多窗口模式下改变屏幕方向时,设备可能会冻结。
-  </li>
-
-  <li>目前有几个应用程序出现了多窗口模式问题:
-    <ul>
-      <li>当把“Settings &gt; Display &gt; Screen brightness”对接到多窗口时,系统 UI 可能崩溃。
-
-      </li>
-
-      <li>在多窗口模式下启动时,相机应用可能会崩溃。
-      </li>
-
-      <li>在多窗口模式下启动时,YouTube 可能会崩溃。若要修复此问题,您可以在“Storage &gt; Apps &gt; YouTube”中清除 YouTube 应用数据。
-
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>
-  Google Play 服务
-</h4>
-
-<ul>
-  <li>当用户选择一个使用 ASCII 范围外的字母和数字的系统语言区域时,通过 Google Play 服务使用 Google Cast 的应用可能会不稳定。
-
-
-  </li>
-</ul>
-
-<h4>
-  Android for Work 和 Google Apps 设备规范
-</h4>
-
-<ul>
-  <li>当用户在“设备规范状态”屏幕固定的情况下解锁设备时,设备规范应用可能会崩溃。
-
-  </li>
-
-  <li>在启用了基于文件的加密的情况下,在设置了工作资料并随后关闭工作后,用户必须解锁主个人资料屏幕锁定,以便能再次访问工作应用。
-
-
-  </li>
-
-  <li>在移除安全模式锁定并在多窗口下打开工作应用/个人应用时,设备重新启动。
-
-  </li>
-
-  <li>设置 DISALLOW_VPN_CONFIG 会导致设备规范客户端设置的 Always-on-VPN 显示同意对话框。
-
-  </li>
-
-  <li>在 VPN 以 Always-on-VPN 模式连接之前,流量不会锁定。
-  </li>
-</ul>
-
-<h4>
-  外部存储
-</h4>
-
-<ul>
-  <li>当用户将应用从内部存储移动到可采用的外部存储(可能包括 SD 卡和通过 USB 连接的设备)时,应用可能会变得不稳定。
-
-
-  </li>
-</ul>
-
-<h4>
-  Google Play 中的屏幕缩放和多 APK
-</h4>
-
-<ul>
-  <li>在运行 Android N 的设备上,Google Play 服务 9.0.83 错误地报告当前屏幕密度,而不是报告稳定屏幕密度。
-当屏幕缩放在这些设备上启用时,可能会导致 Google Play 选择一个为更小的屏幕设计的多 APK 应用版本。
-
-此问题已在下一版 Google Play 服务中得到修复,并将包含在以后的 Developer Preview 版本中。
-
-
-  </li>
-
-  <li>在运行 Android N 的设备上,Google Play 服务 9.0.83 版目前会报告 Vulkan 支持,但不会报告 Vulkan 版本。
-这可能会导致 Google Play 在有较高版本支持的设备上选择为较低的 Vulkan 支持而设计的多 APK 应用版本。
-
-目前,Google Play Store 不接受使用 Vulkan 版本定位的应用上传。
-这一支持将被添加到未来的 Google Play Store 中,并会在下一版 Google Play 服务(将包括在稍后的 Developer Preview 版本中)中得到修复,任何使用 Google Play 服务 9.0.83 版本的设备都将继续获得面向基本 Vulkan 支持的应用版本。
-
-
-
-
-  </li>
-</ul>
-
-<h4 id="">通知</h4>
-
-<ul>
-  <li>MessagingStyle 不显示发件人为“null”(自己)的通知。
-  </li>
-</ul>
-
-<h4 id="">开发者工具</h4>
-
-<ul>
-  <li>
-    <code>adb</code> 有时可能在使用 JDWP 调试时断开连接。
-  </li>
-</ul>
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-
-
-
-
-
-
-
-<!-- DP2 Release Notes Archive -->
-
-<h2 id="dp2">Developer Preview 2</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>日期:2016 年 4 月<br>
-        构建:NPC91K、NPC91O<br>
-        模拟器支持:x86 &amp; ARM(32/64 位)<br>
-        Google Play 服务:8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp2-new">DP2 的新功能</h3>
-
-<ul>
-  <li>Vulkan(新的 3D 渲染 API)的平台支持,提供明晰、低开销的 GPU(图形处理单元)控制功能,同时大大提升绘图调用密集型应用的性能。
-
-有关详情,请参阅
-<a href="{@docRoot}ndk/guides/graphics/index.html"> 文档</a>。
-  </li>
-
-  <li>新人物表情符号,带肤色支持和新的 Unicode 9 字形。
-  在键盘在调色板中建立对它们的支持之前,肤色和新的表情符号将不会显示。
-开发者不需要进行任何操作便能使用这些新的表情符号,除非应用使用的是非系统字体。
-IME 开发者需要整合对新表情符号的支持。
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/api-overview.html#launcher_shortcuts">启动器快捷键 API</a>:
-应用可以使用 <code>ShortcutManager</code> 来向启动器发送应用内起点的快捷键。
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/features/multi-window.html">多窗口</a>:
-    您现在可以为 Activity 单独指定最小高度和最小宽度。
-此外,一些 API 名称已略有改变。
-  </li>
-</ul>
-
-<h4 id="dp2-fixes">修复开发者报告的问题</h4>
-
-<p>
-  开发者报告的许多问题都已得到修复,包括:
-</p>
-
-<ul>
-  <li>无法连接到隐藏的 SSID 或非广播 Wi-Fi。(错误 <a href="https://code.google.com/p/android/issues/detail?id=203116">203116</a>)
-  </li>
-
-  <li>麦克风在整个活动期间保持静音状态。(错误 <a href="https://code.google.com/p/android/issues/detail?id=205922">205922</a>)
-  </li>
-
-  <li>更改多窗口焦点会暂停 YouTube。(错误 <a href="https://code.google.com/p/android/issues/detail?id=203424">203424</a>)
-  </li>
-
-  <li>直接回复可能关闭打开的活动。(错误 <a href="https://code.google.com/p/android/issues/detail?id=204411">204411</a>)
-  </li>
-
-  <li>各种稳定性修复。
-  </li>
-</ul>
-
-<h3 id="dp2-general">一般公告</h3>
-
-<p>
-  Developer Preview 版本仅针对<strong>应用开发者</strong>,仅适用于兼容性测试和早期开发。
-
-  请注意关于版本的一般注意事项:
-</p>
-
-<ul>
-
-  <li>开发工具组件和支持库已更新为 DP2 版本。
-确保为在开发 DP2 之前更新您的预览开发环境。
-如需有关设置您的开发环境的说明,请参阅 <a href="{@docRoot}preview/setup-sdk.html">设置 Preview</a>
-
-
-  </li>
-
-  <li>此版本在所有设备上都出现了不同的稳定性和性能问题,<strong>不适合在手机或平板电脑上的日常使用</strong>,特别是对于非开发人员。
-
-
-  </li>
-
-  <li>在此版本中,电池寿命和性能尚未优化:
-
-
-    <ul>
-      <li>系统和应用<strong>性能已知会周期性地减缓/卡顿</strong>,设备可能偶尔无响应。
-这些问题可能随着长时间使用而变得更迫切。
-
-      </li>
-
-      <li>电池寿命可能在此版本的屏幕开启和屏幕关闭用例里出现倒退。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>有些<strong>应用可能无法在 Developer Preview 2 上正常</strong>运行。这其中包括 Google 应用和其他应用。
-
-  </li>
-
-  <li>这个早期版本未经<strong>兼容性测试套件 (CTS) 批准</strong>。
-依赖 CTS 批准架构的应用无法运行(例如 Android Pay)。
-
-  </li>
-
-  <li>此预览版支持以下设备:Nexus 5X、Nexus 6、 Nexus 6P、Nexus 9、and Pixel C 以及 General Mobile 4G (Android One)。
-
-即将推出 Nexus Player 支持。
-  </li>
-
-
-  <li><a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> 已被更新,以处理 DP1 和 DP2 之间的 API 变更。
-
-  </li>
-</ul>
-
-<h3 id="dp2-ki">已知问题</h3>
-
-<h4>性能和电池</h4>
-
-<ul>
-  <li>系统和应用<strong>性能已知会周期性地减缓/卡顿</strong>,设备可能偶尔无响应。
-这些问题可能随着长时间使用而变得更迫切。
-
-  </li>
-</ul>
-
-<h4>Google 帐户</h4>
-
-<ul>
-  <li>在有些情况下,<code>AccountManagerService</code> 问题可能会阻止登录 Google 帐户。
-
-  </li>
-</ul>
-
-<h4>系统更新</h4>
-
-<ul>
-  <li>设备可能会在更新到 DP2 后立即重新启动。
-  </li>
-</ul>
-
-<h4>无障碍功能</h4>
-
-<ul>
-  <li>当间距被设置为近最大水平时,文本语音转换 (TTS) 输出侦听出现问题。
-
-  </li>
-</ul>
-
-<h4>蓝牙</h4>
-
-<ul>
-  <li>蓝牙低功耗 (LE) GATT 特征使用错误的写入类型,并且将不会被发送到远程设备。
-因此,举例来说,有些健身设备将无法运行。
-
-  </li>
-</ul>
-
-<h4>设置向导</h4>
-
-<ul>
-  <li>安装向导中的在新设备(或刚刚重置的设备)上从“Your Google Account”恢复数据的选项不可用。
-您必须在安装向导中选择“another Android device”来从现有设备恢复数据,或者将其设置为新设备。
-
-
-  </li>
-</ul>
-
-<h4>原始设备制造商 (OEM) 解锁</h4>
-
-<ul>
-  <li>在有些设备上,当运行 DP2 时,“Developer Options”中的 <strong>Enable OEM unlock</strong> 会变成灰色。
-<br>
-  <strong>解决方法:</strong>访问 <a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a> 来选择加入 Android Beta 计划(如果您尚未选择加入)。
-
-然后,选择退出并接受降级 OTA。
-选择退出会导致设备降级到 Android 6.0。现在,您应该可以在“Developer Options”中选择 <strong>Enable OEM unlock</strong>。
-
-当您降级设备时,个人数据将被删除;但是不管怎样,解锁引导装载程序仍会删除这些数据。
-
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>工作安全性挑战
-    <ul>
-      <li>在迁移到 N 后,或在用户创建工作资料之后,工作资料无法在密钥库中创建秘钥,直到用户更改了模式、PIN 码或密码,或设置了一项工作挑战为止。
-
-
-      </li>
-
-      <li>在直接启动模式下,对设备应用密码限制会导致工作资料被解锁,即使设备是锁定的。
-
-      这会使工作资料变得可以访问,即使它应受到设备锁屏的保护。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>Always on VPN
-    <ul>
-      <li>如果 Always On VPN 模式已打开,但 VPN 却不可用,这表示应用是通过普通网络链接。
-如果应用没有可用的 VPN 连接,这表示应用处于脱机状态。
-
-      </li>
-
-      <li>在 Always On 模式下,当设备以直接启动模式重新启动后,VPN 连接未建立,即使是在用户解锁安全锁屏之后。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>暂停软件包
-    <ul>
-      <li>设备管理员可以暂停关键系统软件包,这可能会导致意外的行为,如拨打电话,即使此时显示了“Telephone disabled”对话框。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>其他
-    <ul>
-      <li>如果当用户插入物理媒体(如 SD 卡)时 {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} 被设置为 true,设置应用会在启动时崩溃。
-
-      </li>
-
-      <li>工作资料中的第一次检查需要几分钟时间完成。
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4 id="vulkan">Vulkan</h4>
-
-<ul>
-   <li>Nexus 5X/6P</li>
-   <ul>
-      <li>将连结数和非零之间的差值作为第一个连结数会导致 {@code vkCreateGraphicsPipeline()} 失败。
-</li>
-      <li>Vulkan 在预期纹理坐标上表现出错误的采样行为。</li>
-      <li>在 multithreadCmdBuffer 示例中,{@code vkCmdClearColorImage()} 会在运行 N-DP2 驱动程序时崩溃。
-</li>
-      <li>{@code vkGetPhysicalDeviceFormatProperties()} 的返回值并未给 {@code VkFormatProperties::linearTilingFeatures} 设置一个值,这会导致取 0 值作为结果。
-
-</li>
-      <li>Vulkan 浮点帧缓冲附件未能正确处理。</li>
-    </ul>
-   <li>Nexus Player</li>
-   <ul>
-      <li>SPIR-V 着色器可能触发驱动程序断言。</li>
-      <li>一些管线配置可能导致 {@code vkCreateGraphicsPipeline()} 崩溃。
-</li>
-  </ul>
-</ul>
-
-<h4>设备特定问题</h4>
-
-<dl>
-  <dt>
-    <strong>Android One</strong>
-  </dt>
-
-  <dd>
-    当设备从插槽 1 切换到插槽2 SIM 时,数据连接失败。
-  </dd>
-
-  <dt>
-    <strong>Pixel C</strong>
-  </dt>
-
-  <dd>
-    无法切换语音搜索“Always On”选项。
-  </dd>
-
-  <dt>
-    <strong>Nexus 6</strong>
-  </dt>
-
-  <dd>
-    除 HDR+ 照片之外的纵向相机照片被损坏。
-
-  </dd>
-
-  <dt>
-    <strong>Nexus Player</strong>
-  </dt>
-
-  <dd>
-    Nexus Player 上的 Netflix 高清内容播放可能失败。
-  </dd>
-
-  <dd>
-    任何依赖于动态视频分辨率变化的应用都可能会在 Nexus Player 上失败。
-
-  </dd>
-
-  <dd>
-    任何使用 VP9 视频编解码器的应用都可能会在 Nexus Player 上失败。
-  </dd>
-</dl>
-
-<!-- DP 1 release notes archive -->
-
-<h2 id="dp1">Developer Preview 1</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>日期:2016 年 3 月<br>
-        构建:NPC56P、NPC56R 已更新:NPC56W、NPC56X<br>
-        模拟器支持:x86 &amp; ARM(32/64 位)<br>
-        Google Play 服务:8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp1-general">一般公告</h3>
-
-<p>
-  Developer Preview 版本仅针对应用开发者,仅适用于兼容性测试和早期开发。
-请注意关于版本的一般注意事项:
-
-</p>
-<ul>
-  <li>此版本在所有设备上都出现了不同的稳定性和性能问题,<em>不适合在手机或平板电脑上的日常使用</em>,特别是对于非开发人员。
-
-
-  </li>
-
-  <li>系统和应用<strong>性能已知会周期性地减缓/卡顿</strong>,设备可能偶尔无响应。
-这些问题可能随着长时间使用而变得更迫切。
-
-  </li>
-
-  <li>电池寿命可能在此版本的屏幕开启和屏幕关闭用例里出现倒退。
-
-  </li>
-
-  <li>有些应用可能无法在 Developer Preview 1 上正常运行。这其中包括 Google 应用和其他应用。
-
-  </li>
-
-  <li>这个早期版本未经兼容性测试套件 (CTS) 批准。依赖 CTS 批准架构的应用将无法运行(例如 Android Pay)。
-
-  </li>
-
-  <li>此预览版支持以下设备:Nexus 5X、Nexus 6、 Nexus 6P、Nexus 9、Nexus Player、and Pixel C 以及 General Mobile 4G (Android One)。
-
-
-  </li>
-</ul>
-
-<h3 id="dp1-platform">平台问题</h3>
-
-<h4>性能和电池</h4>
-
-<ul>
-  <li>系统和应用性能已知会<strong>周期性地减缓/卡顿</strong>,设备可能偶尔无响应。
-这些问题可能随着长时间使用而变得更迫切。
-
-  </li>
-
-  <li>电池寿命可能在此版本的屏幕开启和屏幕关闭用例里出现倒退。
-
-  </li>
-</ul>
-<h4 id="dialer">拨号器</h4>
-
-<ul>
-  <li>拨号器应用不支持直接启动。这将稍后在 N Developer Preview 中解决。
-
-  </li>
-
-  <li>语音邮件播放无效。
-  </li>
-</ul>
-
-<h4>麦克风</h4>
-
-<ul>
-   <li>系统可能在多个应用中和重新启动时错误地保留麦克风静音状态。如果您在一项应用中将麦克风静音,并且此状态保留,打开有任何麦克风静音控件的应用,取消静音麦克风。</li>
-</ul>
-
-<h4 id="ui">系统 UI</h4>
-
-<ul>
-  <li>系统 UI 中的一些新增或修改字符串未被翻译成所有语言。
-
-  </li>
-
-  <li>概览 UI 仍在开发中,并且随时可能更改。例如,我们打算移除当用户切换应用时显示的计时器。
-
-
-  </li>
-
-  <li>设置控件和切换可能很慢,或出现无响应。
-  </li>
-
-  <li>通知的视觉设计可能随时更改。
-  </li>
-
-  <li>在 Gmail 应用中,包括在捆绑通知中的电子邮件直接存档无法正常运行。
-
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>工作安全性挑战
-    <ul>
-      <li>在迁移到 N 后,或在用户创建工作资料之后,工作资料无法在密钥库中创建秘钥,直到用户更改了模式、PIN 码或密码,或设置了一项工作挑战为止。
-
-
-      </li>
-
-      <li>在直接启动模式下,对设备应用密码限制会导致工作资料被解锁,即使设备是锁定的。
-
-      这会使工作资料变得可以访问,即使它应受到设备锁屏的保护。
-
-      </li>
-
-      <li>当用户输入了错误的密码和 PIN 码后,系统不会显示任何信息性消息;相反,它仅清除了输入字段。
-
-此问题不影响模式或指纹输入。
-      </li>
-
-      <li>在平板电脑上,后台显示的工作挑战小得不成比例。
-
-      </li>
-
-      <li>与 N Developer Preview 绑定的 <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">Google Apps 设备规范</a>版本尚不支持工作资料安全性挑战功能。
-
-
-        开发者应使用 <a href="https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> 来测试此功能。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>Always on VPN
-    <ul>
-      <li>如果 Always On VPN 模式开启,但 VPN 却不可用,这表示应用未被指定为通过普通网络连接的 Always On 政策例外。
-
-除非应用被指定为 Always On 政策例外,否则当没有可用的 VPN 连接时,应用会处于脱机状态。
-
-        <ul>
-          <li>在 Always On 模式下,当设备以直接启动模式重新启动后,VPN 连接未建立,即使是在用户解锁安全锁屏之后。
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>改进的联系人
-    <ul>
-      <li>蓝牙 PBAP/MAP 不显示工作联系人的来电显示。
-下一个 Preview 版本将解决此问题。
-      </li>
-    </ul>
-  </li>
-
-  <li>工作模式
-    <ul>
-      <li>Google 即时桌面不显示工作模式是否开启。
-Google 即时桌面也不显示应用暂停状态。
-      </li>
-
-      <li>在用户关闭和开启工作模式后,系统不再显示工作资料应用小工具,如日历。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>暂停软件包
-  </li>
-
-  <li>设备管理员可以暂停关键系统软件包,这可能会导致意外的行为,如拨打电话,即使此时显示了“Telephone disabled”对话框。
-
-
-  </li>
-
-  <li>其他
-    <ul>
-      <li>如果当用户插入物理媒体(如 SD 卡)时 {@link
-      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} 被设置为 true,设置应用会在启动时崩溃。
-
-      </li>
-
-      <li>当用户卸载然后重新安装一项应用后,{@code DPM.setPackagesSuspended} 状态不会持续。
-在卸载/重新安装后,应用应保持暂停,或者暂停的应用应无法卸载。
-
-
-      </li>
-
-      <li>工作资料中的第一次检查需要几分钟时间完成。
-这可能导致设备需要超过正常的时间才能在 Play EMM API 中可见。
-
-      </li>
-
-      <li>工作资料应用的通知不对安装在个人资料中的通知侦听器可见。
-其结果是,系统不能按预期显示通知。
-
-      </li>
-
-    </ul>
-  </li>
-</ul>
-
-<h4 >键盘</h4>
-
-<ul>
-  <li>键盘和 Android 设备之间的蓝牙配对可能不稳定。
-  </li>
-</ul>
-
-<h4 >视频</h4>
-
-<ul>
-<li>视频播放可能滞后并显示中断。</li>
-</ul>
-
-<h4>Wi-Fi</h4>
-
-<ul>
-  <li>Wi-Fi 发生了一些重构,可能改变 API 极端状况下的行为。
-具体来说,尝试连接特定网络,或尝试断开网络连接的应用应重新测试。
-
-  </li>
-
-  <li>旧版 DHCP 客户端已经从平台中移除。平台支持的唯一 DHCP 客户端是在 M 中引入的 DHCP 客户端。
-
-  </li>
-</ul>
-
-<h4>直接启动</h4>
-
-<ul>
-  <li>NFC 在第一次解锁前将无法运行。
-    <ul>
-      <li>当启用了蓝牙的电话重新启动时,蓝牙不会自动开启。
-您必须手动重新启用蓝牙。
-      </li>
-
-      <li>在某些情况下,默认铃声不在有来电和短信响起。
-此行为将在下一个 N Preview 版本中修复,但括一项例外(和解决方法)。
-
-      </li>
-
-      <li>在未刚刚清除数据的设备(自设置为直接启动模式以来至少已启动一次的设备),默认的通知铃声不响。
-
-用户可以通过从设置中手动选择铃声来解决此问题。
-
-      </li>
-
-      <li>在运行 N Developer Preview 版本的设备上,直接启动会默认启用。
-若要启用用于测试和开发的直接启动,前往“Developer Options”,然后点击“Convert to File Encryption”。
-
-      在这个开发者预览版本中,这要求恢复出厂设置为重新分配,并将您的设备格式重定为基于文件的加密。
-
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Android TV 画中画</h4>
-
-<ul>
-  <li>Recents UI 中的 PIP 集成并不全面,并且随时可能更改。
-
-    <ul>
-      <li>PIP 窗口的动画不顺畅。Preview 未来版本将改善这一点。
-
-      </li>
-    </ul>
-  </li>
-
-  <li style="list-style: none">Preview 未来版本将改善 PIP 的视觉设计和布局调整。
-
-  </li>
-</ul>
-
-<h4>错误报告</h4>
-
-<ul>
-  <li>错误报告并不总是能成功完成(作为一种解决方法,有时它们仍然可以通过内部存储空间内的文档提供程序访问。
-
-
-  </li>
-</ul>
-
-<h4>分屏多窗口</h4>
-
-<ul>
-  <li>当进入分屏模式时,应用可能会发生崩溃和意外的 UI 行为。
-有些应用必须由应用开发者修复。
-
-  </li>
-
-  <li>如果一个应用面向的是 N 之前的 Android 平台版本,应用可能无法运行,分屏 Toast 通知可能会多次显示。
-
-  </li>
-
-  <li>在使用有固定屏幕方向的应用的同事长按 Overview 按钮可能导致意外应用行为。
-
-  </li>
-
-  <li>在调整大小时应用可能会闪烁。
-  </li>
-
-  <li>动画尚未最后确定。
-  </li>
-</ul>
-
-<h4>输入方法</h4>
-
-<ul>
-  <li>当<b>使用系统语言</b>时 Google 键盘意外变回通用 Google 键盘,但 Google 键盘不支持系统语言首选项中选定的任何语言。
-
-它应恢复为 American English。
-
-    <p>
-      您可以通过添加至少一种 Google 键盘支持的语言来解决此问题。
-
-    </p>
-  </li>
-</ul>
-
-<h4>无障碍功能</h4>
-
-<ul>
-  <li>话语提示显示的功能问题包括可能导致系统崩溃或缺少话语提示语音反馈的通知、快速设置图块和多窗口显示。
-
-下一个 Preview 版本将解决这些问题。
-
-  </li>
-</ul>
-
-<h3 id="dp1-device-sp">特定于设备的说明和问题</h3>
-
-<h4>Nexus Player</h4>
-<ul>
-  <li>在这一版的 Preview 中,Nexus Player 预计会出现视频播放、应用兼容性和稳定性问题。
-
-  </li>
-</ul>
-
-<h4>Pixel C</h4>
-<ul>
-<li>多窗口调整大小可能会导致崩溃。</li>
-</ul>
-
-<h4>Nexus 9</h4>
-<ul>
-<li>Nexus 9 设备可能无法在通过 Android Beta 计划获得空中下载 (OTA) 更新后启动。
-要恢复此问题,您可以尝试手动安装 OTA 映像。
-如需了解详细信息,请参阅<a href="{@docRoot}preview/download-ota.html">应用设备 OTA 映像 </a>。
-
-</li>
-</ul>
-
diff --git a/docs/html-intl/intl/zh-cn/preview/features/direct-boot.jd b/docs/html-intl/intl/zh-cn/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/zh-cn/preview/features/direct-boot.jd
rename to docs/html-intl/intl/zh-cn/training/articles/direct-boot.jd
index 306a7a4..20f8b57 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/zh-cn/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>本文内容</h2>
   <ol>
     <li><a href="#run">请求在直接启动时运行</a></li>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/zh-cn/training/articles/scoped-directory-access.jd
similarity index 91%
rename from docs/html-intl/intl/zh-cn/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/zh-cn/training/articles/scoped-directory-access.jd
index 4ff5f36..83d50b4 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/zh-cn/training/articles/scoped-directory-access.jd
@@ -8,8 +8,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>本文内容</h2>
   <ol>
     <li><a href="#accessing">访问外部存储目录</a></li>
@@ -75,8 +75,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>图 1.</strong> 一个请求访问 Pictures 目录的应用。
 </p>
 
@@ -142,8 +142,8 @@
 如果用户拒绝了一项请求,而应用再次请求访问,UI 会显示一个 <b>Don't ask again</b> 复选框:
 </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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-dont-ask_2x.png 2x" />
 <p class="img-caption"><strong>图 1.</strong> 应用第二次请求访问可移动介质。
 </p>
 
diff --git a/docs/html-intl/intl/zh-cn/preview/features/security-config.jd b/docs/html-intl/intl/zh-cn/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/zh-cn/preview/features/security-config.jd
rename to docs/html-intl/intl/zh-cn/training/articles/security-config.jd
index e029a03..19e29b3 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
+++ b/docs/html-intl/intl/zh-cn/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>本文内容</h2>
 <ol>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/data-saver.jd b/docs/html-intl/intl/zh-cn/training/basics/network-ops/data-saver.jd
similarity index 99%
rename from docs/html-intl/intl/zh-cn/preview/features/data-saver.jd
rename to docs/html-intl/intl/zh-cn/training/basics/network-ops/data-saver.jd
index 203e8b1..4e3ede1 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/network-ops/data-saver.jd
@@ -4,8 +4,8 @@
 page.image=images/cards/card-nyc_2x.jpg
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>
       本文内容
     </h2>
@@ -231,4 +231,4 @@
     从白名单中移除指定软件包 UID,以阻止当 Data Saver 启用时后台按流量计费的流量消耗。
 
   </dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/picture-in-picture.jd b/docs/html-intl/intl/zh-cn/training/tv/playback/picture-in-picture.jd
similarity index 97%
rename from docs/html-intl/intl/zh-cn/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/zh-cn/training/tv/playback/picture-in-picture.jd
index 27606a9..6cfa815 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/zh-cn/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>本文内容</h2>
 <ol>
@@ -59,7 +59,7 @@
 
 用户还可以通过“最近使用记录”关闭 PIP 窗口。</p>
 
-<img src="{@docRoot}preview/images/pip-active.png" />
+<img src="{@docRoot}images/android-7.0/pip-active.png" />
 <p class="img-caption"><strong>图 1.</strong> 用户在主屏幕上浏览内容时屏幕角落窗口播放画中画视频。
 
 </p>
@@ -116,7 +116,7 @@
 <p>在媒体控制栏上添加 PIP 按钮可以方便用户在控制视频播放的同时切换到 PIP 模式。
 </p>
 
-<img src="{@docRoot}preview/images/pip-button.png" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>图 1.</strong> 媒体控制栏上的画中画按钮。
 </p>
 
diff --git a/docs/html-intl/intl/zh-cn/preview/features/tv-recording-api.jd b/docs/html-intl/intl/zh-cn/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/zh-cn/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/zh-cn/training/tv/tif/content-recording.jd
index 2dec87d..754e065 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/zh-cn/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>本文内容</h2>
   <ol>
     <li><a href="#supporting">指示支持录制</a></li>
diff --git a/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd b/docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0-changes.jd
similarity index 97%
rename from docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
rename to docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0-changes.jd
index fb1c1db..71569a3 100644
--- a/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0-changes.jd
@@ -6,8 +6,8 @@
 @jd:body
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>此文件內容</h2>
 
@@ -74,7 +74,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>圖 1.</strong> 休眠如何套用第一層級的系統活動限制以延長電池使用時間的示意圖。
 
@@ -93,7 +93,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" />
 <p class="img-caption">
   <strong>圖 2.</strong> 休眠如何在裝置靜置不動一段時間之後套用第二層級的系統活動限制的示意圖。
 
@@ -229,10 +229,10 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
diff --git a/docs/html-intl/intl/zh-tw/preview/samples.jd b/docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0-samples.jd
similarity index 74%
rename from docs/html-intl/intl/zh-tw/preview/samples.jd
rename to docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0-samples.jd
index 265c0ff..0cb83b6 100644
--- a/docs/html-intl/intl/zh-tw/preview/samples.jd
+++ b/docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0-samples.jd
@@ -16,7 +16,7 @@
 
 
 <h3 id="mw">多視窗 Playground</h3>
-<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<img src="{@docRoot}images/android-7.0/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
 <p>
   此範例示範如何在您的應用程式中發揮多視窗使用者介面的功能。
 
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   這是現有的範例,它會顯示使用 NotificationCompat 傳送通知的簡單服務。來自使用者的每個未閱讀交談都會以個別通知方式傳送。
 
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
 <p>
   這是現有的範例,它示範如何使用 NotificationManager 告知使用者應用程式目前顯示的通知數目。
 
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   此範例示範如何在裝置加密的儲存空間 (裝置開機後即一律可用) 中儲存及存取資料。
 
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   此範例示範如何讀取及寫入特定目錄的資料,同時要求較少的權限。
 
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">在 GitHub 上取得</a>
 
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/api-overview.jd b/docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0.jd
similarity index 97%
rename from docs/html-intl/intl/zh-tw/preview/api-overview.jd
rename to docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0.jd
index e5fdf8d..2e73e4b 100644
--- a/docs/html-intl/intl/zh-tw/preview/api-overview.jd
+++ b/docs/html-intl/intl/zh-tw/about/versions/nougat/android-7.0.jd
@@ -7,8 +7,8 @@
 
 
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>主要開發人員功能</h2>
   <ol>
       <ul style="list-style-type:none;">
@@ -70,7 +70,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
 <p class="img-caption">
   <strong>圖 1.</strong> 在分割畫面模式中執行的應用程式。
 </p>
@@ -126,15 +126,15 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/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">
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
 </div>
 
 
@@ -261,7 +261,7 @@
 <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">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>圖 4.</strong> [設定] 中的 Data Saver。
@@ -296,7 +296,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
 
 <p class="img-caption" style="padding-left:2em;">
   <strong>圖 5.</strong> 通知欄中的快速設定磚。
diff --git a/docs/html-intl/intl/zh-tw/preview/index.jd b/docs/html-intl/intl/zh-tw/about/versions/nougat/index.jd
similarity index 100%
rename from docs/html-intl/intl/zh-tw/preview/index.jd
rename to docs/html-intl/intl/zh-tw/about/versions/nougat/index.jd
diff --git a/docs/html-intl/intl/zh-tw/design/patterns/notifications.jd b/docs/html-intl/intl/zh-tw/design/patterns/notifications.jd
deleted file mode 100644
index 3e3f59c..0000000
--- a/docs/html-intl/intl/zh-tw/design/patterns/notifications.jd
+++ /dev/null
@@ -1,872 +0,0 @@
-page.title=通知
-page.tags="notifications","design","L"
-@jd:body
-
-  <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>開發人員文件</h3>
-    <p>通知使用者</p>
-  </div>
-</a>
-
-<a class="notice-designers" href="notifications_k.html">
-  <div>
-    <h3>Android 4.4 及較早版本中的通知</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>影片</h3>
-    <p>DevBytes:Android L 開發者預覽版中的通知</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>通知系統可以隨時知會使用者有關應用程式中的相關事件與及時事件,例如來自朋友的新聊天訊息。您可以將通知視為一種事件發生時警示使用者的新聞管道,或是在使用者沒注意時,記錄事件的日誌 &mdash; 並會視情況跨所有 Android 裝置且同步處理。
-
-
-
-
-
-</p>
-
-<h4 id="New"><strong>Android 5.0 新功能</strong></h4>
-
-<p>在 Android 5.0 中,通知會透過結構化、視覺化和功能化的效果接收重要更新:
-</p>
-
-<ul>
-  <li>通知已經有視覺方面的變更,與新的材料設計風格一致。
-</li>
-  <li> 現在可在裝置的鎖定螢幕上提供通知,而敏感內容仍可隱藏於其背後。
-
-</li>
-  <li>當裝置於使用中收到高優先順序的通知時,會使用稱為預告 (heads-up) 通知的新格式。
-</li>
-  <li>雲端同步化通知:關閉您其中一部 Android 裝置的通知,隨之也會在其他裝置上關閉此通知。
-
-</li>
-</ul>
-
-<p class="note"><strong>注意:</strong>此版本 Android 中的通知設計和先前版本大相徑庭。
-
-如需有關先前版本通知的設計資訊,請參閱
-<a href="./notifications_k.html">Android 4.4 及較早版本中的通知</a>。</p>
-
-<h2 id="Anatomy">通知的詳細分析</h2>
-
-<p>本節會重溫通知的基礎功能,以及其如何可在不同類型裝置上出現。
-</p>
-
-<h3 id="BaseLayout">基礎版面配置</h3>
-
-<p>至少,所有通知都必須包含一個基礎版面配置,它包含:</p>
-
-<ul>
-  <li> 通知的<strong>圖示</strong>。該圖示代表原始應用程式。如果應用程式會產生一種以上的通知類型,則圖示也有可能表示通知類型。
-
-
-</li>
-  <li> 一個通知<strong>標題</strong>和額外<strong>文字</strong>。
-</li>
-  <li> 一個<strong>時間戳記</strong>。</li>
-</ul>
-
-<p>針對先前平台版本,使用 {@link android.app.Notification.Builder Notification.Builder}
-所建立的通知其外觀與運作方式和在 Android 5.0
-中的一樣,只是在系統為您處理的方式上有一點樣式上的變更。
-如需更多有關 Android 先前版本通知的詳細資訊,請參閱
-<a href="./notifications_k.html">Android 4.4 及較早版本中的通知</a>。
-</p></p>
-
-
-    <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      手持裝置通知的基礎版面配置 (左),以及穿戴裝置上的相同通知 (右),都帶有使用者相片及一個通知圖示
-
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">擴充的版面配置</h3>
-
-
-<p>您可以選擇到底要讓您應用程式的通知提供多詳細的資料。
-通知可以顯示訊息的前幾行,也可以顯示較大的影像預覽。
-此額外資訊可提供使用者更多內容,而且 &mdash; 在某些情況下 &mdash; 可讓使用者讀取完整訊息。
-
-
-使用者可以捏合縮放或執行單手指滑動,在精簡的版面配置與擴充的版面配置間切換。
-
-
- 對於單一事件通知,Android 提供三個擴充版面配置範本
-(文字、收件匣和影像),讓您可以在應用程式中使用。
-以下的影像顯示單一事件通知在手持裝置 (左) 和穿戴裝置 (右) 上的外觀。
-
-</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">動作</h3>
-
-<p>Android 支援可以在通知底端顯示的選用動作。透過動作,使用者可針對特定通知,從通知欄 (notification shade) 內處理最常見的工作,而無需開啟原始啟動的應用程式。這可加速互動,而且在配合滑動關閉
-(swipe-to-dismiss)
-時,有助使用者專注於高重要性的通知。
-
-
-
-</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" />
-
-
-
-<p style="clear:both">明智地決定要在通知中要納入多少個動作。
-您納入的動作愈多,就會發現創造出愈複雜的通知。
-請納入最緊迫重要且有意義的動作,限制自己儘可能使用最少數目的動作。
-
-
-</p>
-
-<p>適合用於通知上的動作包含:</p>
-
-<ul>
-  <li> 必須是必要、頻繁且典型的想要顯示內容類型
-
-  <li> 可讓使用者快速完成工作
-</ul>
-
-<p>避免下列狀況:</p>
-
-<ul>
-  <li> 模稜兩可
-  <li> 和通知的預設動作相同 (如「讀取」或「開啟」)
-
-</ul>
-
-
-
-<p>您最多可以指定三個動作,每個動作都由一個動作圖示與名稱組成。
-
- 為簡單的基礎版面配置新增動作,可讓通知變得更具擴充性
---
-即使通知並未具備擴充的版面配置。由於動作只針對擴充的通知顯示,其他時候則隱藏,請確認使用者可從通知內呼叫的任何動作,也可以從關聯的應用程式中使用。
-
-
-
-
-</p>
-
-<h2 style="clear:left">預告通知</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" />
-  <p class="img-caption">
-    預告通知 (來電、高優先順序)
-出現在沉浸式應用程式之上的範例
-
-  </p>
-</div>
-
-<p>當高優先順序的通知到達 (如右) 時,會對使用者呈現很短的時間,且會顯示可能執行動作的擴充版面配置。
-
-</p>
-<p> 在這段時間之後,通知會退回至通知欄。
-如果通知的<a href="#correctly_set_and_manage_notification_priority">優先順序</a>被標記為「高」、「最大」或「全螢幕」,就會取得預告通知。
-</p>
-
-<p><b>預告通知的好範例</b></p>
-
-<ul>
-  <li> 使用裝置時有來電</li>
-  <li> 使用裝置時啟動鬧鐘功能</li>
-  <li> 新簡訊</li>
-  <li> 電池電力不足</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">指導方針</h2>
-
-
-<h3 id="MakeItPersonal">提供個人設定</h3>
-
-<p>針對由另一人傳送項目的通知
-(如郵件或狀態更新),使用
-{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()} 納入對方提供的影像。也將對方的資訊附加至通知的中繼資料中
-(請參閱 {@link android.app.Notification#EXTRA_PEOPLE})。</p>
-
-<p>您通知的主要圖示仍會顯示,這樣使用者就可以將主要圖示與狀態列中的可見圖示關聯起來。
-
-</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" />
-<p style="margin-top:10px" class="img-caption">
-  通知會顯示觸發通知的人及其傳送的內容。
-</p>
-
-
-<h3 id="navigate_to_the_right_place">導覽至正確的地方</h3>
-
-<p>當輕觸通知的本文時
-(在動作按鈕之外),請將您的應用程式開啟至使用者可以檢視的地方,並根據通知中引用資料進行動作。
-
-在多數情況下,這將是單一資料項目 (如訊息) 的詳細資料檢視,但如果通知被堆疊時,也可能會是概述檢視。
-
-如果您的應用程式會將使用者帶到應用程式頂層之下的任何地方,則請將導覽過程插入應用程式的返回堆疊中,這可以讓使用者能夠按下系統的返回按鈕,返回至頂層。
-
-如需詳細資訊,請見<a href="{@docRoot}design/patterns/navigation.html#into-your-app">導覽</a>設計模式中的「透過主螢幕視窗小工具和通知,導覽至您的應用程式」<em></em>。
-
-</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">正確設定和管理通知優先順序
-
-</h3>
-
-<p>Android 支援對通知設定優先順序的旗標。此旗標可與其他通知旗標比較,影響通知顯示的位置,這有助於確保使用者一律會先看到最重要的通知。
-
-
-在發佈通知時,您可以從以下優先順序等級選擇:
-
-</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>優先順序</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>使用</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>用於關鍵且緊急的通知,警示使用者注意此通知具時效性或必須在繼續特定工作前先解決的情況。
-
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>主要用於重要通訊,例如內容為使用者特別感興趣的郵件或聊天事件。高優先順序通知會觸發預告通知的顯示。
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>用於不屬於此處所述任何其他優先事項類型的所有通知。</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>用於您希望使用者能夠被告知,但不那麼緊急的通知。
-低優先順序通知往往出現在清單的底端,因此適合於公共或間接的社交更新:
-
-使用者已要求針對這類事件通知,但這些通知一律不會優先於緊急或直接通訊。
-
-
-</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>用於內容關聯或背景資訊,例如天氣資訊或內容關聯位置的資訊。最低優先順序通知不會出現在狀態列。
-
-使用者會在展開通知欄時找到這些通知。
-</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>如何選擇合適的優先順序</strong>
-
-</h4>
-
-<p><code>DEFAULT</code>、<code>HIGH</code> 和 <code>MAX</code> 為可中斷的優先順序等級,且有打斷使用者正進行動作的風險。
-
-如要避免惹惱您應用程式的使用者,請將可中斷的優先順序保留給下列通知:
-</p>
-
-<ul>
-  <li> 涉及另一人</li>
-  <li> 具時效性</li>
-  <li> 可能會立即變更使用者在現實世界中的行為</li>
-</ul>
-
-<p>對使用者而言,設定為 <code>LOW</code> 和 <code>MIN</code> 的通知仍可能很有價值:
-很多通知 -- 就算不是大多數 -- 並不需要使用者立即注意,或透過振動使用者的手腕加以提醒;但在使用者選擇查看通知時,這些通知仍會包含使用者覺得有價值的資訊。
-
-
-<code>LOW</code> 和 <code>MIN</code>
- 優先順序通知的準則包含:</p>
-
-<ul>
-  <li> 不會牽涉到別人</li>
-  <li> 不具時效性</li>
-  <li> 包含使用者可能感興趣,但可能在空閒時才會瀏覽的內容
-</li>
-</ul>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" />
-
-
-<h3 style="clear:both" id="set_a_notification_category">設定通知類別
-</h3>
-
-<p>如果您的通知屬於某個預先定義的類別
-(詳見下列說明),則請據以指派。
-通知欄 (或任何其他通知接聽器) 等系統 UI
-可能會使用此資訊,決定排名和篩選結果。
-</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>來電 (語音或視訊) 或類似的同步化通訊要求
-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>傳入的直接訊息 (簡訊、即時訊息等)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>非同步大量郵件 (電子郵件)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>「行事曆」事件</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>宣傳或廣告</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>鬧鐘或計時器</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>長時間執行的背景操作其進度</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>社交網路或共用更新</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>背景操作或驗證狀態中的錯誤</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>播放的媒體傳輸控制</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>系統或裝置狀態更新。保留供系統使用。</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>執行背景服務的表示</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>針對單一件事的特定、及時建議。例如,新聞應用程式可能會想推薦其認為使用者下一步想要閱讀的新聞報導。
-
-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>有關裝置或內容關聯狀態的進行中資訊</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">概述您的通知</h3>
-
-<p>當您的應用程式嘗試傳送的通知,但已有類型相同的通知仍在等待中,則請針對應用程式將這些相同類型的通知合併為單一概述通知,而不要建立新物件。
-
-</p>
-
-<p>概述通知會建立概述描述,並讓使用者瞭解特定種類的通知有多少數目正在等待處理。
-
-</p>
-
-<div class="col-6">
-
-<p><strong>不要這樣做</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>請這樣做</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" />
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">您可以使用擴充摘要版面配置,針對組成概述的個別通知,提供更多詳細資料。
-
-這種方法可讓使用者更能感覺出哪些通知正處於等待處理,以及是否夠有趣,以便在關聯應用程式中詳細閱讀。
-
-
-
-</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" />
-  <p class="img-caption">
-  概述實際上是通知的展開和收縮 (使用 <code>InboxStyle</code>)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">讓通知成為可選用的
-</h3>
-
-<p>使用者應該總是能夠控制通知。讓使用者可以停用您應用程式的通知,或變更其警示屬性,如鬧鐘聲音或是否要使用振動,方法則是為您的應用程式設定新增通知設定項目。
-
-
-
-</p>
-
-<h3 id="use_distinct_icons">使用易於分辨的的圖示</h3>
-<p>使用者應該能瞄一下通知區域,即可以分辨哪些種類的通知目前正在等待處理。
-
-</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" />
-</div>
-
-  <div><p><strong>請這樣做</strong></p>
-    <p>查看 Android 應用程式圖示,
-Android 應用程式已為您的應用程式提供外觀易於分辨的通知圖示。
-</p>
-
-    <p><strong>請這樣做</strong></p>
-    <p>針對小圖示使用<a href="/design/style/iconography.html#notification">通知圖示樣式</a>,針對您的動作列圖示使用 Material Light <a href="/design/style/iconography.html#action-bar">動作列圖示樣式</a>。
-
-
-
-</p>
-<p ><strong>請這樣做</strong></p>
-<p >讓圖示保持看起來簡單的狀態,避免因過多的詳細資料造成使用者難以看清楚。
-</p>
-
-  <div><p><strong>不要這樣做</strong></p>
-    <p>將任何額外的
-Alpha
-(變暗或淡出)
-置入您的小圖示和動作圖示之中;它們的邊緣可能會有反鋸齒狀,但因為 Android 使用這些圖示做為遮罩
-(也就是說,只使用 Alpha 通道),所以影像通常會以完全透明度來繪製。
-</p>
-
-</div>
-<p style="clear:both"><strong>不要這樣做</strong></p>
-
-<p>使用顏色以區分您與其他人的應用程式。通知圖示應該只是個白色圖示透明背景的背景影像。
-</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">可以調整通知 LED 適當開啟
-</h3>
-
-<p>許多 Android 裝置具備通知 LED,可用於當螢幕關閉時通知使用者有新事件。
-
-優先順序等級為<code>MAX</code>、<code>HIGH</code> 和 <code>DEFAULT</code> 的通知,
-應該要讓 LED 亮起,而只有低優先順序 (<code>LOW</code> 和 <code>MIN</code>) 的通知則不需要。
-
-</p>
-
-<p>使用者對通知的控制應該延伸到 LED 上。當您使用 DEFAULT_LIGHTS,LED 會亮白色。
-
-除非使用者已明確自訂通知,否則您的通知不應該使用其他顏色。
-
-</p>
-
-<h2 id="building_notifications_that_users_care_about">建立使用者喜歡的通知
-</h2>
-
-<p>若要建立使用者喜歡的應用程式,精心設計您的通知非常重要。通知代表您應用程式的聲音,並有助於您應用程式的個性。
-
-
-非必要或非重要的通知會讓使用者不高興,這會讓他們覺得應用程式想要吸引注目不擇手段,所以請明智地使用通知。
-
-
-</p>
-
-<h3 id="when_to_display_a_notification">顯示通知的時機</h3>
-
-<p>若要建立人們喜歡使用的應用程式,重要的是要體認到使用者的注意與專注是必須加以保護的資源。
-
-雖然 Android 的通知系統已重新設計,儘量降低通知對使用者注意力的影響。但仍然必須警覺,通知會中斷使用者的工作流程。在規劃您的通知時,請先自問:通知是否足夠重要到可以合理地中斷使用者。
-
-
-
-
-
-
-如果您不確定,則讓使用者可以使用您應用程式的通知設定,或調整通知優先順序旗標為 <code>LOW</code> 或 <code>MIN</code>,避免使用者在從事其他工作時因此分心。
-
-
-
-</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   具時效性的通知範例
-  </p>
-
-<p>妥善規劃的應用程式只會在必要時才出現,但有幾個情況的確有益於應用程式透過無提示通知中斷使用者的行為。
-</p>
-
-<p>通知主要還是使用於<strong>具時效性時間的事件</strong>,特別是當這些同步事件<strong>涉及其他人</strong>的時候。
-比如說,傳入的聊天是通訊的即時、同步形式:
-
-另一個使用者正主動等待您的回應。
-「行事曆」事件是何時使用通知吸引使用者注意的另一個好例子,因為事件即將發生,而「行事曆」事件通常牽涉到其他人。
-
-
-</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">不顯示通知的時機
-</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" />
-</div>
-
-<p>在許多其他情況下,通知並不適當:</p>
-
-<ul>
-  <li> 當通知並非直接針對使用者,或者資訊並非真正具時效性時,請避免通知使用者。
-
-例如,來自社交網路的非同步與間接更新,通常不是即時中斷的好時機。
-
-
-對於重視這些狀況的使用者,可以讓他們自行選擇加入通知。
-</li>
-  <li> 如果相關的新資訊目前正在螢幕上,則不要建立另一個通知。
-反之,直接在前後關係中使用應用程式本身的 UI 通知使用者有新資訊。
-
-
-  例如,當使用者正與另一位使用者聊天時,聊天應用程式不應建立系統通知。
-</li>
-  <li> 如果應用程式或系統可以不干擾使用者而解決問題,就不要因為如儲存或同步化資訊,或更新應用程式等低層級的技術操作而中斷使用者活動。
-
-</li>
-  <li> 如果可能的話,就讓應用程式能自行從錯誤恢復,在不需要使用者進行任何動作時,就不要告知他們錯誤而中斷使用者的活動。
-
-</li>
-  <li> 不要建立無實質內容的通知,也不要建立內容僅是在廣告您應用程式的通知。
-
-通知應該要能夠提供實用、及時的新資訊,而非只是為了啟動一個應用程式。
-
-</li>
-  <li> 請不要為了讓您的品牌出現在使用者面前,而建立多餘的通知。
-
-  這類通知會讓您的使用者感到失望並不願意使用您的應用程式。能夠提供少量的更新資訊並可以吸引使用者注意您應用程式的最佳方式,是開發一個小工具,讓使用者可以選擇放置在主畫面上。
-
-
-
-
-</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">與通知互動
-</h2>
-
-<p>通知可由狀態列上的圖示表示,並可以透過開啟通知匣來存取。
-
-</p>
-
-<p>輕觸通知會開啟相關應用程式,顯示符合通知的詳細資料內容。對通知往左右滑動,可以將通知從通知匣中移除。
-
-</p>
-
-<h3 id="ongoing_notifications">進行中通知</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" />
-      <p class="img-caption">
-    因為音樂播放的緣故所以有進行中通知
-  </p>
-</div>
-<p>進行中通知可讓使用者得知在背景中正在進行程序的資訊。例如,音樂播放程式會在通知系統中宣告正在播放的曲目,除非使用者停止曲目,否則就會繼續宣告。
-
-
-
-進行中通知也可以針對如下載檔案或編碼影片等耗時較長的工作,向使用者顯示目前進度。
-
-使用者無法手動將進行中通知從通知匣移除。
-</p>
-
-<h3 id="ongoing_notifications">媒體播放</h3>
-<p>在 Android 5.0 中,鎖定螢幕不會針對已過時的
-{@link android.media.RemoteControlClient} 類別,顯示傳輸控制項。但鎖定螢幕「的確」<em></em>會顯示通知,所以每個應用程式的播放通知,現在都已經是使用者從鎖定狀態控制播放的主要方法。
-
-這個行為可讓應用程式進一步控制以何種方式顯示哪些按鈕,同時無論螢幕是否鎖定,都能為使用者提供一致性的體驗。
-
-
-</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">對話和快顯通知
-</h3>
-
-<p>您的應用程式目前若不在畫面上,就不應建立對話或快顯通知。
-對話或快顯通知只在使用者於您應用程式內採取動作時產生立即回應時才顯示。至於使用對話與快顯通知的進一步指引,請參閱<a href="/design/patterns/confirming-acknowledging.html">確認和確認完成</a>。
-
-
-
-</p>
-
-<h3>排名和排序</h3>
-
-<p>通知就是新聞,所以基本上是以逆時間順序顯示,同時會針對應用程式指定的通知<a href="#correctly_set_and_manage_notification_priority">優先順序</a>,給與特殊考慮。
-
-
-</p>
-
-<p>通知是鎖定螢幕的重要部分,並會在裝置重新顯示螢幕時明確作用。
-
-鎖定螢幕上的空間有限,所以更重要的是辨別出最緊急或相關的通知。
-
-基於這個理由,Android 針對通知提供了更複雜的排序演算法,並同時考慮:
-
-</p>
-
-<ul>
-  <li> 時間戳記和應用程式指定的優先順序。</li>
-  <li> 通知最近是否以聲音或振動干擾使用者。
-(也就是說,如果電話剛發出一個聲響,而使用者想要知道「剛剛發生什麼事?」,鎖定螢幕應該以瞄一下就能取得通知的方式來回應使用者。
-)
-
-</li>
-  <li> 任何使用 {@link android.app.Notification#EXTRA_PEOPLE} 附加至該通知的人員,尤其是他們是否為標記星號的連絡人。
-</li>
-</ul>
-
-<p>要善用這種排序,請著重於您想要建立的使用者體驗,而非著眼於清單上的任何特定排名位置。
-
-</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Gmail 通知使用預設的優先順序,所以通常排序低於像 Hangouts 等即時訊息應用程式,但當有新郵件進來時,會暫時立即提升。
-
-
-
-
-  </p>
-
-
-<h3>在鎖定螢幕上</h3>
-
-<p>由於通知可見於鎖定螢幕上,因此使用者隱私是特別重要的考量。
-
-通知通常包含敏感資訊,而且不一定要顯示給拿起裝置並打開顯示的任何人。
-
-</p>
-
-<ul>
-  <li> 針對具有安全鎖定螢幕 (PIN、圖案或密碼) 的裝置,介面有公用和私密兩部分。
-公用介面可以顯示在安全鎖定螢幕上,因此任何人都可看見。
-私密介面是鎖定螢幕背後的世界,只在使用者登入裝置時才會顯示。
-</li>
-</ul>
-
-<h3>使用者控制安全鎖定螢幕上顯示的資訊</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" />
-      <p class="img-caption">
-    鎖定螢幕上的通知,以及使用者解鎖裝置後顯示的內容。
-  </p>
-</div>
-
-<p>當設定安全鎖定螢幕時,使用者可以選擇隱藏來自安全鎖定螢幕的機密詳細資料。
-在這種情況下,系統 UI 會考慮通知的「可見度」<em></em>等級,判斷可以顯示何種內容。
-
-</p>
-<p> 如要控制可見度等級,可以呼叫
-<code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>,並指定下列值之一:
-</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>。
-顯示通知的完整內容。
-  如果未指定可見度,則這會是系統預設值。</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>。
-在鎖定螢幕上,顯示這個通知存在的基本資訊,
-包括通知圖示和發佈通知的應用程式。通知詳細資料的其他部分則不會顯示。
-但請記住的下列幾點:
-  <ul>
-    <li> 如果您想要提供您通知的不同公用版本,
-以便顯示在安全鎖定螢幕上,
-請在 <code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>
-欄位中提供一個取代的「通知」物件。
-    <li> 此設定可以讓您的應用程式有機會建立內容的改編版本,非常實用但卻不會透露個人資訊。
-考慮簡訊應用程式的例子,
-其通知包含簡訊的文字和傳送者的姓名與連絡人圖示。
-此通知應該是 <code>VISIBILITY_PRIVATE</code>,但 <code>publicVersion</code> 仍包含像「3 個新訊息」等實用資訊,
-但卻又不提供任何其他可用來識別的詳細資料。
-
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>。僅顯示最起碼的資訊,
-甚至連通知圖示都排除。</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Android Wear 上的通知
-</h2>
-
-<p>預設情況下,通知和其<em>動作</em>會橋接至穿戴裝置。
-開發人員可以控制哪些通知可從電話橋接至手錶上,
-反之亦然。
-開發人員還可以控制哪些動作可以橋接。如果您的
-應用程式包含
-無法以單一點選完成的動作,
-請在您的穿戴通知上隱藏這些動作
-,或考慮將其連結至穿戴應用程式,
-讓使用者可以在手錶上完成動作。
-</p>
-
-<h4>橋接通知和動作</h4>
-
-<p>例如電話等已連線的裝置,
-可以橋接通知至穿戴裝置,讓通知可以在該處顯示。同樣的,也可以橋接動作,
-這樣使用者就可以直接從穿戴裝置對通知執行動作。</p>
-
-<p><strong>橋接</strong></p>
-
-<ul>
-  <li> 新的即時訊息</li>
-  <li> 例如 +1 等單點選動作,像 Heart</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" />
-
-<p><strong>請勿橋接</strong></p>
-
-<ul>
-  <li> 新到播客的通知</li>
-  <li> 對應至手錶上不可能執行的動作</li>
-</ul>
-
-
-
-<p><h4>要在穿戴裝置上定義的獨特動作</h4></p>
-
-<p>有些動作只能在穿戴裝置上執行。這些動作包含:</p>
-
-<ul>
-  <li> 罐頭回應的快速清單,例如「會馬上回來」</li>
-  <li> 在手機上開啟</li>
-  <li> 帶出語音輸入畫面的「註解」或「回覆」動作</li>
-  <li> 啟動穿戴裝置特定的應用程式動作</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" />
diff --git a/docs/html-intl/intl/zh-tw/preview/j8-jack.jd b/docs/html-intl/intl/zh-tw/guide/platform/j8-jack.jd
similarity index 100%
rename from docs/html-intl/intl/zh-tw/preview/j8-jack.jd
rename to docs/html-intl/intl/zh-tw/guide/platform/j8-jack.jd
diff --git a/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/multi-window.jd
similarity index 98%
rename from docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
rename to docs/html-intl/intl/zh-tw/guide/topics/ui/multi-window.jd
index 5ea247b..86d22fb 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/multi-window.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>此文件內容</h2>
       <ol>
         <li><a href="#overview">總覽</a></li>
@@ -68,8 +68,8 @@
   </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" />
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/mw-splitscreen_2x.png 2x," id="img-split-screen" />
 <p class="img-caption">
   <strong>圖 1.</strong> 在分割畫面模式中並排執行的兩個應用程式。
 </p>
diff --git a/docs/html-intl/intl/zh-tw/preview/download.jd b/docs/html-intl/intl/zh-tw/preview/download.jd
deleted file mode 100644
index caa2a55..0000000
--- a/docs/html-intl/intl/zh-tw/preview/download.jd
+++ /dev/null
@@ -1,550 +0,0 @@
-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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </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/overview.jd b/docs/html-intl/intl/zh-tw/preview/overview.jd
deleted file mode 100644
index 590afe5..0000000
--- a/docs/html-intl/intl/zh-tw/preview/overview.jd
+++ /dev/null
@@ -1,440 +0,0 @@
-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/setup-sdk.jd b/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
deleted file mode 100644
index b486ed4..0000000
--- a/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
+++ /dev/null
@@ -1,223 +0,0 @@
-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>
-
-<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-intl/intl/zh-tw/preview/features/direct-boot.jd b/docs/html-intl/intl/zh-tw/training/articles/direct-boot.jd
similarity index 99%
rename from docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
rename to docs/html-intl/intl/zh-tw/training/articles/direct-boot.jd
index 7e4ea73..fdcb172 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/zh-tw/training/articles/direct-boot.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>此文件內容</h2>
   <ol>
     <li><a href="#run">要求直接開機期間的執行權限</a></li>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/zh-tw/training/articles/scoped-directory-access.jd
similarity index 94%
rename from docs/html-intl/intl/zh-tw/preview/features/scoped-folder-access.jd
rename to docs/html-intl/intl/zh-tw/training/articles/scoped-directory-access.jd
index 0a530d2..b1c1a76 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/zh-tw/training/articles/scoped-directory-access.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>此文件內容</h2>
   <ol>
     <li><a href="#accessing">存取外部儲存空間目錄</a></li>
@@ -57,8 +57,8 @@
 <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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png" srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>圖 1.</strong> 應用程式要求對 [圖片] 目錄的存取權。
 </p>
 
diff --git a/docs/html-intl/intl/zh-tw/preview/features/security-config.jd b/docs/html-intl/intl/zh-tw/training/articles/security-config.jd
similarity index 99%
rename from docs/html-intl/intl/zh-tw/preview/features/security-config.jd
rename to docs/html-intl/intl/zh-tw/training/articles/security-config.jd
index 4fe8d0d..9b42b58 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/security-config.jd
+++ b/docs/html-intl/intl/zh-tw/training/articles/security-config.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>此文件內容</h2>
 <ol>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd b/docs/html-intl/intl/zh-tw/training/tv/playback/picture-in-picture.jd
similarity index 97%
rename from docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
rename to docs/html-intl/intl/zh-tw/training/tv/playback/picture-in-picture.jd
index 6b8a178..e643f65d 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/zh-tw/training/tv/playback/picture-in-picture.jd
@@ -4,8 +4,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>此文件內容</h2>
 <ol>
@@ -57,7 +57,7 @@
 
 使用者也可以透過 Recents 關閉 PIP 視窗。</p>
 
-<img src="{@docRoot}preview/images/pip-active.png" />
+<img src="{@docRoot}images/android-7.0/pip-active.png" />
 <p class="img-caption"><strong>圖 1.</strong> 當使用者瀏覽主畫面上的內容時,可看到螢幕角落的子母畫面中的影片。
 
 </p>
@@ -114,7 +114,7 @@
 <p>將 PIP 按鈕新增到媒體控制列,可讓您的使用者在控制影片播放時輕鬆地切換到 PIP 模式。
 </p>
 
-<img src="{@docRoot}preview/images/pip-button.png" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>圖 1.</strong> 媒體控制列上的子母畫面按鈕。
 </p>
 
diff --git a/docs/html-intl/intl/zh-tw/preview/features/tv-recording-api.jd b/docs/html-intl/intl/zh-tw/training/tv/tif/content-recording.jd
similarity index 98%
rename from docs/html-intl/intl/zh-tw/preview/features/tv-recording-api.jd
rename to docs/html-intl/intl/zh-tw/training/tv/tif/content-recording.jd
index d857477..8b3a5ce 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/zh-tw/training/tv/tif/content-recording.jd
@@ -5,8 +5,8 @@
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>此文件內容</h2>
   <ol>
     <li><a href="#supporting">指出錄製支援</a></li>
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 4cfe808..fd54b7d 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -23,6 +23,8 @@
   to: /studio/debug/index.html
 - from: /sdk/compatibility-library.html
   to: /topic/libraries/support-library/index.html
+- from: /billions
+  to: /topic/billions/index.html
 - from: /tools/extras/support-library.html
   to: /topic/libraries/support-library/index.html
 - from: /training/basics/fragments/support-lib.html
@@ -321,6 +323,8 @@
   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/notifications.html
+  to: https://material.google.com/patterns/notifications.html
 - from: /design/patterns/selection.html
   to: https://www.google.com/design/spec/patterns/selection.html
 - from: /design/patterns/settings.html
@@ -421,6 +425,8 @@
   to: /training/implementing-navigation/lateral.html
 - from: /training/cloudsync/aesync.html
   to: /google/gcm/index.html
+- from: /training/cloudsync/index.html
+  to: /training/backup/index.html
 - from: /training/basics/location/
   to: /training/location/
 - from: /training/monetization/index.html
@@ -473,6 +479,14 @@
   to: /distribute/stories/index.html
 - from: /distribute/stories/tablets.html
   to: /distribute/stories/index.html
+- from: /distribute/stories/glu-dh.html
+  to: /distribute/stories/games/glu-dh.html
+- from: /distribute/stories/apps/tapps.html
+  to: /distribute/stories/games/tapps.html
+- from: /distribute/stories/apps/upbeat-games.html
+  to: /distribute/stories/games/upbeat-games.html
+- from: /distribute/stories/games/two-dots.html
+  to: /distribute/stories/games/dots.html
 - from: /distribute/googleplay/edu/index.html
   to: /distribute/googleplay/edu/about.html
 - from: /distribute/googleplay/edu/contact.html
@@ -805,8 +819,8 @@
   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/
+- from: /downloads/...
+  to: https://commondatastorage.googleapis.com/androiddevelopers/...
 - from: /training/performance/battery/network/action-any-traffic.html
   to: /topic/performance/power/network/action-any-traffic.html
 - from: /training/performance/battery/network/action-app-traffic.html
@@ -1201,3 +1215,46 @@
   to: /studio/intro/index.html?utm_medium=android-studio
 - from: /r/studio-ui/menu-start.html
   to: /training/index.html?utm_medium=android-studio
+
+# Redirects from (removed) N Preview documentation
+- from: /preview/features/afw.html
+  to: https://developers.google.com/android/work/overview
+- from: /preview/features/multi-window.html
+  to: /guide/topics/ui/multi-window.html
+- from: /preview/features/icu4j-framework.html
+  to: /guide/topics/resources/icu4j-framework.html
+- from: /preview/features/key-attestation.html
+  to: /training/articles/security-key-attestation.html
+- from: /preview/features/security-config.html
+  to: /training/articles/security-config.html
+- from: /preview/features/picture-in-picture.html
+  to: /training/tv/playback/picture-in-picture.html
+- from: /preview/features/tv-recording-api.html
+  to: /training/tv/tif/content-recording.html
+- from: /preview/features/direct-boot.html
+  to: /training/articles/direct-boot.html
+- from: /preview/features/scoped-folder-access.html
+  to: /training/articles/scoped-directory-access.html
+- from: /preview/features/notification-updates.html
+  to: /guide/topics/ui/notifiers/notifications.html
+- from: /preview/features/multilingual-support.html
+  to: /guide/topics/resources/multilingual-support.html
+- from: /preview/j8-jack.html
+  to: /guide/platform/j8-jack.html
+- from: /about/versions/marshmallow/samples.html
+  to: /about/versions/marshmallow/android-6.0-samples.html
+- from: /preview/behavior-changes.html
+  to: /about/versions/nougat/android-7.0-changes.html
+- from: /preview/samples.html
+  to: /about/versions/nougat/android-7.0-samples.html
+- from: /preview/guide.html
+  to: /about/versions/nougat/android-7.0-testing.html
+- from: /preview/api-overview.html
+  to: /about/versions/nougat/android-7.0.html
+- from: /preview/index.html
+  to: /about/versions/nougat/index.html
+- from: /preview/features/background-optimization.html
+  to: /topic/performance/background-optimization.html
+- from: /preview/features/data-saver.html
+  to: /training/basics/network-ops/data-saver.html
+
diff --git a/docs/html/about/_book.yaml b/docs/html/about/_book.yaml
index fdbe53f..958435d 100644
--- a/docs/html/about/_book.yaml
+++ b/docs/html/about/_book.yaml
@@ -1,4 +1,16 @@
 toc:
+- title: Nougat
+  path: /about/versions/nougat/index.html
+  section:
+  - title: Android 7.0 APIs
+    path: /about/versions/nougat/android-7.0.html
+  - title: Android 7.0 Changes
+    path: /about/versions/nougat/android-7.0-changes.html
+  - title: Android 7.0 Samples
+    path: /about/versions/nougat/android-7.0-samples.html
+  - title: Android 7.0 Testing
+    path: /about/versions/nougat/android-7.0-testing.html
+
 - title: Marshmallow
   path: /about/versions/marshmallow/index.html
   section:
@@ -7,7 +19,9 @@
   - title: Android 6.0 Changes
     path: /about/versions/marshmallow/android-6.0-changes.html
   - title: Android 6.0 Samples
-    path: /about/versions/marshmallow/samples.html
+    path: /about/versions/marshmallow/android-6.0-samples.html
+  - title: Android 6.0 Testing
+    path: /about/versions/marshmallow/android-6.0-testing.html
 
 - title: Lollipop
   path: /about/versions/lollipop.html
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index 3cbfde9..f5d23e8 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -59,7 +59,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on July 11, 2016.
+<p style="clear:both"><em>Data collected during a 7-day period ending on August 1, 2016.
 <br/>Any versions with less than 0.1% distribution are not shown.</em>
 </p>
 
@@ -81,7 +81,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on July 11, 2016.
+<p style="clear:both"><em>Data collected during a 7-day period ending on August 1, 2016.
 
 <br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p>
 
@@ -101,7 +101,7 @@
 
 
 <img alt="" style="float:right"
-src="//chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0%7CGL%203.1&chf=bg%2Cs%2C00000000&chd=t%3A47.5%2C41.9%2C10.6&chco=c4df9b%2C6fad0c&cht=p&chs=400x250">
+src="//chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0%7CGL%203.1&chf=bg%2Cs%2C00000000&chd=t%3A46.0%2C42.6%2C11.4&chco=c4df9b%2C6fad0c&cht=p&chs=400x250">
 
 <p>To declare which version of OpenGL ES your application requires, you should use the {@code
 android:glEsVersion} attribute of the <a
@@ -119,21 +119,21 @@
 </tr>
 <tr>
 <td>2.0</td>
-<td>47.5%</td>
+<td>46.0%</td>
 </tr>
 <tr>
 <td>3.0</td>
-<td>41.9%</td>
+<td>42.6%</td>
 </tr>
 <tr>
 <td>3.1</td>
-<td>10.6%</td>
+<td>11.4%</td>
 </tr>
 </table>
 
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on July 11, 2016</em></p>
+<p style="clear:both"><em>Data collected during a 7-day period ending on August 1, 2016</em></p>
 
 
 
@@ -147,19 +147,19 @@
       "Large": {
         "hdpi": "0.5",
         "ldpi": "0.2",
-        "mdpi": "4.4",
+        "mdpi": "4.3",
         "tvdpi": "2.1",
         "xhdpi": "0.5"
       },
       "Normal": {
-        "hdpi": "40.9",
-        "mdpi": "4.1",
+        "hdpi": "40.0",
+        "mdpi": "3.8",
         "tvdpi": "0.1",
-        "xhdpi": "26.3",
-        "xxhdpi": "15.1"
+        "xhdpi": "27.3",
+        "xxhdpi": "15.5"
       },
       "Small": {
-        "ldpi": "1.9"
+        "ldpi": "1.8"
       },
       "Xlarge": {
         "hdpi": "0.3",
@@ -167,8 +167,8 @@
         "xhdpi": "0.7"
       }
     },
-    "densitychart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chd=t%3A2.1%2C11.4%2C2.2%2C41.7%2C27.5%2C15.1&chf=bg%2Cs%2C00000000&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chs=400x250&cht=p",
-    "layoutchart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chd=t%3A3.9%2C7.7%2C86.5%2C1.9&chf=bg%2Cs%2C00000000&chl=Xlarge%7CLarge%7CNormal%7CSmall&chs=400x250&cht=p"
+    "densitychart": "//chart.googleapis.com/chart?chd=t%3A2.0%2C11.0%2C2.2%2C40.8%2C28.5%2C15.5&chf=bg%2Cs%2C00000000&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&cht=p&chs=400x250&chco=c4df9b%2C6fad0c",
+    "layoutchart": "//chart.googleapis.com/chart?chd=t%3A3.9%2C7.6%2C86.7%2C1.8&chf=bg%2Cs%2C00000000&chl=Xlarge%7CLarge%7CNormal%7CSmall&cht=p&chs=400x250&chco=c4df9b%2C6fad0c"
   }
 ];
 
@@ -176,7 +176,7 @@
 var VERSION_DATA =
 [
   {
-    "chart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chd=t%3A0.1%2C1.9%2C1.7%2C17.8%2C30.2%2C35.1%2C13.3&chf=bg%2Cs%2C00000000&chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop%7CMarshmallow&chs=500x250&cht=p",
+    "chart": "//chart.googleapis.com/chart?chd=t%3A0.1%2C1.7%2C1.6%2C16.7%2C29.2%2C35.5%2C15.2&chf=bg%2Cs%2C00000000&chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop%7CMarshmallow&cht=p&chs=500x250&chco=c4df9b%2C6fad0c",
     "data": [
       {
         "api": 8,
@@ -186,47 +186,47 @@
       {
         "api": 10,
         "name": "Gingerbread",
-        "perc": "1.9"
+        "perc": "1.7"
       },
       {
         "api": 15,
         "name": "Ice Cream Sandwich",
-        "perc": "1.7"
+        "perc": "1.6"
       },
       {
         "api": 16,
         "name": "Jelly Bean",
-        "perc": "6.4"
+        "perc": "6.0"
       },
       {
         "api": 17,
         "name": "Jelly Bean",
-        "perc": "8.8"
+        "perc": "8.3"
       },
       {
         "api": 18,
         "name": "Jelly Bean",
-        "perc": "2.6"
+        "perc": "2.4"
       },
       {
         "api": 19,
         "name": "KitKat",
-        "perc": "30.1"
+        "perc": "29.2"
       },
       {
         "api": 21,
         "name": "Lollipop",
-        "perc": "14.3"
+        "perc": "14.1"
       },
       {
         "api": 22,
         "name": "Lollipop",
-        "perc": "20.8"
+        "perc": "21.4"
       },
       {
         "api": 23,
         "name": "Marshmallow",
-        "perc": "13.3"
+        "perc": "15.2"
       }
     ]
   }
diff --git a/docs/html/about/versions/android-5.0-changes.jd b/docs/html/about/versions/android-5.0-changes.jd
index 25d253f..0e9dac5 100644
--- a/docs/html/about/versions/android-5.0-changes.jd
+++ b/docs/html/about/versions/android-5.0-changes.jd
@@ -105,7 +105,9 @@
 
 <p>Make sure your notifications take these Android 5.0 changes into account.
  To learn more about designing your notifications for Android 5.0 and higher,
- see the <a href="{@docRoot}design/patterns/notifications.html">notifications design guide</a>.
+ see the <a
+ href="https://material.google.com/patterns/notifications.html">notifications
+ design guide</a>.
 </p>
 
 <h3 id="NotificationsMaterialDesignStyle">Material design style</h3>
diff --git a/docs/html/about/versions/marshmallow/samples.jd b/docs/html/about/versions/marshmallow/android-6.0-samples.jd
similarity index 100%
rename from docs/html/about/versions/marshmallow/samples.jd
rename to docs/html/about/versions/marshmallow/android-6.0-samples.jd
diff --git a/docs/html/preview/guide.jd b/docs/html/about/versions/marshmallow/android-6.0-testing.jd
similarity index 95%
copy from docs/html/preview/guide.jd
copy to docs/html/about/versions/marshmallow/android-6.0-testing.jd
index 28c0fe9..f9d9265 100644
--- a/docs/html/preview/guide.jd
+++ b/docs/html/about/versions/marshmallow/android-6.0-testing.jd
@@ -1,4 +1,4 @@
-page.title=Testing Guide
+page.title=Android 6.0 Testing Guide
 page.image=images/cards/card-n-guide_2x.png
 meta.tags="preview", "testing"
 page.tags="preview", "developer preview"
@@ -17,7 +17,7 @@
 </div>
 
 <p>
-  Android N gives you an opportunity to ensure your apps work with the next
+  Android 6.0 gives you an opportunity to ensure your apps work with the next
   version of the platform. This preview includes a number of APIs and behavior changes that can
   impact your app, as described in the <a href="{@docRoot}preview/api-overview.html">API
   Overview</a> and <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a>. In testing
@@ -39,13 +39,6 @@
   <li><a href="#ids">Auto Backup and Device Identifiers</a></li>
 </ul>
 
-<p>
-  For more information about how to set up devices or virtual devices with a preview system image
-  for testing, see <a href="{@docRoot}preview/setup-sdk.html">Set up
-the Android N SDK</a>.
-</p>
-
-
 <h2 id="runtime-permissions">Testing Permissions</h2>
 
 <p>
diff --git a/docs/html/preview/behavior-changes.jd b/docs/html/about/versions/nougat/android-7.0-changes.jd
similarity index 91%
rename from docs/html/preview/behavior-changes.jd
rename to docs/html/about/versions/nougat/android-7.0-changes.jd
index ba08d9b..4f9054c 100644
--- a/docs/html/preview/behavior-changes.jd
+++ b/docs/html/about/versions/nougat/android-7.0-changes.jd
@@ -1,7 +1,7 @@
-page.title=Behavior Changes
+page.title=Android 7.0 Changes
 page.keywords=preview,sdk,compatibility
-meta.tags="preview", "compatibility"
-page.tags="preview", "developer preview"
+meta.tags="Android 7.0", "Nougat", "android n", "compatibility"
+page.tags="Android 7.0", "Nougat", "android n", "developer preview"
 page.image=images/cards/card-n-changes_2x.png
 @jd:body
 
@@ -44,7 +44,7 @@
 <h2>See Also</h2>
 <ol>
   <li><a href="{@docRoot}preview/api-overview.html">
-    Android N for Developers</a></li>
+    Android 7.0 APIs</a></li>
 </ol>
 
 </div>
@@ -52,7 +52,7 @@
 
 
 <p>
-  Along with new features and capabilities, Android N
+  Along with new features and capabilities, Android 7.0
   includes a variety of system and API behavior changes. This document
   highlights some of the key changes that you should understand and account for
   in your apps.
@@ -67,7 +67,7 @@
 <h2 id="perf">Battery and Memory</h2>
 
 <p>
-Android N includes system behavior changes aimed at improving the battery life
+Android 7.0 includes system behavior changes aimed at improving the battery life
 of devices and reducing RAM usage. These changes can affect your app’s access to
 system resources, along with the way your app interacts with other apps via
 certain implicit intents.
@@ -78,14 +78,14 @@
 <p>
   Introduced in Android 6.0 (API level 23), Doze improves battery life by
   deferring CPU and network activities when a user leaves a device unplugged,
-  stationary, and with the screen turned off. Android N brings further
+  stationary, and with the screen turned off. Android 7.0 brings further
   enhancements to Doze by applying a subset of CPU and network restrictions
   while the device is unplugged with the screen turned off, but not necessarily
   stationary, for example, when a handset is traveling in a user’s pocket.
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-1.png"
+<img src="{@docRoot}images/android-7.0/doze-diagram-1.png"
   alt="" height="251px" id="figure1" />
 <p class="img-caption">
   <strong>Figure 1.</strong> Illustration of how Doze applies a first level of
@@ -105,7 +105,7 @@
 </p>
 
 
-<img src="{@docRoot}preview/images/doze-diagram-2.png"
+<img src="{@docRoot}images/android-7.0/doze-diagram-2.png"
   alt="" id="figure2" />
 <p class="img-caption">
   <strong>Figure 2.</strong> Illustration of how Doze applies a second level of
@@ -128,7 +128,7 @@
 <h3 id="bg-opt">Project Svelte: Background Optimizations</h3>
 
 <p>
-  Android N removes three implicit broadcasts in order to help optimize both
+  Android 7.0 removes three implicit broadcasts in order to help optimize both
   memory use and power consumption. This change is necessary because implicit
   broadcasts frequently start apps that have registered to listen for them in
   the background. Removing these broadcasts can substantially benefit device
@@ -154,12 +154,12 @@
 </p>
 
 <p>
-  To alleviate these issues, Android N applies the following
+  To alleviate these issues, Android 7.0 applies the following
   optimizations:
 </p>
 
 <ul>
-  <li>Apps targeting Android N do not receive {@link
+  <li>Apps targeting Android 7.0 do not receive {@link
   android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcasts, even if they
   have manifest entries to request notification of these events. Apps that are
   running can still listen for {@code CONNECTIVITY_CHANGE} on their main thread
@@ -169,12 +169,12 @@
   <li>Apps cannot send or receive {@link
   android.hardware.Camera#ACTION_NEW_PICTURE} or {@link
   android.hardware.Camera#ACTION_NEW_VIDEO} broadcasts. This optimization
-  affects all apps, not only those targeting Android N.
+  affects all apps, not only those targeting Android 7.0.
   </li>
 </ul>
 
 <p>If your app uses any of these intents, you should remove dependencies
-  on them as soon as possible so that you can target Android N devices properly.
+  on them as soon as possible so that you can target Android 7.0 devices properly.
   The Android framework provides several solutions to mitigate the need for
   these implicit broadcasts. For example, the {@link
   android.app.job.JobScheduler} API provides a robust mechanism to schedule
@@ -193,14 +193,14 @@
 <h2 id="perm">Permissions Changes</h2>
 
 <p>
-  Android N includes changes to permissions that may affect your app.
+  Android 7.0 includes changes to permissions that may affect your app.
 </p>
 
 <h3 id="permfilesys">File system permission changes</h3>
 
 <p>
   In order to improve the security of private files, the private directory of
-  apps targeting Android N or higher has restricted access (<code>0700</code>).
+  apps targeting Android 7.0 or higher has restricted access (<code>0700</code>).
   This setting prevents leakage of metadata of private files, such as their size
   or existence. This permission change has multiple side effects:
 </p>
@@ -232,7 +232,7 @@
     stored files by filename. Legacy applications may end up with an
     unaccessible path when accessing {@link
     android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. Apps targeting
-    Android N or higher trigger a {@link java.lang.SecurityException} when
+    Android 7.0 or higher trigger a {@link java.lang.SecurityException} when
     attempting to access
     {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}.
     Legacy applications that set the download location to a public location by
@@ -255,7 +255,7 @@
 <h2 id="sharing-files">Sharing Files Between Apps</h2>
 
 <p>
-For apps targeting Android N, the Android framework enforces
+For apps targeting Android 7.0, the Android framework enforces
 the {@link android.os.StrictMode} API policy that prohibits exposing {@code file://} URIs
 outside your app. If an intent containing a file URI leaves your app, the app fails
 with a {@code FileUriExposedException} exception.
@@ -272,7 +272,7 @@
 <h2 id="accessibility">Accessibility Improvements</h2>
 
 <p>
-  Android N includes changes intended to improve the usability of the
+  Android 7.0 includes changes intended to improve the usability of the
   platform for users with low or impaired vision. These changes should
   generally not require code changes in your app, however you should review
   these feature and test them with your app to assess potential impacts to user
@@ -283,7 +283,7 @@
 <h3 id="screen-zoom">Screen Zoom</h3>
 
 <p>
-  Android N enables users to set <strong>Display size</strong>which magnifies
+  Android 7.0 enables users to set <strong>Display size</strong>which magnifies
   or shrinks all elements on the screen, thereby improving device accessibility
   for users with low vision. Users cannot zoom the screen past a minimum screen
   width of <a href=
@@ -294,16 +294,16 @@
 <div class="cols">
 
 <div class="col-6">
-  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+  <img src="{@docRoot}images/android-7.0/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" />
+  <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
 </div>
 
 </div> <!-- end cols -->
 <p class="img-caption">
   <strong>Figure 3.</strong> The screen on the right shows the effect of
-  increasing the Display size of a device running an Android N system image.
+  increasing the Display size of a device running an Android 7.0 system image.
 </p>
 
 
@@ -323,7 +323,7 @@
   Runtime Changes</a>, just as if the device's orientation had changed.
   </li>
 
-  <li>If an app targets Android N, all of its processes
+  <li>If an app targets Android 7.0, all of its processes
   (foreground and background) are notified of the configuration change as
   described in <a href=
   "{@docRoot}guide/topics/resources/runtime-changes.html">Handling
@@ -365,7 +365,7 @@
 <h3 id="vision-settings">Vision Settings in Setup Wizard</h3>
 
 <p>
-  Android N includes Vision Settings on the Welcome screen, where users can
+  Android 7.0 includes Vision Settings on the Welcome screen, where users can
   set up the following accessibility settings on a new device:
   <strong>Magnification gesture</strong>, <strong>Font size</strong>,
   <strong>Display size</strong> and <strong>TalkBack</strong>. This change
@@ -378,13 +378,13 @@
 <h2 id="ndk">NDK Apps Linking to Platform Libraries</h2>
 
 <p>
-  Starting in Android N, the system prevents apps from dynamically linking
+  Starting in Android 7.0, the system prevents apps from dynamically linking
   against non-NDK libraries, which may cause your app to crash. This change in
   behavior aims to create a consistent app experience across platform updates
   and different devices. Even though your code might not be linking against
   private libraries, it's possible that a third-party static library in your
   app could be doing so. Therefore, all developers should check to make sure
-  that their apps do not crash on devices running Android N. If your app uses
+  that their apps do not crash on devices running Android 7.0. If your app uses
   native code, you should only be using <a href=
   "{@docRoot}ndk/guides/stable_apis.html">public NDK APIs</a>.
 </p>
@@ -595,7 +595,7 @@
 <p>
   To help you identify issues loading private libraries, logcat may generate a
   warning or runtime error. For example, if your app targets API level 23 or
-  lower, and tries to access a private library on a device running Android N,
+  lower, and tries to access a private library on a device running Android 7.0,
   you may see a warning similar to the following:
 </p>
 
@@ -626,7 +626,7 @@
 <p>
   You may also see these logcat outputs if your app uses third-party libraries
   that dynamically link to private platform APIs. The readelf tool in the
-  Android NDK allows you to generate a list of all dynamically linked shared
+  Android 7.0DK allows you to generate a list of all dynamically linked shared
   libraries of a given <code>.so</code> file by running the following command:
 </p>
 
@@ -692,7 +692,7 @@
 
 <h2 id="afw">Android for Work</h2>
 <p>
-  Android N contains changes for apps that target Android for Work, including
+  Android 7.0 contains changes for apps that target Android for Work, including
   changes to certificate installation, password resetting, secondary user
   management, and access to device identifiers. If you are building apps for
   Android for Work environments, you should review these changes and modify
@@ -749,7 +749,7 @@
   DER-encoded format under a .crt or .cer file extension.
   </li>
 
-  <li>Starting in Android N, fingerprint enrollment and storage are managed per user.
+  <li>Starting in Android 7.0, fingerprint enrollment and storage are managed per user.
   If a profile owner’s Device Policy Client (DPC) targets pre-N on an N device,
   the user is still able to set fingerprint on the device, but work
   applications cannot access device fingerprint. When the DPC targets N and
@@ -765,7 +765,7 @@
   is returned, even if the encryption key is specific to the user or profile.
   </li>
 
-  <li>In Android N, several methods that would ordinarily affect the entire
+  <li>In Android 7.0, several methods that would ordinarily affect the entire
   device behave differently if the device has a work profile installed with a
   separate work challenge. Rather than affecting the entire device, these
   methods apply only to the work profile. (The complete list of such methods is
@@ -785,14 +785,14 @@
 </ul>
 
 <p>
-  For more information about changes to Android for Work in Android N, see
+  For more information about changes to Android for Work in Android 7.0, see
   <a href="{@docRoot}preview/features/afw.html">Android for Work Updates</a>.
 </p>
 
 <h2 id="annotations">Annotations Retention</h2>
 
 <p>
-Android N fixes a bug where the visibility of annotations was being ignored.
+Android 7.0 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>
@@ -811,7 +811,7 @@
 <h2 id="other">Other Important Points</h2>
 
 <ul>
-<li>When an app is running on Android N, but targets a lower API level,
+<li>When an app is running on Android 7.0, but targets a lower API level,
 and the user changes display size, the app process is killed. The app
 must be able to gracefully handle this scenario. Otherwise, it crashes
 when the user restores it from Recents.
@@ -830,7 +830,7 @@
 </li>
 
 <li>
-Apps on Android N should be able to gracefully handle configuration changes,
+Apps on Android 7.0 should be able to gracefully handle configuration changes,
 and should not crash on subsequent starts. You can verify app behavior
 by changing font size (<strong>Setting</strong> >
 <strong>Display</strong> > <strong>Font size</strong>), and then restoring
@@ -839,7 +839,7 @@
 
 <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.
+to a TCP socket on the main thread as a strict-mode violation. Android 7.0 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.
@@ -860,7 +860,7 @@
 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.
+{@code RuntimeException} when your app targets Android 7.0.
 </li>
 
 <li>
@@ -881,7 +881,7 @@
 </li>
 
 <li>
-If an app on Android N with
+If an app on Android 7.0 with
 {@link android.Manifest.permission#DELETE_PACKAGES DELETE_PACKAGES}
 permission tries to delete a package, but a different app had installed that package,
 the system requires user confirmation. In this scenario, apps should expect
diff --git a/docs/html/preview/samples.jd b/docs/html/about/versions/nougat/android-7.0-samples.jd
similarity index 71%
rename from docs/html/preview/samples.jd
rename to docs/html/about/versions/nougat/android-7.0-samples.jd
index 1544d9c..98f7090 100644
--- a/docs/html/preview/samples.jd
+++ b/docs/html/about/versions/nougat/android-7.0-samples.jd
@@ -1,10 +1,10 @@
-page.title=Samples
-page.tags="preview", "samples", "android"
+page.title=Android 7.0 Samples
+page.tags="Android 7.0", "nougat", "samples", "android"
 page.image=images/cards/card-n-samples_2x.png
 @jd:body
 
 <p>
-  The following code samples are provided for Android N. To
+  The following code samples are provided for Android 7.0. To
   download the samples in Android Studio, select the <b>File &gt; Import
   Samples</b> menu option.
 </p>
@@ -16,7 +16,7 @@
 
 
 <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"/>
+<img src="{@docRoot}images/android-7.0/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156"/>
 <p>
   This sample demonstrates how to take advantage of multiple window
   user interfaces with your app.
@@ -28,7 +28,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   This is a pre-existing sample which shows a simple service that sends
   notifications using NotificationCompat. Each unread conversation from a user
@@ -45,7 +45,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
 <p>
   This is a pre-existing sample which demonstrates how to use
   NotificationManager to tell how many notifications an application is currently
@@ -62,7 +62,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   This sample demonstrates how to store and access data in a device encrypted
   storage which is always available while the device is booted.
@@ -74,7 +74,7 @@
 
 <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" />
+<img src="{@docRoot}images/android-7.0/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
   This sample demonstrates how to read and write data from specific
   directories, while requiring fewer permissions.
@@ -82,4 +82,4 @@
 <p>
   <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
   Get it on GitHub</a>
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html/preview/guide.jd b/docs/html/about/versions/nougat/android-7.0-testing.jd
similarity index 97%
rename from docs/html/preview/guide.jd
rename to docs/html/about/versions/nougat/android-7.0-testing.jd
index 28c0fe9..f30382e 100644
--- a/docs/html/preview/guide.jd
+++ b/docs/html/about/versions/nougat/android-7.0-testing.jd
@@ -1,4 +1,4 @@
-page.title=Testing Guide
+page.title=Android 7.0 Testing Guide
 page.image=images/cards/card-n-guide_2x.png
 meta.tags="preview", "testing"
 page.tags="preview", "developer preview"
@@ -17,7 +17,7 @@
 </div>
 
 <p>
-  Android N gives you an opportunity to ensure your apps work with the next
+  Android 7.0 gives you an opportunity to ensure your apps work with the next
   version of the platform. This preview includes a number of APIs and behavior changes that can
   impact your app, as described in the <a href="{@docRoot}preview/api-overview.html">API
   Overview</a> and <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a>. In testing
diff --git a/docs/html/preview/api-overview.jd b/docs/html/about/versions/nougat/android-7.0.jd
similarity index 88%
rename from docs/html/preview/api-overview.jd
rename to docs/html/about/versions/nougat/android-7.0.jd
index c7ffb7a..87c8d93 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/about/versions/nougat/android-7.0.jd
@@ -1,6 +1,6 @@
-page.title=Android N for Developers
-meta.tags="preview", "androidn"
-page.tags="preview", "developer preview"
+page.title=Android 7.0 APIs
+meta.tags="Android 7.0", "android n", "Nougat"
+page.tags="Android 7.0", "Nougat", "android n", "developer preview"
 page.image=images/cards/card-n-apis_2x.png
 @jd:body
 
@@ -51,29 +51,27 @@
 
 
 
-<p>Android N is still in active development, but you can try it
-now as part of the N Developer Preview. The sections below highlight some of
-the new features for developers. </p>
-
 <p>
-  Make sure to check out the <a href=
-  "{@docRoot}preview/behavior-changes.html">Behavior Changes</a> to learn about
-  areas where platform changes may affect your apps, take a look at the
-  developer guides to learn more about key features, and download the <a href=
-  "{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a> for details on
-  new APIs.
+Android 7.0
+(<a href="{@docRoot}reference/android/os/Build.VERSION_CODES.html#N">N</a>) 
+offers new features for users and app developers. This document provides
+an introduction to the most notable APIs. Make sure, also,
+to check out the <href="{@docRoot}about/versions/nougat/behavior.changes.html">
+Behavior Changes</a> to learn about areas where platform changes
+may affect your apps. In addition, the various developer guides
+can provide more information about key features.
 </p>
 
 <h2 id="multi-window_support">Multi-window Support</h2>
 
 
-<p>In Android N, we're introducing a new and much-requested multitasking feature
-into the platform &mdash; multi-window support. </p>
+<p>In Android 7.0, we're introducing a new and much-requested
+multitasking feature into the platform &mdash; multi-window support. </p>
 
   <p>Users can now pop open two apps on the screen at once. </p>
   <ul>
   <li>On phones and tablets
-running Android N, users can run two apps side-by-side or
+running Android 7.0, users can run two apps side-by-side or
 one-above-the-other in splitscreen mode. Users can resize the apps by dragging
 the divider between them. </li>
 
@@ -84,7 +82,7 @@
   </ul>
 
 <div class="col-4of10">
-<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;"
+<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;"
     id="img-split-screen" />
 <p class="img-caption">
   <strong>Figure 1.</strong> Apps running in split-screen mode.
@@ -111,8 +109,8 @@
 
 <h2 id="notification_enhancements">Notification Enhancements</h2>
 
-<p>In Android N we've redesigned notifications to make them easier and faster to
-use. Some of the changes include:</p>
+<p>In Android 7.0 we've redesigned notifications to make them easier and
+faster to use. Some of the changes include:</p>
 
 <ul>
   <li>
@@ -150,17 +148,17 @@
 </ul>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-1.png" alt=""
+  <img src="{@docRoot}images/android-7.0/notifications-1.png" alt=""
   style="padding:.5em;max-width:226px">
 </div>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-3.png" alt=""
+  <img src="{@docRoot}images/android-7.0/notifications-3.png" alt=""
   style="padding:.5em;max-width:226px">
 </div>
 
 <div class="col-4of12">
-  <img src="{@docRoot}preview/images/notifications-2.png" alt=""
+  <img src="{@docRoot}images/android-7.0/notifications-2.png" alt=""
   style="padding:.5em;max-width:226px">
 </div>
 
@@ -177,17 +175,17 @@
 
 <h2 id="jit_aot">Profile-guided JIT/AOT Compilation</h2>
 
-<p>In Android N, we've added a Just in Time (JIT) compiler with code profiling to
-ART, which lets it constantly improve the performance of Android apps as they
-run. The JIT compiler complements ART's current Ahead of Time (AOT) compiler
-and helps improve runtime performance, save storage space, and speed up app
-updates and system updates.</p>
+<p>In Android 7.0, we've added a Just in Time (JIT) compiler with code
+profiling to ART, which lets it constantly improve the performance of
+Android apps as they run. The JIT compiler complements ART's current
+Ahead of Time (AOT) compiler and helps improve runtime performance, save
+storage space, and speed up app updates and system updates.</p>
 
-<p>Profile-guided compilation lets ART manage the AOT/JIT compilation for each app
-according to its actual usage, as well as conditions on the device. For
-example, ART maintains a profile of each app's hot methods and can precompile
-and cache those methods for best performance. It leaves other parts of the app
-uncompiled until they are actually used.</p>
+<p>Profile-guided compilation lets ART manage the AOT/JIT compilation for
+each app according to its actual usage, as well as conditions on the device.
+For example, ART maintains a profile of each app's hot methods and can
+precompile and cache those methods for best performance. It leaves other parts
+of the app uncompiled until they are actually used.</p>
 
 <p>Besides improving performance for key parts of the app, profile-guided
 compilation helps reduce an app's overall RAM footprint, including associated
@@ -210,14 +208,14 @@
 apps' CPU and network activities when the device is idle, such as when it's
 sitting on a table or in a drawer. </p>
 
-<p>Now in Android N, Doze takes a step further and saves battery while on the go.
+<p>Now in Android 7.0, Doze takes a step further and saves battery while on the go.
 Any time the screen is off for a period of time and the device is unplugged,
 Doze applies a subset of the familiar CPU and network restrictions to apps.
 This means users can save battery even when carrying their devices in their
 pockets.</p>
 
 
-<img src="/preview/images/doze-diagram-1.png"
+<img src="/images/android-7.0/doze-diagram-1.png"
   alt="" id="figure1" />
 <p class="img-caption">
   <strong>Figure 3.</strong> Doze now applies
@@ -245,7 +243,7 @@
 <h2 id="background_optimizations">Project Svelte: Background Optimizations</h2>
 
 <p>Project Svelte is an ongoing effort to minimize RAM use by system and apps
-across the range of Android devices in the ecosystem. In Android N, Project
+across the range of Android devices in the ecosystem. In Android 7.0, Project
 Svelte is focused on optimizing the way apps run in the background. </p>
 
 <p>Background processing is an essential part of most apps. When handled right, it
@@ -269,17 +267,17 @@
 
 <p>We're continuing to extend <code>JobScheduler</code> and
 <code>GCMNetworkManager</code> to meet more of
-your use cases &mdash; for example, in Android N you can now schedule background
+your use cases &mdash; for example, in Android 7.0 you can now schedule background
 work based on changes in Content Providers. At the same time we're starting to
 deprecate some of the older patterns that can reduce system performance,
 especially on low-memory devices.</p>
 
-<p>In Android N we're removing three commonly-used implicit broadcasts &mdash;
+<p>In Android 7.0 we're removing three commonly-used implicit broadcasts &mdash;
  {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
   android.hardware.Camera#ACTION_NEW_PICTURE}, and {@link
   android.hardware.Camera#ACTION_NEW_VIDEO} &mdash; since those can wake the
 background processes of multiple apps at once and strain memory and battery. If
-your app is receiving these, take advantage of the N Developer Preview to
+your app is receiving these, take advantage of the Android 7.0 to
   migrate to <code>JobScheduler</code> and related APIs instead. </p>
 
 <p>
@@ -290,7 +288,7 @@
 
 <h2 id="surfaceview">SurfaceView</h2>
 <p>
-Android N brings synchronous movement to the {@link android.view.SurfaceView}
+Android 7.0 brings synchronous movement to the {@link android.view.SurfaceView}
 class, which provides better battery performance
 than {@link android.view.TextureView} in certain cases: When rendering video or
 3D content, apps with scrolling and animated video position use less power with
@@ -311,14 +309,14 @@
 </p>
 
 <p>
-Starting with Android N, we strongly recommend that you save power by using
+Starting with Android 7.0, we strongly recommend that you save power by using
 {@link android.view.SurfaceView} instead of {@link android.view.TextureView}.
 </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">
+<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
 
 <p class="img-caption" style="padding-right:2em;">
   <strong>Figure 4.</strong> Data Saver in Settings.
@@ -329,7 +327,7 @@
 exceeds the cost of the device itself. For many users, cellular data is an
 expensive resource that they want to conserve. </p>
 
-<p>Android N introduces Data Saver mode, a new system service that helps reduce
+<p>Android 7.0 introduces Data Saver mode, a new system service that helps reduce
 cellular data use by apps, whether roaming, near the end of the billing cycle,
 or on a small prepaid data pack. Data Saver gives users control over how apps
 use cellular data and lets developers provide more efficient service when Data
@@ -342,7 +340,7 @@
 and so on. Users can whitelist specific apps to allow background metered data
 usage even when Data Saver is turned on.</p>
 
-<p>Android N extends the {@link android.net.ConnectivityManager} to provide apps a
+<p>Android 7.0 extends the {@link android.net.ConnectivityManager} to provide apps a
 way to <a href="{@docRoot}preview/features/data-saver.html#status">retrieve the
 user's Data Saver preferences</a> and <a
 href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitor
@@ -353,7 +351,7 @@
 <h2 id="vulkan">Vulkan API</h2>
 
 <p>
-  Android N integrates <a href="http://www.khronos.org/vulkan" class=
+  Android 7.0 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
@@ -368,7 +366,7 @@
 </p>
 
 <p>
-  Vulkan development tools and libraries are rolled into the Android NDK. They
+  Vulkan development tools and libraries are rolled into the Android 7.0DK. They
   include:
 </p>
 
@@ -401,7 +399,7 @@
 
 
 <div style="float:right;max-width:320px">
-<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
 
 <p class="img-caption" style="padding-left:2em;">
   <strong>Figure 5.</strong> Quick Settings tiles in the notification shade.
@@ -409,7 +407,7 @@
 
 
   </div><p>Quick Settings is a popular and simple way to expose key settings and actions,
-directly from the notification shade. In Android N, we've expanded the scope of
+directly from the notification shade. In Android 7.0, we've expanded the scope of
 Quick Settings to make it even more useful and convenient. </p>
 
 <p>We've added more room for additional Quick Settings tiles, which users can
@@ -417,7 +415,7 @@
 given users control over what Quick Settings tiles appear and where they are
 displayed &mdash; users can add or move tiles just by dragging and dropping them. </p>
 
-<p>For developers, Android N also adds a new API that lets you define your own
+<p>For developers, Android 7.0 also adds a new API that lets you define your own
   Quick Settings tiles to give users easy access to key controls and actions in your app.</p>
 
 <p>
@@ -441,7 +439,7 @@
 
 <h2 id="number-blocking">Number Blocking</h2>
 
-<p>Android N now supports number blocking in the platform and provides a
+<p>Android 7.0 now supports number blocking in the platform and provides a
 framework API to let service providers maintain a blocked-number list. The
 default SMS app, the default phone app, and carrier apps can read from and
 write to the blocked-number list. The list is not accessible to other apps.</p>
@@ -471,7 +469,7 @@
 <h2 id="call_screening">Call Screening</h2>
 
 <p>
-  Android N allows the default phone app to screen incoming calls. The phone
+  Android 7.0 allows the default phone app to screen incoming calls. The phone
   app does this by implementing the new <code>CallScreeningService</code>,
   which allows the phone app to perform a number of actions based on an
   incoming call's {@link android.telecom.Call.Details Call.Details}, such as:
@@ -493,20 +491,20 @@
 <h2 id="multi-locale_languages">Multi-locale Support, More Languages</h2>
 
 
-<p>Android N now lets users select <strong>multiple locales</strong> in Settings,
+<p>Android 7.0 now lets users select <strong>multiple locales</strong> in Settings,
 to better support bilingual use-cases. Apps can use
 a new API to get the user's selected locales and then offer more sophisticated
 user experiences for multi-locale users &mdash; such as showing search results in
 multiple languages and not offering to translate webpages in a language the
 user already knows.</p>
 
-<p>Along with multi-locale support, Android N also expands the range of languages
+<p>Along with multi-locale support, Android 7.0 also expands the range of languages
 available to users. It offers more than 25 variants each for commonly used
 languages such as English, Spanish, French, and Arabic. It also adds partial
 support for more than 100 new languages.</p>
 
 <p>Apps can get the list of locales set by the user by calling
-<code>LocaleList.GetDefault()</code>.  To support the expanded number of locales, Android N is
+<code>LocaleList.GetDefault()</code>.  To support the expanded number of locales, Android 7.0 is
 changing the way that it resolves resources. Make sure that you test and verify that your apps
 working as expected with the new resource resolution logic.</p>
 
@@ -518,7 +516,7 @@
 <h2 id="emoji">New Emojis</h2>
 
 <p>
-  Android N introduces additional emojis and emoji-related features including
+  Android 7.0 introduces additional emojis and emoji-related features including
   skin tone emojis and support for variation
   selectors. If your app supports emojis,
   follow the guidelines below to take advantage of these emoji-related features.
@@ -544,7 +542,7 @@
       Unicode documentation on variations</a>.
   </li>
   <li>
-    <strong>Check that an emoji supports skin tone.</strong> Android N allows users to modify the
+    <strong>Check that an emoji supports skin tone.</strong> Android 7.0 allows users to modify the
     rendered skin tone of emojis to their preference. Keyboard apps should provide visual
     indications for emojis that have multiple skin tones and should allow users to
     select the skin tone that they prefer. To determine which system emojis have
@@ -560,7 +558,7 @@
 <h2 id="icu4">ICU4J APIs in Android</h2>
 
 <p>
-  Android N now offers a subset of <a href=
+  Android 7.0 now offers a subset of <a href=
   "http://site.icu-project.org/">ICU4J</a> APIs in the Android framework under
   the <code>android.icu</code> package. Migration is easy, and mostly entails
   simply changing from the <code>com.java.icu</code> namespace to
@@ -579,7 +577,7 @@
 <h3>Chrome + WebView, Together</h3>
 
 <p>
-  Starting with Chrome version 51 on Android N and above, the Chrome APK on your device
+  Starting with Chrome version 51 on Android 7.0 and above, the Chrome APK on your device
   is used to provide and render Android System WebViews. This approach improves memory
   usage on the device itself and also reduces the bandwidth required to keep
   WebView up to date (as the standalone WebView APK will no longer be updated
@@ -596,7 +594,7 @@
 <h3>Multiprocess</h3>
 
 <p>
-  Starting with Chrome version 51 in Android N, WebView will run web content in a
+  Starting with Chrome version 51 in Android 7.0, WebView will run web content in a
   separate sandboxed process when the developer option "Multiprocess WebView"
   is enabled.
 </p>
@@ -617,7 +615,7 @@
 
 <h3>Javascript run before page load</h3>
 <p>
-  Starting with apps targeting Android N, the Javascript context will be reset
+  Starting with apps targeting Android 7.0, the Javascript context will be reset
   when a new page is loaded. Currently, the context is carried over for the
   first page loaded in a new WebView instance.
 </p>
@@ -630,7 +628,7 @@
 <h3>Geolocation on insecure origins</h3>
 
 <p>
-  Starting with apps targeting Android N, the geolocation API will only be
+  Starting with apps targeting Android 7.0, the geolocation API will only be
   allowed on secure origins (over HTTPS.) This policy is designed to protect
   users’ private information when they’re using an insecure connection.
 </p>
@@ -640,7 +638,7 @@
 <p>
   WebView is updated regularly, so we recommend that you test compatibility
   with your app frequently using WebView’s beta channel. To get started testing
-  pre-release versions of WebView on Android N, download and install either
+  pre-release versions of WebView on Android 7.0, download and install either
   Chrome Dev or Chrome Beta, and select it as the WebView implementation under
   developer options as described above. Please report issues via the <a href=
   "https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">Chromium
@@ -656,7 +654,7 @@
 
 <h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
 
-<p>Android N adds framework interfaces and platform support for OpenGL ES 3.2, including:</p>
+<p>Android 7.0 adds framework interfaces and platform support for OpenGL ES 3.2, including:</p>
 
 <ul>
   <li> All extensions from the <a class="external-link"
@@ -667,7 +665,7 @@
   <li> Robust buffer access control to reduce WebGL overhead.
 </ul>
 
-<p>The framework API for OpenGL ES 3.2 on Android N is provided with the
+<p>The framework API for OpenGL ES 3.2 on Android 7.0 is provided with the
 <code>GLES32</code> class. When using OpenGL ES 3.2, be sure to declare the
 requirement in your manifest file, using the <code>&lt;uses-feature&gt;</code> tag and
 the <code>android:glEsVersion</code> attribute. </p>
@@ -679,7 +677,7 @@
 
 <h2 id="android_tv_recording">Android TV Recording</h2>
 
-<p>Android N adds the ability to record and playback content from Android TV input
+<p>Android 7.0 adds the ability to record and playback content from Android TV input
 services via new recording APIs.  Building on top of existing time-shifting
 APIs, TV input services can control what channel data can be recorded, how
 recorded sessions are saved, and manage user interaction with recorded content. </p>
@@ -690,7 +688,7 @@
 
 <h2 id="android_for_work">Android for Work</h2>
 
-<p>Android for Work adds many new features and APIs for devices running Android N.
+<p>Android for Work adds many new features and APIs for devices running Android 7.0.
 Some highlights are below &mdash; for a complete list of changes, see
 <a href="{@docRoot}preview/features/afw.html">Android for Work Updates</a>.</p>
 
@@ -763,7 +761,7 @@
 
 <h2 id="accessibility_enhancements">Accessibility Enhancements</h2>
 
-<p>Android N now offers Vision Settings directly on the Welcome screen for new
+<p>Android 7.0 now offers Vision Settings directly on the Welcome screen for new
 device setup. This makes it much easier for users to discover and configure
 accessibility features on their devices, including magnification gesture, font
 size, display size, and TalkBack. </p>
@@ -773,7 +771,7 @@
 early with these settings enabled. You can enable them from Settings >
 Accessibility.</p>
 
-<p>Also in Android N, accessibility services can now help users with motor
+<p>Also in Android 7.0, accessibility services can now help users with motor
 impairments to touch the screen. The new API allows building services with
 features such as face-tracking, eye-tracking, point scanning, and so on, to
 meet the needs of those users.</p>
@@ -791,7 +789,7 @@
 the user as normal. This also means accessibility services can also be
   available immediately after a restart.</p>
 
-<p>Direct boot takes advantage of file based encryption in Android N
+<p>Direct boot takes advantage of file based encryption in Android 7.0
 to enable fine grained encryption policies for both system and app data.
 The system uses a device-encrypted store for select system data and explicitly
 registered app data. By default a credential-encrypted store is used for all
@@ -812,7 +810,7 @@
 <h2 id="key_attestation">Key Attestation</h2>
 
 <p>
-  Android N introduces <em>key attestation</em>, a new security tool that helps
+  Android 7.0 introduces <em>key attestation</em>, a new security tool that helps
   you make sure that the key pairs stored within a device's <a class=
   "external-link" href=
   "https://source.android.com/security/keystore/"><em>hardware-backed
@@ -836,8 +834,8 @@
 </p>
 
 <p class="note">
-  <strong>Note: </strong>Only a small number of devices running Android N
-  support hardware-level key attestation; all other devices running Android N
+  <strong>Note: </strong>Only a small number of devices running Android 7.0
+  support hardware-level key attestation; all other devices running Android 7.0
   use software-level key attestation instead. Before you verify the properties
   of a device's hardware-backed keys in a production-level environment, you
   should make sure that the device supports hardware-level key attestation. To
@@ -857,7 +855,7 @@
 
 <h2 id="network_security_config">Network Security Config</h2>
 
-<p>In Android N, apps can customize the behavior of their secure (HTTPS, TLS)
+<p>In Android 7.0, apps can customize the behavior of their secure (HTTPS, TLS)
 connections safely, without any code modification, by using the declarative
 <em>Network Security Config</em> instead of using the conventional
 error-prone programmatic APIs (e.g. X509TrustManager).</p>
@@ -884,7 +882,7 @@
 
 <h2 id="default_trusted_ca">Default Trusted Certificate Authority</h2>
 
-<p>By default, apps that target Android N only trust system-provided certificates
+<p>By default, apps that target Android 7.0 only trust system-provided certificates
 and no longer trust user-added Certificate Authorities (CA). Apps targeting Android
 N that wish to trust user-added CAs should use the
 <a href="{@docRoot}preview/features/security-config.html">Network Security Config</a> to
@@ -893,7 +891,7 @@
 <h2 id="apk_signature_v2">APK Signature Scheme v2</h2>
 
 <p>
-  Android N introduces APK Signature Scheme v2, a new app-signing scheme that
+  Android 7.0 introduces APK Signature Scheme v2, a new app-signing scheme that
   offers faster app install times and more protection against unauthorized
   alterations to APK files. By default, Android Studio 2.2 and the Android
   Plugin for Gradle 2.2 sign your app using both APK Signature Scheme v2 and
@@ -943,7 +941,7 @@
 
 <h2 id="scoped_directory_access">Scoped Directory Access</h2>
 
-<p>In Android N, apps can use new APIs to request access to specific <a
+<p>In Android 7.0, apps can use new APIs to request access to specific <a
 href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">external
 storage</a> directories, including directories on removable media such as SD
 cards. The new APIs greatly simplify how your application accesses standard
@@ -965,7 +963,7 @@
 <h2 id="keyboard_shortcuts_helper">Keyboard Shortcuts Helper</h2>
 
 <p>
-  In Android N, the user can press <strong>Meta + /</strong> to trigger a
+  In Android 7.0, the user can press <strong>Meta + /</strong> to trigger a
   <em>Keyboard Shortcuts</em> screen that displays all shortcuts available both
   from the system and from the app in focus. The system retrieves these
   shortcuts automatically from the app’s menu if the shortcuts exist. You can
@@ -992,7 +990,7 @@
 </h2>
 
 <p>
-  Android N introduces the Custom Pointer API, which lets you customize the
+  Android 7.0 introduces the Custom Pointer API, which lets you customize the
   appearance, visibility, and behavior of the pointer. This capability is
   especially useful when a user is using a mouse or touchpad to interact with
   UI objects. The default pointer uses a standard icon. This API also includes
@@ -1017,7 +1015,7 @@
 </p>
 
 <p>
-To address these limitations, Android N includes support for
+To address these limitations, Android 7.0 includes support for
 <em>sustained performance mode</em>, enabling OEMs to provide hints about
 device-performance capabilities for long-running apps. App developers
 can use these hints to tune apps for a predictable,
@@ -1025,7 +1023,7 @@
 </p>
 
 <p>
-App developers can try out this new API in the N Developer Preview on
+App developers can try out this new API in Android 7.0 on
 Nexus 6P devices only. To use this feature,
 set the sustained performance window flag for the window
 you want to run in sustained performance mode. Set this flag using the
@@ -1036,12 +1034,12 @@
 <h2 id="vr">VR Support</h2>
 
 <p>
-Android N adds platform support and optimizations for a new VR Mode to let developers
+Android 7.0 adds platform support and optimizations for a new VR Mode to let developers
 build high-quality mobile VR experiences for users. There are a number of performance
 enhancements, including access to an exclusive CPU core for VR apps.
 Within your apps, you can take advantage of intelligent head-tracking,
-and stereo notifications that work for VR. Most importantly, Android N provides for
-very low latency graphics. For complete information about building VR apps for Android N,
+and stereo notifications that work for VR. Most importantly, Android 7.0 provides for
+very low latency graphics. For complete information about building VR apps for Android 7.0,
 see the <a href="https://developers.google.com/vr/android/">Google VR SDK for Android</a>.
 </p>
 
@@ -1049,7 +1047,7 @@
 <h2 id="print_svc">Print Service Enhancements</h2>
 
 <p>
-  In Android N, print service developers can now surface additional information
+  In Android 7.0, print service developers can now surface additional information
   about individual printers and print jobs.
 </p>
 
@@ -1138,11 +1136,11 @@
 </p>
 
 <p>
-  Android N adds the concept of <em>virtual files</em> to the Storage Access
+  Android 7.0 adds the concept of <em>virtual files</em> to the Storage Access
   Framework. The virtual files feature allows your
   {@link android.provider.DocumentsProvider} to return document URIs that can be
   used with an {@link android.content.Intent#ACTION_VIEW} intent even if they
-  don't have a direct bytecode representation. Android N also allows you to
+  don't have a direct bytecode representation. Android 7.0 also allows you to
   provide alternate formats for user files, virtual or otherwise.
 </p>
 
diff --git a/docs/html/preview/index.jd b/docs/html/about/versions/nougat/index.jd
similarity index 94%
rename from docs/html/preview/index.jd
rename to docs/html/about/versions/nougat/index.jd
index 241a98e..aaf7e92 100644
--- a/docs/html/preview/index.jd
+++ b/docs/html/about/versions/nougat/index.jd
@@ -22,10 +22,9 @@
     <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>
+        <h1 class="dac-hero-title">Android 7.0 Nougat</h1>
         <p class="dac-hero-description">
-          <strong>Android N final SDK is now available!</strong>
-          Get ready for Android N!
+          <strong>Android 7.0 Nougat brings a new crop of sweet features to your Android device.</strong>
           <strong>Test your apps</strong> on Nexus and other devices. Support new system
           behaviors to <strong>save power and memory</strong>.
           Extend your apps with <strong>multi-window UI</strong>,
@@ -49,9 +48,9 @@
     </div>
     <div class="dac-section dac-small">
       <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
+           data-query="collection:nougat/landing/resources"
            data-cardSizes="6x2"
-           data-maxResults="6"></div>
+           data-maxResults="3"></div>
     </div>
   </div>
 </section>
@@ -128,7 +127,8 @@
     data-cardSizes="6x6"
     data-items-per-page="6"
     data-maxResults="15"
-    data-initial-results="3"></div>
+    data-initial-results="3">
+  </div>
 </div></section>
 
 
diff --git a/docs/html/design/_book.yaml b/docs/html/design/_book.yaml
index df5406f..18b4719 100644
--- a/docs/html/design/_book.yaml
+++ b/docs/html/design/_book.yaml
@@ -90,23 +90,6 @@
       value: 使用返回和向上导航
     - name: zh-tw-lang
       value: 使用 [返回] 及 [上一層] 導覽
-  - title: Notifications
-    path: /design/patterns/notifications.html
-    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
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
index a837a04..c1f3c3b 100644
--- a/docs/html/design/design_toc.cs
+++ b/docs/html/design/design_toc.cs
@@ -70,15 +70,6 @@
        zh-tw-lang="使用 [返回] 及 [上一層] 導覽">
        Navigation</a></li>
 
-      <li><a href="<?cs var:toroot ?>design/patterns/notifications.html"
-       es-lang="Notificaciones"
-       ja-lang="通知"
-       ko-lang="알림"
-       pt-br-lang="Notificações"
-       ru-lang="Уведомления"
-       zh-cn-lang="通知"
-       zh-tw-lang="通知">
-       Notifications</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/widgets.html">Widgets</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/swipe-views.html">Swipe Views</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/fullscreen.html">Full Screen</a></li>
diff --git a/docs/html/design/handhelds/index.jd b/docs/html/design/handhelds/index.jd
index 4a4526c..cf224ae 100755
--- a/docs/html/design/handhelds/index.jd
+++ b/docs/html/design/handhelds/index.jd
@@ -92,7 +92,8 @@
 <p>Notifications are brief messages that users can access at any time from the status bar. They
 provide updates, reminders, or information that's important, but not critical enough to warrant
 interrupting the user. Open the notifications drawer by swiping down on the status bar. Touching a
-notification opens the associated app. <a href="{@docRoot}design/patterns/notifications.html">More on Notifications</a></p>
+notification opens the associated app. <a
+href="https://material.google.com/patterns/notifications.html">More on Notifications</a></p>
 
 <div class="cols">
   <div class="col-4">
diff --git a/docs/html/design/patterns/new.jd b/docs/html/design/patterns/new.jd
index df4c2ed..4bd3aa3 100755
--- a/docs/html/design/patterns/new.jd
+++ b/docs/html/design/patterns/new.jd
@@ -18,7 +18,7 @@
 
 <h3>Notifications</h3>
 
-<p><a href="{@docRoot}design/patterns/notifications.html">Notifications</a> receive important
+<p><a href="https://material.google.com/patterns/notifications.html">Notifications</a> receive important
 updates in Android 5.0, with material design visual changes, notification availability in the
 lockscreen, priority notifications, and cloud-synced notifications.</p>
 
@@ -124,7 +124,7 @@
 
     <p>The base notification layout has not changed, so app notifications designed for versions
     earlier than Jelly Bean still look and work the same. Check the updated <a
-    href="{@docRoot}design/patterns/notifications.html">Notifications</a> page for
+    href="https://material.google.com/patterns/notifications.html">Notifications</a> page for
     more details.</p>
   </div>
   <div class="col-6">
diff --git a/docs/html/design/patterns/notifications.jd b/docs/html/design/patterns/notifications.jd
deleted file mode 100644
index 844c3b6..0000000
--- a/docs/html/design/patterns/notifications.jd
+++ /dev/null
@@ -1,895 +0,0 @@
-page.title=Notifications
-page.tags="notifications","design"
-@jd:body
-
-  <a class="notice-developers right" href="{@docRoot}training/notify-user/index.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Notifying the User</p>
-  </div>
-</a>
-
-<a class="notice-designers right" href="notifications_k.html">
-  <div>
-    <h3>Notifications in Android 4.4 and Lower</h3>
-  </div>
-</a>
-
-<!-- video box -->
-<a class="notice-developers-video right" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
-<div>
-    <h3>Video</h3>
-    <p>DevBytes: Notifications in the Android L Developer Preview</p>
-</div>
-</a>
-
-<style>
-  .col-5, .col-6, .col-7 {
-    margin-left:0px;
-  }
-</style>
-
-<p>The notification system allows users to keep informed about relevant and
-timely
-events in your app, such as new chat messages from a friend or a calendar event.
-Think of notifications as a news channel that alerts the user to important
-events as
-they happen or a log that chronicles events while the user is not paying
-attention&mdash;and one that is synced as appropriate across all their Android devices.</p>
-
-<h4 id="New"><strong>New in Android 5.0</strong></h4>
-
-<p>In Android 5.0, notifications receive important updates: structurally,
-visually, and functionally:</p>
-
-<ul>
-  <li>Notifications have undergone visual changes consistent with the new
-material design theme.</li>
-  <li> Notifications are now available on the device lock screen, while
-sensitive content can still
-  be hidden behind it.</li>
-  <li>High-priority notifications received while the device is in use now use a new format called
-  heads-up notifications.</li>
-  <li>Cloud-synced notifications: Dismissing a notification on one of your
-Android devices dismisses it
-  on the others, as well.</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Notification design in this version of
-Android is a significant
-departure from that of previous versions. For information about notification design in previous
-versions, see <a href="./notifications_k.html">Notifications in Android 4.4 and lower</a>.</p>
-
-<h2 id="Anatomy">Anatomy of a Notification</h2>
-
-<p>This section goes over basic parts of a notification and how they can
-appear on different types of devices.</p>
-
-<h3 id="BaseLayout">Base layout</h3>
-
-<p>At a minimum, all notifications consist of a base layout, including:</p>
-
-<ul>
-  <li> The notification's <strong>icon</strong>. The icon symbolizes the
-originating app. It may also
-  potentially indicate notification type if the app generates more than one
-type.</li>
-  <li> A notification <strong>title</strong> and additional
-<strong>text</strong>.</li>
-  <li> A <strong>timestamp</strong>.</li>
-</ul>
-
-<p>Notifications created with {@link android.app.Notification.Builder Notification.Builder}
-for previous platform versions look and work the same in Android
-5.0, with only minor stylistic changes that the system handles
-for you. For more information about notifications on previous versions of
-Android, see
-<a href="./notifications_k.html">Notifications in Android 4.4 and lower</a>.</p></p>
-
-
-    <img style="margin:20px 0 0 0"
-src="{@docRoot}images/android-5.0/notifications/basic_combo.png"
-      alt="" width="700px" />
-
-
-<div style="clear:both;margin-top:20px">
-      <p class="img-caption">
-      Base layout of a handheld notification (left) and the same notification on Wear (right),
-      with a user photo and a notification icon
-    </p>
-  </div>
-
-<h3 id="ExpandedLayouts">Expanded layouts</h3>
-
-
-<p>You can choose how much detail your app's notifications should
-provide. They can show the first
-few lines of a message or show a larger image preview. The additional
-information provides the user with more
-context, and&mdash;in some cases&mdash;may allow the user to read a message in its
-entirety. The user can
-pinch-zoom or perform a single-finger glide to toggle between compact
-and expanded layouts.
- For single-event notifications, Android provides three expanded layout
-templates (text, inbox, and
- image) for you to use in your application. The following images show you how
-single-event notifications look on
- handhelds (left) and wearables (right).</p>
-
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/stack_combo.png"
-  alt="" width="700px" height;="284px" />
-<img style="margin-top:30px"
-src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png"
-    alt="" width="311px" height;="450px" />
-
-<h3 id="actions" style="clear:both; margin-top:40px">Actions</h3>
-
-<p>Android supports optional actions that are displayed at the bottom
-of the notification.
-With actions, users can handle the most common tasks for a particular
-notification from within the notification shade without having to open the
-originating application.
-This speeds up interaction and, in conjunction with swipe-to-dismiss, helps users focus on
-notifications that matter to them.</p>
-
-
-  <img src="{@docRoot}images/android-5.0/notifications/action_combo.png"
-    alt="" width="700px" />
-
-
-
-<p style="clear:both">Be judicious with how many actions you include with a
-notification. The more
-actions you include, the more cognitive complexity you create. Limit yourself
-to the smallest number
-of actions possible by only including the most imminently important and
-meaningful actions.</p>
-
-<p>Good candidates for actions on notifications are actions that:</p>
-
-<ul>
-  <li> Are essential, frequent, and typical for the content type you're
-displaying
-  <li> Allow the user to accomplish tasks quickly
-</ul>
-
-<p>Avoid actions that are:</p>
-
-<ul>
-  <li> Ambiguous
-  <li> The same as the default action of the notification (such as "Read" or
-"Open")
-</ul>
-
-
-
-<p>You can specify a maximum of three actions, each consisting of an action
-icon and name.
- Adding actions to a simple base layout makes the notification expandable,
-even if the
- notification doesn't have an expanded layout. Since actions are only shown for
-expanded
- notifications and are otherwise hidden,  make sure that any action a
-user can invoke from
- a notification is available from within the associated application, as
-well.</p>
-
-<h2 style="clear:left">Heads-up Notification</h2>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/hun-example.png"
-    alt="" width="311px" />
-  <p class="img-caption">
-    Example of a heads-up notification (incoming phone call, high priority)
-appearing on top of an
-    immersive app
-  </p>
-</div>
-
-<p>When a high-priority notification arrives (see right), it is presented
-to users for a
-short period of time with an expanded layout exposing possible actions.</p>
-<p> After this period of time, the notification retreats to the notification
-shade. If a notification's <a href="#correctly_set_and_manage_notification_priority">priority</a> is
-flagged as High, Max, or full-screen, it gets a heads-up notification.</p>
-
-<p><b>Good examples of heads-up notifications</b></p>
-
-<ul>
-  <li> Incoming phone call when using a device</li>
-  <li> Alarm when using a device</li>
-  <li> New SMS message</li>
-  <li> Low battery</li>
-</ul>
-
-<h2 style="clear:both" id="guidelines">Guidelines</h2>
-
-
-<h3 id="MakeItPersonal">Make it personal</h3>
-
-<p>For notifications of items sent by another person (such as a message or
-status update), include that person's image using
-{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Also attach information about
-the person to the notification's metadata (see {@link android.app.Notification#EXTRA_PEOPLE}).</p>
-
-<p>Your notification's main icon is still shown, so the user can associate
-it with the icon
-visible in the status bar.</p>
-
-
-<img src="{@docRoot}images/android-5.0/notifications/Triggered.png"
-  alt="" width="311px"/>
-<p style="margin-top:10px" class="img-caption">
-  Notification that shows the person who triggered it and the content they sent.
-</p>
-
-
-<h3 id="navigate_to_the_right_place">Navigate to the right place</h3>
-
-<p>When the user touches the body of a notification (outside of the action
-buttons), open your app
-to the place where the user can view and act upon the data referenced in the
-notification. In most cases, this will be the detailed view of a single data item such as a message,
-but it might also be a
-summary view if the notification is stacked. If your app takes the
-user anywhere below your app's top level, insert navigation into your app's back stack so that the
-user can press the system back button to return to the top level. For more information, see
-<em>Navigation into Your App via Home Screen Widgets and Notifications</em> in the <a
-href="{@docRoot}design/patterns/navigation.html#into-your-app">Navigation</a>
-design pattern.</p>
-
-<h3 id="correctly_set_and_manage_notification_priority">Correctly set and
-manage notification
-priority</h3>
-
-<p>Android supports a priority flag for notifications. This flag allows you to
-influence where your notification appears, relative to other notifications, and
-helps ensure
-that users always see their most important notifications first. You can choose
-from the
-following priority levels when posting a notification:</p>
-<table>
- <tr>
-    <td class="tab0">
-<p><strong>Priority</strong></p>
-</td>
-    <td class="tab0">
-<p><strong>Use</strong></p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MAX</code></p>
-</td>
-    <td class="tab1">
-<p>Use for critical and urgent notifications that alert the user to a condition
-that is
-time-critical or needs to be resolved before they can continue with a
-particular task.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>HIGH</code></p>
-</td>
-    <td class="tab1">
-<p>Use primarily for important communication, such as message or chat
-events with content that is particularly interesting for the user.
-High-priority notifications trigger the heads-up notification display.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>DEFAULT</code></p>
-</td>
-    <td class="tab1">
-<p>Use for all notifications that don't fall into any of the other priorities described here.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>LOW</code></p>
-</td>
-    <td class="tab1">
-<p>Use for notifications that you want the user to be informed about, but
-that are less urgent. Low-priority notifications tend to show up at the bottom of the list,
-which makes them a good
-choice for things like public or undirected social updates: The user has asked to
-be notified about
-them, but these notifications should never take precedence over urgent or direct
-communication.</p>
-</td>
- </tr>
- <tr>
-    <td class="tab1">
-<p><code>MIN</code></p>
-</td>
-    <td class="tab1">
-<p>Use for contextual or background information such as weather information or contextual
-location information.
-Minimum-priority notifications do not appear in the status bar. The user
-discovers them on expanding the notification shade.</p>
-</td>
- </tr>
-</table>
-
-
-<h4 id="how_to_choose_an_appropriate_priority"><strong>How to choose an
-appropriate
-priority</strong></h4>
-
-<p><code>DEFAULT</code>, <code>HIGH</code>, and <code>MAX</code> are interruptive priority levels, and risk
-interrupting the user
-in mid-activity. To avoid annoying your app's users, reserve interruptive priority levels for
-notifications that:</p>
-
-<ul>
-  <li> Involve another person</li>
-  <li> Are time-sensitive</li>
-  <li> Might immediately change the user's behavior in the real world</li>
-</ul>
-
-<p>Notifications set to <code>LOW</code> and <code>MIN</code> can still be
-valuable for the user: Many, if not most, notifications just don't need to command the user's
-immediate attention, or vibrate the user's wrist, yet contain information that the user will find
-valuable when they choose to
-look for notifications. Criteria for <code>LOW</code> and <code>MIN</code>
-priority notifications include:</p>
-
-<ul>
-  <li> Don't involve other people</li>
-  <li> Aren't time sensitive</li>
-  <li> Contain content the user might be interested in but could choose to
-browse at their leisure</li>
-</ul>
-
-
-  <img
-src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png"
-    alt="" width="700"/>
-
-
-<h3 style="clear:both" id="set_a_notification_category">Set a notification
-category</h3>
-
-<p>If your notification falls into one of the predefined categories (see
-below), assign it
-accordingly.  Aspects of the system UI such as the notification shade (or any
-other notification
-listener) may use this information to make ranking and filtering decisions.</p>
-<table>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
-</td>
-    <td>
-<p>Incoming call (voice or video) or similar synchronous communication
-request</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p>
-</td>
-    <td>
-<p>Incoming direct message (SMS, instant message, etc.)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p>
-</td>
-    <td>
-<p>Asynchronous bulk message (email)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p>
-</td>
-    <td>
-<p>Calendar event</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p>
-</td>
-    <td>
-<p>Promotion or advertisement</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p>
-</td>
-    <td>
-<p>Alarm or timer</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p>
-</td>
-    <td>
-<p>Progress of a long-running background operation</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p>
-</td>
-    <td>
-<p>Social network or sharing update</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p>
-</td>
-    <td>
-<p>Error in background operation or authentication status</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p>
-</td>
-    <td>
-<p>Media transport control for playback</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p>
-</td>
-    <td>
-<p>System or device status update.  Reserved for system use.</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p>
-</td>
-    <td>
-<p>Indication of running background service</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p>
-</td>
-    <td>
-<p>A specific, timely recommendation for a single thing.  For example, a news
-app might want to
-recommend a news story it believes the user will want to read next.</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p><code><a
-href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p>
-</td>
-    <td>
-<p>Ongoing information about device or contextual status</p>
-</td>
- </tr>
-</table>
-
-<h3 id="summarize_your_notifications">Summarize your notifications</h3>
-
-<p>If a notification of a certain type is already pending when your app tries to send a new
-notification of the same type, combine them into a single summary notification for the app. Do not
-create a new object.</p>
-
-<p>A summary notification builds a summary description and allows the user to
-understand how many
-notifications of a particular kind are pending.</p>
-
-<div class="col-6">
-
-<p><strong>Don't</strong></p>
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png"
-    alt="" width="311px" />
-</div>
-
-<div>
-<p><strong>Do</strong></p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png"
-    alt="" width="311px"/>
-</div>
-
-<p style="clear:left; padding-top:30px; padding-bottom:20px">You can provide
-more detail about the individual notifications that make up a
- summary by using the expanded digest layout. This approach allows users to gain a
-better sense of which
- notifications are pending and if they are interesting enough to read in
-detail within the
- associated app.</p>
-<div class="col-6">
-  <img src="{@docRoot}images/android-5.0/notifications/Stack.png"
-style="margin-bottom:20px"
-    alt="" width="311px" />
-  <p class="img-caption">
-  Expanded and contracted notification that is a summary (using <code>InboxStyle</code>)
-  </p>
-</div>
-
-<h3 style="clear:both" id="make_notifications_optional">Make notifications
-optional</h3>
-
-<p>Users should always be in control of notifications. Allow the user to
-disable your app's
-notifications or change their alert properties, such as alert sound and whether
-to use vibration,
-by adding a notification settings item to your application settings.</p>
-
-<h3 id="use_distinct_icons">Use distinct icons</h3>
-<p>By glancing at the notification area, the user should be able to discern
-what kinds of
-notifications are currently pending.</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png"
-    alt="" width="420" />
-</div>
-
-  <div><p><strong>Do</strong></p>
-    <p>Look at the notification icons Android apps already provide and create
-notification icons for
-    your app that are sufficiently distinct in appearance.</p>
-
-    <p><strong>Do</strong></p>
-    <p>Use the proper <a
-href="/design/style/iconography.html#notification">notification icon style</a>
- for small icons, and the Material Light
-    <a href="/design/style/iconography.html#action-bar">action bar icon
-style</a> for your action
-    icons.</p>
-<p ><strong>Do</strong></p>
-<p >Keep your icons visually simple, avoiding excessive detail that is hard to
-discern.</p>
-
-  <div><p><strong>Don't</strong></p>
-    <p>Place any additional alpha (dimming or fading) into your
-small icons and action
-    icons; they can have anti-aliased edges, but because Android uses these
-icons as masks (that is, only
-    the alpha channel is used), the image should generally be drawn at full
-opacity.</p>
-
-</div>
-<p style="clear:both"><strong>Don't</strong></p>
-
-<p>Use color to distinguish your app from others. Notification icons should
-only be a white-on-transparent background image.</p>
-
-
-<h3 id="pulse_the_notification_led_appropriately">Pulse the notification LED
-appropriately</h3>
-
-<p>Many Android devices contain a notification LED, which is used to keep the
-user informed about
-events while the screen is off. Notifications with a priority level of <code>MAX</code>,
-<code>HIGH</code>, or <code>DEFAULT</code> should
-cause the LED to glow, while those with lower priority (<code>LOW</code> and
-<code>MIN</code>) should not.</p>
-
-<p>The user's control over notifications should extend to the LED. When you use
-DEFAULT_LIGHTS, the
-LED will glow white. Your notifications shouldn't use a different
-color unless the
-user has explicitly customized it.</p>
-
-<h2 id="building_notifications_that_users_care_about">Building Notifications
-That Users Care About</h2>
-
-<p>To create an app that users love, it is important to design your
-notifications carefully.
-Notifications embody your app's voice, and contribute to your app's
-personality. Unwanted or
-unimportant notifications can annoy the user or make them resent how much
-attention the app wants
-from them, so use notifications judiciously.</p>
-
-<h3 id="when_to_display_a_notification">When to display a notification</h3>
-
-<p>To create an application that people enjoy using, it's important to
-recognize that the user's
-attention and focus is a resource that must be protected. While Android's
-notification system has
-been designed to minimize the impact of notifications on the user's attention,
-it is
-still important to be aware of the fact that notifications are interrupting the
-user's task flow.
-As you plan your notifications, ask yourself if they are important enough to
-warrant an interruption. If you are unsure, allow the user to opt into a
-notification using your apps notification settings, or adjust
-the notifications priority flag to <code>LOW</code> or <code>MIN</code> to
-avoid distracting the user while they are doing
-something else.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png"
-    alt="" width="311px" />
-  <p style="margin-top:10px" class="img-caption">
-   Examples of time-sensitive notification
-  </p>
-
-<p>While well-behaved apps generally only speak when spoken to, a few cases
-do merit an app's interrupting the user with an unprompted notification.</p>
-
-<p>Use notifications primarily for <strong>time-sensitive events</strong>, especially
- if these synchronous events <strong>involve other people</strong>. For
-instance, an incoming chat
- is a real-time and synchronous form of communication: Another user
-actively waiting on your response. Calendar events are another good example of when to use a
-notification and grab the
-  user's attention, because the event is imminent, and calendar events often
-involve other people.</p>
-
-<h3 style="clear:both" id="when_not_to_display_a_notification">When not to
-display a notification</h3>
-
-<div class="figure" style="margin-top:60px">
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png"
-    alt="" width="311px" />
-</div>
-
-<p>In many other cases, notifications aren't appropriate:</p>
-
-<ul>
-  <li> Avoid notifying the user of information that is not directed
-specifically at them, or
-  information that is not truly time-sensitive. For instance, the asynchronous
-and undirected updates
-  flowing through a social network generally do not warrant a real-time
-interruption. For the users
-  who do care about them, allow them to opt-in.</li>
-  <li> Don't create a notification if the relevant new information is currently
-on screen. Instead,
-  use the UI of the application itself to notify the user of new information
-directly in context.
-  For instance, a chat application should not create system notifications while
-the user is actively chatting with another user.</li>
-  <li> Don't interrupt the user for low-level technical operations, like saving
-or syncing information, or updating an application if the app or system can resolve the issue
-without involving the user.</li>
-  <li> Don't interrupt the user to inform them of an error if it is possible
-for the application to recover from the error on its own without the user
-taking any action.</li>
-  <li> Don't create notifications that have no true notification content and
-merely advertise your
-  app. A notification should provide useful, timely, new information and should
-not be used
-  merely to launch an app.</li>
-  <li> Don't create superfluous notifications just to get your brand in front
-of users.
-  Such notifications frustrate and likely alienate your audience. The
-best way to provide
-  small amounts of updated information and keep them engaged
-with your
-  app is to develop a widget that they can choose to place on their
-home screen.</li>
-</ul>
-
-<h2 style="clear:left" id="interacting_with_notifications">Interacting with
-Notifications</h2>
-
-<p>Notifications are indicated by icons in the status bar, and can be accessed
-by opening the
-notification drawer.</p>
-
-<p>Touching a notification opens the associated app to detailed content
-that matches the notification.
-Swiping left or right on a notification removes it from the drawer.</p>
-
-<h3 id="ongoing_notifications">Ongoing notifications</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png"
-    alt="" width="311px"  />
-      <p class="img-caption">
-    Ongoing notification due to music playback
-  </p>
-</div>
-<p>Ongoing notifications keep users informed about an ongoing process in the
-background.
-For example, music players announce the currently playing track in the
-notification system and
-continue to do so until the user stops the playback. Ongoing notifications can also
-show the user
-feedback for longer tasks like downloading a file, or encoding a video. A user cannot manually
-remove an ongoing notification from the notification drawer.</p>
-
-<h3 id="ongoing_notifications">Media playback</h3>
-<p>In Android 5.0, the lock screen doesn't show transport controls for the deprecated
-{@link android.media.RemoteControlClient} class. But it <em>does</em> show notifications, so each
-app's playback notification is now the primary
-way for users to control playback from a locked state. This behavior gives apps more
-control over which
-buttons to show, and in what way, while providing a consistent experience for
-the user whether or not the screen is locked.</p>
-
-<h3 style="clear:both"
-id="dialogs_and_toasts_are_for_feedback_not_notification">Dialogs
-and toasts</h3>
-
-<p>Your app should not create a dialog or toast if it is not currently on
-screen. A dialog or toast
- should only be displayed as an immediate response to the user taking an action
-inside of your app.
-For further guidance on the use of dialogs and toasts, refer to
-<a href="/design/patterns/confirming-acknowledging.html">Confirming & Acknowledging</a>.</p>
-
-<h3>Ranking and ordering</h3>
-
-<p>Notifications are news, and so are essentially shown in
-reverse-chronological order, with
-special consideration given to the app's stated notification
-<a href="#correctly_set_and_manage_notification_priority">priority</a>.</p>
-
-<p>Notifications are a key part of the lock screen, and are featured prominently
-every
-time the device display comes on. Space on the lock screen is tight, so it
-is more important
-than ever to identify the most urgent or relevant notifications. For this
-reason, Android has a
-more sophisticated sorting algorithm for notifications, taking into account:</p>
-
-<ul>
-  <li> The timestamp and application's stated priority.</li>
-  <li> Whether the notification has recently disturbed the user with sound or
-vibration. (That is,
-  if the phone just made a noise, and the user wants to know "What just
-happened?", the lock screen
-  should answer that at a glance.)</li>
-  <li> Any people attached to the notification using {@link android.app.Notification#EXTRA_PEOPLE},
-  and, in particular, whether they are starred contacts.</li>
-</ul>
-
-<p>To best take advantage of this sorting, focus on the user
-experience you want
-to create, rather than aiming for any particular spot on the list.</p>
-
-  <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png"
-    alt="" width="700px" />
-
-  <p class="img-caption" style="margin-top:10px">Gmail notifications are
-default priority, so they
-  normally sort below messages from an instant messaging app like Hangouts, but
-get a
-  temporary bump when new messages come in.
-  </p>
-
-
-<h3>On the lock screen</h3>
-
-<p>Because notifications are visible on the lock screen, user privacy is an
-especially
-important consideration. Notifications often contain sensitive information, and
-should not necessarily be visible
-to anyone who picks up the device and turns on the display.</p>
-
-<ul>
-  <li> For devices that have a secure lock screen (PIN, pattern, or password), the interface has
-  public and private parts. The public interface can be displayed on a secure lock screen and
-  therefore seen by anyone. The private interface is the world behind that lock screen, and
-  is only revealed once the user has signed into the device.</li>
-</ul>
-
-<h3>User control over information displayed on the secure lock screen</h3>
-<div class="figure" style="width:311px">
-  <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png"
-  srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px"/>
-      <p class="img-caption">
-    Notifications on the lock screen, with contents revealed after the user unlocks the device.
-  </p>
-</div>
-
-<p>When setting up a secure lock screen, the user can choose to conceal
-sensitive details from the secure lock screen. In this case the System UI
-considers the notification's <em>visibility level</em> to figure out what can
-safely be shown.</p>
-<p> To control the visibility level, call
-<code><a
-href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>,
-and specify one of these values:</p>
-
-<ul>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>.
-Shows the notification's full content.
-  This is the system default if visibility is left unspecified.</li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>.
-On the lock screen, shows basic information about the existence of this notification, including its
-icon and the name of the app that posted it. The rest of the notification's details are not displayed.
-A couple of good points to keep in mind are as follows:
-  <ul>
-    <li> If you want to provide a different public version of your notification
-for the system to display on a secure lock screen, supply a replacement
-Notification object in the <code><a
-href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>
-field.
-    <li> This setting gives your app an opportunity to create a redacted version of the
-content that is still useful but does not reveal personal information. Consider the example of an
-SMS app whose notifications include the text of the SMS and the sender's name and contact icon.
-This notification should be <code>VISIBILITY_PRIVATE</code>, but <code>publicVersion</code> could still
-contain useful information like "3 new messages" without any other identifying
-details.
-  </ul>
-  </li>
-  <li><code><a
-href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</A></code>. Shows only the most minimal information, excluding
-even the notification's icon.</li>
-</ul>
-<h2 style="clear:both" id="notifications_on_android_wear">Notifications on
-Android Wear</h2>
-
-<p>Notifications and their <em>actions</em> are bridged over to Wear devices by default.
-Developers can control which notifications bridge from the
-phone to the watch,
-and vice-versa. Developers can also control which actions bridge, as well. If
-your app includes
-actions that can't be accomplished with a single tap, either hide these actions
-on your Wear
-notification or consider hooking them up to a Wear app, thus allowing the user to
-finish the action on
-their watch.</p>
-
-<h4>Bridging notifications and actions</h4>
-
-<p>A connected device, such as a phone, can bridge notifications to a Wear device, so that the
-notifications are displayed there. Similarly, it can bridge actions, so that the user can act
-on the notifications right from the Wear device.</p>
-
-<p><strong>Bridge</strong></p>
-
-<ul>
-  <li> New instant messages</li>
-  <li> Single-tap actions such as +1, Like, Heart</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px"
-height="156px"
-  alt="" />
-
-<p><strong>Don't bridge</strong></p>
-
-<ul>
-  <li> Notifications of newly arrived podcasts</li>
-  <li> Actions that map to features that aren't possible on the watch</li>
-</ul>
-
-
-
-<p><h4>Unique actions to define for Wear</h4></p>
-
-<p>There are some actions that you can perform only on Wear. These include the following:</p>
-
-<ul>
-  <li> Quick lists of canned responses such as "Be right back"</li>
-  <li> Open on the phone</li>
-  <li> A "Comment" or "Reply" action that brings up the speech input screen</li>
-  <li> Actions that launch Wear-specific apps</li>
-</ul>
-
-<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px"
-height="156px"
-  alt="" />
diff --git a/docs/html/design/wear/style.jd b/docs/html/design/wear/style.jd
index 75bd65f..804223f 100644
--- a/docs/html/design/wear/style.jd
+++ b/docs/html/design/wear/style.jd
@@ -67,7 +67,7 @@
 
 <h2 id="KeepMinimum" style="clear:both">Keep Notifications to a Minimum</h2>
 
-<p>Don’t abuse the user’s attention. Active notifications (that is, those that cause the device to vibrate) should only be used in cases that are both timely and involve a contact, for example receiving a message from a friend. Non-urgent notifications should be silently added to the Context Stream. See also the general <a href="{@docRoot}design/patterns/notifications.html">Android Notifications Guidelines</a>.</p>
+<p>Don’t abuse the user’s attention. Active notifications (that is, those that cause the device to vibrate) should only be used in cases that are both timely and involve a contact, for example receiving a message from a friend. Non-urgent notifications should be silently added to the Context Stream. See also the general <a href="https://material.google.com/patterns/notifications.html">Android Notifications Guidelines</a>.</p>
 
 
 
diff --git a/docs/html/distribute/engage/notifications.jd b/docs/html/distribute/engage/notifications.jd
index c38f649..a37d703 100644
--- a/docs/html/distribute/engage/notifications.jd
+++ b/docs/html/distribute/engage/notifications.jd
@@ -10,7 +10,7 @@
 </div>
 
 <p>
-  The <a href="/design/patterns/notifications.html">notification system</a>
+  The <a href="https://material.google.com/patterns/notifications.html">notification system</a>
   allows your app to keep the user informed about events, such as new messages,
   upcoming calendar appointments, shared photos, and much more. They are a
   fundamental feature of Android that consumers check frequently to receive
diff --git a/docs/html/distribute/essentials/optimizing-your-app.jd b/docs/html/distribute/essentials/optimizing-your-app.jd
index 09c52d4..d09a1a8 100644
--- a/docs/html/distribute/essentials/optimizing-your-app.jd
+++ b/docs/html/distribute/essentials/optimizing-your-app.jd
@@ -475,7 +475,7 @@
   A great way to deliver a delightful user experience is to integrate tightly
   with the operating system. Features like <a href=
   "{@docRoot}guide/topics/appwidgets/index.html">Home screen widgets</a>,
-  <a href="{@docRoot}design/patterns/notifications.html">rich
+  <a href="https://material.google.com/patterns/notifications.html">rich
   notifications</a>, <a href="{@docRoot}guide/topics/search/index.html">global
   search integration</a>, and <a href=
   "{@docRoot}reference/android/widget/QuickContactBadge.html">Quick
diff --git a/docs/html/distribute/essentials/quality/core.jd b/docs/html/distribute/essentials/quality/core.jd
index 637eaac..3499f23 100644
--- a/docs/html/distribute/essentials/quality/core.jd
+++ b/docs/html/distribute/essentials/quality/core.jd
@@ -186,7 +186,7 @@
   <td>
     <p style="margin-bottom:.5em;">
     Notifications follow Android Design <a href=
-    "{@docRoot}design/patterns/notifications.html">guidelines</a>. In
+    "https://material.google.com/patterns/notifications.html">guidelines</a>. In
     particular:
     </p>
 
diff --git a/docs/html/distribute/essentials/quality/wear.jd b/docs/html/distribute/essentials/quality/wear.jd
index fc1c73f..34c6cc5 100644
--- a/docs/html/distribute/essentials/quality/wear.jd
+++ b/docs/html/distribute/essentials/quality/wear.jd
@@ -18,7 +18,7 @@
       Core App Quality</a></li>
     <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">
       Optimize Your App</a></li>
-    <li><a href="{@docRoot}design/patterns/notifications.html">
+    <li><a href="https://material.google.com/patterns/notifications.html">
       Notifications</a></li>
   </ol>
 </div>
diff --git a/docs/html/distribute/googleplay/developer-console.jd b/docs/html/distribute/googleplay/developer-console.jd
index c826e82..5a6c96fc 100644
--- a/docs/html/distribute/googleplay/developer-console.jd
+++ b/docs/html/distribute/googleplay/developer-console.jd
@@ -10,30 +10,30 @@
   <div id="qv">
     <h2>Features</h2>
     <ol>
-      <li><a href="#latest">Latest blog posts</a></li>
-      <li><a href="#publish">Publish with confidence</a></li>
-      <li><a href="#aquire-users">Acquire users</a></li>
-      <li><a href="#insights">Actionable insights</a></li>
-      <li><a href="#manage">Manage your app</a></li>
+      <li><a href="#latest">Latest Blog Posts</a></li>
+      <li><a href="#publish">Publish with Confidence</a></li>
+      <li><a href="#aquire-users">Acquire Users</a></li>
+      <li><a href="#insights">Learn about Users and App Performance</a></li>
+      <li><a href="#manage">Manage Your App</a></li>
     </ol>
   </div>
 </div>
 
 <p>
-  The <a href="https://play.google.com/apps/publish/">Google Play Developer
-  Console</a> is your home for publishing operations and tools.
+  The <a class="external-link" href="https://play.google.com/apps/publish/">Google Play Developer
+  Console</a> is your home for publishing and managing your apps.
 </p>
 
 <img src="{@docRoot}images/distribute/googleplay/gp-devconsole-home.png" style="width:480px;">
 
 <p>
-  Upload apps, build your product pages, configure prices and distribution, and
-  publish. You can manage all phases of publishing on Google Play through the
-  Developer Console, from any web browser.
+  You can manage all phases of publishing on Google Play through the Developer
+  Console. Using any web browser, you can upload apps, build product pages, set
+  prices, configure distribution, and publish apps.
 </p>
 
 <p>
-  Once you've <a href=
+  After you've <a href=
   "{@docRoot}distribute/googleplay/start.html">registered</a> and received
   verification by email, you can sign in to your Google Play Developer Console.
 </p>
@@ -44,7 +44,7 @@
 
 <div class="dynamic-grid">
 <div class="headerLine">
-<h2 id="latest">Latest blog posts</h2>
+<h2 id="latest">Latest Blog Posts</h2>
 </div>
 
 <div class="resource-widget resource-flow-layout col-13"
@@ -54,31 +54,10 @@
   data-maxResults="3"></div>
   </div>
 
-<h2 id="publish">Publish with confidence</h2>
-
+<h2 id="publish">Publish with Confidence</h2>
+<p>The Developer Console provides rich testing features and staged rollouts that help you to
+ provide apps that satisfy your users.</p>
 <div class="wrap">
-  <h3 id="alpha-beta">Alpha and beta tests</h3>
-
-  <div class="cols" style="margin-top:2em;">
-    <div class="col-3of12">
-      <p>
-        Distribute your pre-release app to users as an open beta with a
-        one-click, opt-in URL or as a closed beta using an email list, Google
-        Group, or Google+ community. Users can then provide feedback, while not
-        affecting your app’s public reviews and rating. This valuable feedback
-        will help you test features and improve the quality of your app.
-        <a href="{@docRoot}distribute/engage/beta.html">Learn more</a>.
-      </p>
-    </div>
-
-    <div class="col-8of12 col-push-1of12">
-      <img src=
-      "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png"
-      srcset=
-      "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png 1x, {@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test_2x.png 2x"
-      width="500">
-    </div>
-  </div>
 
   <h3 id="cloud-test">Cloud Test Lab</h3>
 
@@ -87,8 +66,8 @@
       <p>
         Get free automated testing of your app on physical devices covering
         nearly every brand, model, and version of the devices your users might
-        be using. The lab will help you quickly find compatibility issues you
-        may miss using only your available test devices. Sign-up in the
+        have. The lab helps you quickly find compatibility issues that you
+        might miss using only your available test devices. Sign up in the
         Developer Console to become an early tester before this feature becomes
         more widely available. <a href=
         "https://developers.google.com/cloud-test-lab/" class=
@@ -100,57 +79,85 @@
       <img src=
       "{@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab.png"
       srcset=
-      "{@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab.png 1x, {@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab_2x.png 2x"
+      "{@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab_2x.png 2x"
       width="500">
     </div>
   </div>
 </div>
 
+  <h3 id="alpha-beta">Alpha and beta tests</h3>
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <p>
+      Collect user feedback on early versions of your app with alpha and beta testing.
+        Distribute your pre-release app to users as an open beta with a
+        one-click, opt-in URL or as a closed beta using an email list, Google
+        Group, or Google+ community. Users can provide feedback, while not
+        affecting your app’s public reviews and rating. This valuable feedback
+        helps you test features and improve the quality of your app.
+        <a href="{@docRoot}distribute/engage/beta.html">Learn more</a>.
+      </p>
+    </div>
+
+    <div class="col-8of12 col-push-1of12">
+      <img src=
+      "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png"
+      srcset=
+      "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test_2x.png 2x"
+      width="500">
+    </div>
+  </div>
+
 <h3 id="staged-rollouts">Staged rollouts</h3>
 
 <p>
-  Release app updates progressively to an increasing portion of your users and
-  monitor for missed issues. Then take the opportunity to fix problems before
-  all your users are affected. <a href=
+Discover and fix problems with a limited user base before making a wider release.
+With staged rollouts, you can release app updates progressively to an increasing portion of
+ your users.
+You can fix problems before your app reaches the broader user community. <a href=
   "https://support.google.com/googleplay/android-developer/answer/3131213"
-  class="external-link">Learn more.</a>
+  class="external-link">Learn more</a>.
 </p>
 
-<p class="aside">
-  <strong>Tip:</strong> If you find an issue during a rollout stage you can
-  halt the rollout to further minimize the effect, and then resume rollout once
-  a fix has been made.
+<p class="note">
+  <strong>Tip:</strong> If you find an issue during a rollout stage, you can
+  halt the rollout, make the fix, and then resume.
 </p>
 
-<h2 id="aquire-users">Aquire users</h2>
-
-  <h3 id="adwords">AdWords Universal App Campaigns</h3>
+<h2 id="aquire-users">Acquire Users</h2>
+<p>Using the Developer Console, you can configure targeted ads to present your app to more users.
+ You can test variations of your Play Store listings and track user responses.</p>
+  <h3 id="adwords">Promote your app with AdWords</h3>
 
   <p>
-    Easily and conveniently buy AdWords app install ads, across Search
+    Easily and conveniently buy AdWords app install ads. AdWords Universal App Campaigns
+    appear across Search
     (including Play Search), YouTube, AdMob, and the Google Display Network.
-    Simply set a budget and cost per acquisition and Google takes care of the
+    Set a budget and cost per acquisition, and Google takes care of the
     rest. <a href="{@docRoot}distribute/users/promote-with-ads.html">Learn
     more</a>.
   </p>
 
 <div class="wrap">
-  <h3 id="listing-experiments">Store Listing Experiments</h3>
+  <h3 id="listing-experiments">Increase installs with improved store listings</h3>
 
   <div class="cols" style="margin-top:2em;">
     <div class="col-3of12">
-      <p>
-        Test variations of the images and text used to promote and describe
-        your app on your Play store listing. Then when enough data has been
-        collected, choose to make the winning combination visible on Google
+      <p>With store listing experiments,
+        you can test variations of your app's Play Store listing.
+        You can try different combinations of images and text used to promote and describe
+        your app on its Play Store listing. Collect data, choose the best combination, and make
+        it visible on Google
         Play. <a href="{@docRoot}distribute/users/experiments.html">Learn
         more</a>.
       </p>
 
-      <p class="aside">
-        <strong>Tip:</strong> You can even try out different orders for your
-        screenshots and other images to discover which grabs users’ attention
-        the best.
+      <p class="note">
+        <strong>Tip:</strong> You can reorder your screenshots and other images in different ways
+        to determine the arrangement that best attracts users.
       </p>
     </div>
 
@@ -158,20 +165,21 @@
       <img src=
       "{@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment.png"
       srcset=
-      "{@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment.png 1x, {@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment_2x.png 2x"
+      "{@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment_2x.png 2x"
       width="500">
     </div>
   </div>
 
-  <h3 id="user-perf-report">User Acquisition performance report</h3>
+  <h3 id="user-perf-report">User acquisition performance report</h3>
 
   <div class="cols" style="margin-top:2em;">
     <div class="col-3of12">
       <p>
-        Discover where visitors to your Play Store listing come from, how many
-        go on to install your app, and how many buy your in-app products in the
-        User Acquisition performance report; compare cohorts, examine
-        acquisition channels, and see details of users and buyers. <a href=
+        Discover information about visitors to your Play Store listing, such as where they come
+        from, how many go on to install your app, and how many buy your in-app products. You
+        can also compare cohorts, examine acquisition channels, and see details of users and
+        buyers. <a href=
         "{@docRoot}distribute/users/user-acquisition.html">Learn more</a>.
       </p>
     </div>
@@ -180,14 +188,16 @@
       <img src=
       "{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png"
       srcset=
-      "{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png 1x, {@docRoot}images/distribute/googleplay/dev-console_conversion-funnel_2x.png 2x"
+      "{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_conversion-funnel_2x.png 2x"
       width="500">
     </div>
   </div>
 </div>
 
-<h2 id="insights">Actionable insights</h2>
-
+<h2 id="insights">Learn about App Users and Performance</h2>
+<p>Using the Developer console, you can gain valuable insights about app performance.
+ You can better understand user behavior and find out ways to optimize your app. </p>
 <div class="wrap">
 
 <h3 id="player-analytics">Player Analytics</h3>
@@ -195,8 +205,10 @@
   <div class="cols" style="margin-top:2em;">
     <div class="col-3of12">
       <p>
-        With Google Play game services integration, discover more about the
-        behaviour of your game players; how they play and how they buy. Also get
+        Google Play game services offers a comprehensive dashboard of player and engagement
+        statistics.
+        With Player Analytics, discover more about the
+        behavior of your game users, including how they play and how they buy. Also get
         help setting and monitoring revenue budgets. <a href=
         "{@docRoot}distribute/engage/game-services.html">Learn more</a>.
       </p>
@@ -206,7 +218,8 @@
       <img src=
       "{@docRoot}images/distribute/googleplay/dev-console_player-analytics.png"
       srcset=
-      "{@docRoot}images/distribute/googleplay/dev-console_player-analytics.png 1x, {@docRoot}images/distribute/googleplay/dev-console_player-analytics_2x.png 2x"
+      "{@docRoot}images/distribute/googleplay/dev-console_player-analytics.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_player-analytics_2x.png 2x"
       width="500">
     </div>
   </div>
@@ -216,74 +229,77 @@
   <div class="cols" style="margin-top:2em;">
     <div class="col-3of12">
       <p>
-        Get a wide range of reports on the performance of your app and behaviour
-        of users; such as installs, revenue, crashes, and more. Turn on email
-        alerts to be notified of any sudden changes to important stats. <a href=
-        "https://support.google.com/googleplay/android-developer/topic/3450942?ref_topic=3450986"
-        class="external-link">Learn more.</a>
+        Get a wide range of reports on the performance of your app and behavior
+        of users such as installs, revenue, and crashes. Turn on email
+        alerts to receive notifications of any sudden changes to important stats. <a  href=
+    "https://support.google.com/googleplay/android-developer/topic/3450942?ref_topic=3450986"
+        class="external-link">Learn more</a>.
       </p>
     </div>
 
     <div class="col-8of12 col-push-1of12">
       <img src=
       "{@docRoot}images/distribute/googleplay/dev-console_statistics.png" srcset=
-      "{@docRoot}images/distribute/googleplay/dev-console_statistics.png 1x, {@docRoot}images/distribute/googleplay/dev-console_statistics_2x.png 2x"
+      "{@docRoot}images/distribute/googleplay/dev-console_statistics.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_statistics_2x.png 2x"
       width="500">
     </div>
   </div>
 </div>
 
 
-<h3 id="optimization"> Optimization tips</h3>
+<h3 id="optimization">Optimization tips</h3>
 
 <p>
-  Get tips, based on automatic app scanning, on ways in which you can improve
-  your app, everything from updating old APIs to suggestions for languages you
-  should consider localizing to.
+  Automatic app scanning provides tips on ways to improve your apps&mdash;everything
+  from updating old APIs to suggested languages for localization.
 </p>
 
-<h2 id="manage">Manage your app</h2>
+<h2 id="manage">Manage Your App</h2>
 
 <h3 id="manage-apks">Manage your APKs</h3>
 
 <p>
   Upload and manage your Android application packages (APK) to the Developer
-  Console as drafts or to your Alpha, Beta, or Production channels. <a href=
+  Console as drafts or to your Alpha, Beta, or Production channels. <a  href=
   "https://support.google.com/googleplay/android-developer/answer/113469?ref_topic=3450986"
-  class="external-link">Learn more.</a>
+  class="external-link">Learn more</a>.
 </p>
 
-<p class="aside">
-  <strong>Tip:</strong> Ensure users get the best possible experience for the
+<p class="note">
+  <strong>Tip:</strong> Ensure that users get the best possible experience for the
   smallest app downloads by creating multiple APKs with just the right content
-  for device screen size, hardware features and more.
+  for hardware features such as screen size. For more information about using multiple APKs,
+  see <a href="https://developer.android.com/training/multiple-apks/index.html">
+  Maintaining Multiple APKs.</a>
 </p>
 
 <h3 id="iap">In-app products and subscriptions</h3>
 
 <p>
-  Manage your in-app products and price them for local markets accordingly.
-  Offer weekly, monthly, annual, or seasonal subscriptions and take advantage
-  of features such as grace periods and trials. <a href=
+  Manage your in-app products and price them for local markets.
+  Offer weekly, monthly, annual, or seasonal subscriptions. Attract new users
+  with features such as grace periods and trials. <a href=
   "https://support.google.com/googleplay/android-developer/topic/3452896?ref_topic=3452890"
-  class="external-link">Learn more.</a>
+  class="external-link">Learn more</a>.
 </p>
 
 <h3 id="pricing">Pricing and distribution</h3>
 
 <p>
-  Control the price of your app for each country you choose to distribute to.
-  Make your app available to new audiences — opt-in to Android Auto, Android
+  Control the price of your app for each country that you distribute to.
+  Make your app available to new audiences&mdash;opt-in to Android Auto, Android
   TV, and Android Wear, as well as Designed for Families, Google Play for Work,
   and Google Play for Education. <a href=
   "https://support.google.com/googleplay/android-developer/answer/113469#pricing"
   class="external-link">Learn more</a>.
 </p>
 
-<p class="external-link">
-  <strong>Tip:</strong> You can set prices in other countries automatically
-  based on current exchange rates using the <strong>auto-convert prices
-  now</strong> feature.
+<p  class="note">
+  <strong>Note:</strong> When you distribute your app to countries that use other currencies,
+  the Google Play Developer Console autofills country-specific prices based on current exchange
+  rates and locally-relevant pricing patterns. You can update the exchange rates manually by
+  selecting <strong>Refresh exchange rates</strong>.
 </p>
 
 <p style="clear:both">
diff --git a/docs/html/distribute/stories/apps/aftenposten.jd b/docs/html/distribute/stories/apps/aftenposten.jd
index f1f388e..a813c00 100644
--- a/docs/html/distribute/stories/apps/aftenposten.jd
+++ b/docs/html/distribute/stories/apps/aftenposten.jd
@@ -2,7 +2,7 @@
 page.metaDescription=Aftenposten upgraded their app and improved user retention.
 page.tags="developerstory", "apps", "googleplay"
 page.image=images/cards/distribute/stories/aftenposten.png
-page.timestamp=1468270114
+page.timestamp=1468901834
 
 @jd:body
 
@@ -74,7 +74,7 @@
 
 <p>
   Find out more about best practices for <a href=
-  "{@docRoot}design/patterns/notifications.html">Notifications</a> and <a href=
+  "https://material.google.com/patterns/notifications.html">Notifications</a> and <a href=
   "{@docRoot}training/building-content-sharing.html">Building Apps with Content
   Sharing</a>.
 </p>
diff --git a/docs/html/distribute/stories/apps/el-mundo.jd b/docs/html/distribute/stories/apps/el-mundo.jd
index 2ee813d..2dbaeea 100644
--- a/docs/html/distribute/stories/apps/el-mundo.jd
+++ b/docs/html/distribute/stories/apps/el-mundo.jd
@@ -2,7 +2,7 @@
 page.metaDescription=El Mundo uses Material Design principles to enhance their app's user experience.
 page.tags="developerstory", "apps", "googleplay"
 page.image=images/cards/distribute/stories/el-mundo.png
-page.timestamp=1468270112
+page.timestamp=1468901833
 
 @jd:body
 
diff --git a/docs/html/distribute/stories/apps/segundamano.jd b/docs/html/distribute/stories/apps/segundamano.jd
index 4cbf817..7ed4d8e 100644
--- a/docs/html/distribute/stories/apps/segundamano.jd
+++ b/docs/html/distribute/stories/apps/segundamano.jd
@@ -2,7 +2,7 @@
 page.metaDescription=Segundamano developed Android app to increase potential for growth.
 page.tags="developerstory", "apps", "googleplay"
 page.image=images/cards/distribute/stories/segundamano.png
-page.timestamp=1468270110
+page.timestamp=1468901832
 
 @jd:body
 
diff --git a/docs/html/distribute/stories/glu-dh.jd b/docs/html/distribute/stories/games/glu-dh.jd
similarity index 100%
rename from docs/html/distribute/stories/glu-dh.jd
rename to docs/html/distribute/stories/games/glu-dh.jd
diff --git a/docs/html/distribute/stories/apps/tapps.jd b/docs/html/distribute/stories/games/tapps.jd
similarity index 98%
rename from docs/html/distribute/stories/apps/tapps.jd
rename to docs/html/distribute/stories/games/tapps.jd
index 1292139..221b9a8 100644
--- a/docs/html/distribute/stories/apps/tapps.jd
+++ b/docs/html/distribute/stories/games/tapps.jd
@@ -1,8 +1,8 @@
 page.title=Tapps Games Increases Installs by More Than 20% with Store Listing Experiments
 page.metaDescription=Tapps Games increased their use of store listing experiments in the Developer Console, with impressive results.
-page.tags="developerstory", "apps", "googleplay"
+page.tags="developerstory", "games", "googleplay"
 page.image=images/cards/distribute/stories/tapps.png
-page.timestamp=1468270108
+page.timestamp=1468901831
 
 @jd:body
 
diff --git a/docs/html/distribute/stories/games/two-dots.jd b/docs/html/distribute/stories/games/two-dots.jd
deleted file mode 100644
index a2299ce..0000000
--- a/docs/html/distribute/stories/games/two-dots.jd
+++ /dev/null
@@ -1,77 +0,0 @@
-page.title=Two Dots increased installs by 7 percent using Store Listing Experiments
-page.metaDescription=Two Dots, the sequel to the popular game Dots, is a free-to-play puzzle game launched by Playdots, Inc. Playdots decided to use Store Listing Experiments to see if adding a call to action in the games’ store listing short descriptions had an impact on installs.
-page.tags="developerstory", "games", "googleplay"
-page.image=images/cards/distribute/stories/two-dots.png
-page.timestamp=1456431511
-
-@jd:body
-
-
-<h3>Background</h3>
-
-<div class="figure" style="width:113px">
-  <img src="{@docRoot}images/distribute/stories/two-dots-icon.png"
-  height="113" />
-</div>
-
-<p>
-  <a class="external-link"
-  href="https://play.google.com/store/apps/details?id=com.weplaydots.twodotsandroid&hl=en">
-  Two Dots</a>, the sequel to the popular game
-  <a class="external-link"
-  href="https://play.google.com/store/apps/details?id=com.nerdyoctopus.gamedots&hl=en">
-  Dots</a>, is a free-to-play puzzle game launched by Playdots, Inc. in May
-  2014. Since launch it has gained over 30 million downloads, seen over five
-  billion games played, and achieved 15 times the revenue of the original Dots
-  game within a year. Dots decided to use
-  <a class="external-link"
-  href="https://support.google.com/googleplay/android-developer/answer/6227309">
-  Store Listing Experiments</a> to see if adding a call to action in the games'
-  store listing short descriptions had an impact on installs.
-
-</p>
-
-<h3>What they did</h3>
-
-<p>
-  Dots used localized store listing experiments in the Google Play Developer
-  Console to test both games’ short descriptions. They compared the games’
-  current descriptions — the control, with no call to action — against variant
-  descriptions, targeting half of their traffic with the variant descriptions.
-</p>
-
-<h3>Results</h3>
-
-<p>
-  The results showed that the addition of a call to action in the short
-  description had a positive impact on installs.
-</p>
-
-
-  <img
-   src="{@docRoot}images/distribute/stories/two-dots-screenshot.png"
-   srcset=
-  "{@docRoot}images/distribute/stories/two-dots-screenshot.png 1x
-  {@docRoot}images/distribute/stories/two-dots-screenshot_2x.png 2x">
-  <p class="img-caption">
-    Beautifully designed achievements badges encourage unlock
-  </p>
-
-
-<p>
-  In Dots, the conversion rate increased by 2 percent with a simple call to
-  action in the variant text. In Two Dots, where a call to action was combined
-  with messaging that the game is the “best puzzle game on Android”, conversion
-  rates increased by 7 percent compared to the control description.
-</p>
-
-<h3>Get started</h3>
-
-<p>
-  Learn how to run
-  <a clas="external-link"
-  href="https://support.google.com/googleplay/android-developer/answer/6227309">
-  Store Listing Experiments</a> and read our best practices for
-  <a href="https://developer.android.com/distribute/users/experiments.html">
-  running successful experiments</a>.
-</p>
diff --git a/docs/html/distribute/stories/apps/upbeat-games.jd b/docs/html/distribute/stories/games/upbeat-games.jd
similarity index 96%
rename from docs/html/distribute/stories/apps/upbeat-games.jd
rename to docs/html/distribute/stories/games/upbeat-games.jd
index 02222d3..16a1d51 100644
--- a/docs/html/distribute/stories/apps/upbeat-games.jd
+++ b/docs/html/distribute/stories/games/upbeat-games.jd
@@ -1,8 +1,8 @@
 page.title=Witch Puzzle Achieves 98% of International Installs on Android
 page.metaDescription=Witch Puzzle localized their app into 12 languages.
-page.tags="developerstory", "apps", "googleplay"
+page.tags="developerstory", "games", "googleplay"
 page.image=images/cards/distribute/stories/witch-puzzle.png
-page.timestamp=1468270106
+page.timestamp=1468901832
 
 @jd:body
 
diff --git a/docs/html/distribute/stories/index.jd b/docs/html/distribute/stories/index.jd
index 8fe1019..1adc5ae 100644
--- a/docs/html/distribute/stories/index.jd
+++ b/docs/html/distribute/stories/index.jd
@@ -19,21 +19,43 @@
 <section class="dac-section dac-small" id="latest-apps"><div class="wrap">
   <h2 class="norule">Latest from apps</h2>
 
+  <h3 class="norule">Videos</h3>
+
   <div class="resource-widget resource-flow-layout col-16"
-      data-query="type:distribute+tag:developerstory+tag:apps, type:youtube+tag:developerstory+tag:apps"
+      data-query="type:youtube+tag:developerstory+tag:apps"
       data-sortOrder="-timestamp"
       data-cardSizes="6x6"
       data-items-per-page="15"
-      data-initial-results="9"></div>
+      data-initial-results="6"></div>
+
+  <h3 class="norule">Articles</h3>
+
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:distribute+tag:developerstory+tag:apps"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="6"></div>
 </div></section>
 
 <section class="dac-section dac-small" id="latest-games"><div class="wrap">
   <h2 class="norule">Latest from games</h2>
 
+  <h3 class="norule">Videos</h3>
+
   <div class="resource-widget resource-flow-layout col-16"
-      data-query="type:distribute+tag:developerstory+tag:games,type:youtube+tag:developerstory+tag:games"
+      data-query="type:youtube+tag:developerstory+tag:games"
       data-sortOrder="-timestamp"
       data-cardSizes="6x6"
       data-items-per-page="15"
-      data-initial-results="9"></div>
+      data-initial-results="6"></div>
+
+  <h3 class="norule">Articles</h3>
+
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:distribute+tag:developerstory+tag:games"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="6"></div>
 </div></section>
diff --git a/docs/html/google/play/billing/billing_overview.jd b/docs/html/google/play/billing/billing_overview.jd
index a05cc8d..7d932b7 100644
--- a/docs/html/google/play/billing/billing_overview.jd
+++ b/docs/html/google/play/billing/billing_overview.jd
@@ -7,19 +7,20 @@
 <div id="qv">
   <h2>Quickview</h2>
   <ul>
-    <li>Use In-app Billing to sell digital goods, including one-time items and
+    <li>Use In-app Billing to sell digital products, including one-time products and
 recurring subscriptions.</li>
-    <li>Supported for any app published on Google Play. You only need a Google
+    <li>In-app Billing is supported for any app published on Google Play. You need only a
+    Google
 Play Developer Console account and a Google payments merchant account.</li>
-    <li>Checkout processing is automatically handled by Google Play, with the
-same look-and-feel as for app purchases.</li>
+    <li>Google Play automatically handles checkout processing with the
+same look and feel as app purchases.</li>
   </ul>
   <h2>In this document</h2>
   <ol>
     <li><a href="#api">In-app Billing API</a></li>
     <li><a href="#products">In-app Products</a>
        <ol>
-       <li><a href="#prodtypes">Product Types</a>
+       <li><a href="#prodtypes">Product types</a>
        </ol>
     </li>
     <li><a href="#console">Google Play Developer Console</a></li>
@@ -27,30 +28,33 @@
     <li><a href="#samples">Sample App</a></li>
     <li><a href="#migration">Migration Considerations</a></li>
   </ol>
-   <h2>Related Samples</h2>
+   <h2>Related samples</h2>
   <ol>
     <li><a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">Sample
       Application (V3)</a></li>
   </ol>
-   <h2>Related Videos</h2>
+   <h2>Related videos</h2>
   <ol>
-    <li><a href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o">Implementing
+    <li><a class="external-link"  href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o">
+    Implementing
       Freemium</a></li>
   </ol>
 </div>
 </div>
 
-<p>This documentation describes the fundamental In-app Billing components and
+<p>This document describes the fundamental In-app Billing components and
 features that you need to understand in order to add In-app
 Billing features into your application.</p>
 
-<p class="note"><b>Note</b>: Ensure that you comply with applicable laws in the countries where you
-distribute apps. For example, in EU countries, laws based on the
-<a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2005:149:0022:0039:EN:PDF">
-Unfair Commercial Practices Directive</a> prohibit direct exhortations to children to buy advertised
-products or to persuade their parents or other adults to buy advertised products for them.
-See the
-<a href="http://ec.europa.eu/consumers/enforcement/docs/common_position_on_online_games_en.pdf">
+<p class="note"><b>Note</b>: Ensure that you comply with applicable laws in the countries where
+ you distribute apps. For example, in EU countries, laws based on the
+<a class="external-link"
+ href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2005:149:0022:0039:EN:PDF">
+Unfair Commercial Practices Directive</a> prohibit direct exhortations to children to buy
+  advertised products or to persuade their parents or other adults to buy advertised products
+  for them. See the
+<a class="external-link"
+ href="http://ec.europa.eu/consumers/enforcement/docs/common_position_on_online_games_en.pdf">
 position of the EU consumer protection authorities</a> for more information on this and other
 topics.
 </p>
@@ -61,75 +65,82 @@
 app then conveys billing requests and responses between your
 application and the Google Play server. In practice, your application never
 directly communicates with the Google Play server. Instead, your application
-sends billing requests to the Google Play application over interprocess
+sends billing requests to the Google Play app over interprocess
 communication (IPC) and receives responses from the Google Play app.
 Your application does not manage any network connections between itself and
 the Google Play server.</p>
-<p>In-app Billing can be implemented only in applications that you publish
+<p>You can implement In-app Billing only in applications that you publish
 through Google Play. To complete in-app purchase requests, the Google Play app
 must be able to access the Google Play server over the network.</p>
 
-<p>In-app billing Version 3 is the latest version, and maintains very broad
+<p>In-app Billing Version 3 is the latest version, and it maintains very broad
 compatibility across the range of Android devices. In-app Billing Version 3 is
-supported on devices running Android 2.2 or higher that have the latest version
-of the Google Play store installed (<a
+supported on devices running Android 2.2 (API level 8) or higher that have the latest version
+of the Google Play app installed (<a
 href="{@docRoot}about/dashboards/index.html">a vast majority</a> of active
 devices).</p>
 
 <h4>Version 3 features</h4>
+<p>In-app Billing Version 3 provides the following features:</p>
 <ul>
-<li>Requests are sent through a streamlined API that allows you to easily request
-product details from Google Play, order in-app products, and quickly restore
-items based on users' product ownership</li>
-<li>Order information is synchronously propagated to the device on purchase
-completion</li>
-<li>All purchases are “managed” (that is, Google Play keeps track of the user's
-ownership of in-app products). The user cannot own multiple copies of an in-app
-item; only one copy can be owned at any point in time</li>
-<li>Purchased items can be consumed. When consumed, the item reverts to the
-"unowned" state and can be purchased again from Google Play</li>
-<li>Provides support for <a
-  href="{@docRoot}google/play/billing/billing_subscriptions.html">subscriptions</a></li>
+<li>Your app sends requests through a streamlined API that allows users to easily request
+product details from Google Play and order in-app products. The API quickly restores
+products based on the user's ownership.</li>
+<li>The API synchronously propagates order information to the device on purchase
+completion.</li>
+<li>All purchases are <em>managed</em> (that is, Google Play keeps track of the user's
+ownership of in-app products). The user can't own multiple copies of an in-app
+product; only one copy can be owned at any point in time.</li>
+<li>Purchased products can be consumed. When consumed, the product reverts to the
+<em>unowned</em> state and can be purchased again from Google Play.</li>
+<li>The API provides support for <a
+  href="{@docRoot}google/play/billing/billing_subscriptions.html">subscriptions</a>.</li>
 </ul>
 <p>For details about other versions of In-app Billing, see the
 <a href="{@docRoot}google/play/billing/versions.html">Version Notes</a>.</p>
 
 <h2 id="products">In-app Products</h2>
-<p>In-app products are the digital goods that you offer for sale from inside your
-application to users. Examples of digital goods includes in-game currency,
+<p>In-app products are the digital products that you offer for sale to users from inside your
+application. Examples of digital products include in-game currency,
 application feature upgrades that enhance the user experience, and new content
 for your application.</p>
 <p>You can use In-app Billing to sell only digital content.
-You cannot use In-app Billing to sell physical goods, personal services, or
-anything that requires physical delivery. Unlike with priced applications, once
-the user has purchased an in-app product there is no refund window.</p>
+You can't use In-app Billing to sell physical products, personal services, or
+anything that requires physical delivery. Unlike with priced applications, there is no refund
+ window after
+the user has purchased an in-app product.</p>
 <p>Google Play does not provide any form of content delivery. You are
 responsible for delivering the digital content that you sell in your
-applications. In-app products are always explicitly associated with one and
-only one app. That is, one application cannot purchase an in-app product
-published for another app, even if they are from the same developer.</p>
+applications. In-app products are always explicitly associated with
+ only one app. That is, one application can't purchase an in-app product
+that is published for another app, even if they are from the same developer.</p>
 
 <h3 id="prodtypes">Product types</h3>
 <p>In-app Billing supports different product types to give you flexibility in
 how you monetize your application. In all cases, you define your products using
 the Google Play Developer Console.</p>
-<p>You can specify these types of products for your In-app Billing application
-— <em>managed in-app products</em> and <em>subscriptions</em>. Google Play
-handles and tracks ownership for in-app products and subscriptions on your
-application on a per user account basis.
-<a href="{@docRoot}google/play/billing/api.html#producttypes">Learn more about
-the product types supported by In-app Billing Version 3</a>.</p>
+<p>You can specify two product types for your In-app Billing application:
+ <em>managed in-app products</em> and <em>subscriptions</em>. Google Play
+handles and tracks ownership for in-app products and subscriptions for your
+application on a per-user basis.
+<a href="{@docRoot}google/play/billing/api.html#producttypes">Learn more</a> about
+the product types supported by In-app Billing Version 3.</p>
 
 <h2 id="console">Google Play Developer Console</h2>
 <p>The Developer Console is where you can publish your
 In-app Billing application and manage the various in-app products that are
 available for purchase from your application.</p>
 <p>You can create a product list of
-digital goods that are associated with your application, including items for
-one-time purchase and recurring subscriptions. For each item, you can define
-information such as the item’s unique product ID (also called its SKU), product
-type, pricing, description, and how Google Play should handle and track
-purchases for that product.</p>
+digital products that are associated with your application, including products for
+one-time purchase and recurring subscriptions. You can define
+information for each product such as the following:</p>
+<ul>
+<li>Unique product ID (also called its SKU).</li>
+<li>Product type.</li>
+<li>Pricing.</li>
+<li>Description.</li>
+<li>Google Play handling and tracking of purchases for that product.</li></p>
+</ul>
 <p>If you sell several of your apps or in-app products at the same price, you
 can add <em>pricing templates</em> to manage these price points from a
 centralized location. When using pricing templates, you can include local taxes
@@ -146,7 +157,7 @@
 In-app Billing</a>.</p>
 
 <h2 id="checkout">Google Play Purchase Flow</h2>
-<p>Google Play uses the same checkout backend service as is used for application
+<p>Google Play uses the same backend checkout service that is used for application
 purchases, so your users experience a consistent and familiar purchase flow.</p>
 <p class="note"><strong>Important:</strong> You must have a Google payments
 merchant account to use the In-app Billing service on Google Play.</p>
@@ -157,8 +168,8 @@
 <p>When the checkout process is complete,
 Google Play sends your application the purchase details, such as the order
 number, the order date and time, and the price paid. At no point does your
-application have to handle any financial transactions; that role is provided by
-Google Play.</p>
+application have to handle any financial transactions; that role belongs to
+ Google Play.</p>
 
 <h2 id="samples">Sample Application</h2>
 <p>To help you integrate In-app Billing into your application, the Android SDK
@@ -166,16 +177,16 @@
 from inside an app.</p>
 
 <p>The <a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">
-TrivialDrive sample for the Version 3 API</a> sample shows how to use the In-app
+TrivialDrive for the Version 3 API</a> sample shows how to use the In-app
 Billing Version 3 API
 to implement in-app product and subscription purchases for a driving game. The
-application demonstrates how to send In-app Billing requests, and handle
+application demonstrates how to send In-app Billing requests and handle
 synchronous responses from Google Play. The application also shows how to record
-item consumption with the API. The Version 3 sample includes convenience classes
+product consumption with the API. The Version 3 sample includes convenience classes
 for processing In-app Billing operations as well as perform automatic signature
 verification.</p>
 
-<p class="caution"><strong>Recommendation</strong>: Make sure to obfuscate the
+<p class="caution"><strong>Recommendation</strong>: Be sure to obfuscate the
 code in your application before you publish it. For more information, see
 <a href="{@docRoot}google/play/billing/billing_best_practices.html">Security
 and Design</a>.</p>
@@ -183,16 +194,17 @@
 <h2 id="migration">Migration Considerations</h2>
 <p>The In-app Billing Version 2 API was discontinued in January 2015.
 If you have an existing In-app Billing implementation that uses API Version 2 or
-earlier, you must migrate to <a href="{@docRoot}google/play/billing/api.html">In-app Billing Version
-3</a>.</p>
+earlier, you must migrate to <a href="{@docRoot}google/play/billing/api.html">
+In-app Billing Version 3</a>.</p>
 
-<p>If you have published apps selling in-app products, note that:</p>
+<p>After migration, managed and unmanaged products are handled as follows:</p>
 <ul>
-<li>Managed items and subscriptions that you have previously defined in the Developer Console will
-work with Version 3 as before.</li>
-<li>Unmanaged items that you have defined for existing applications will be
-treated as managed products if you make a purchase request for these items using
-the Version 3 API. You do not need to create a new product entry in Developer
-Console for these items, and you can use the same product IDs to purchase these
-items.
+<li>Managed products and subscriptions that you have previously defined in the
+ Developer Console
+ work with Version 3 just as before.</li>
+<li>Unmanaged products that you have defined for existing applications are
+ treated as managed products if you make a purchase request for these products using
+the Version 3 API. You don't need to create a new product entry in the Developer
+Console for these products, and you can use the same product IDs to manage these
+products.
 </ul>
diff --git a/docs/html/google/play/billing/billing_promotions.jd b/docs/html/google/play/billing/billing_promotions.jd
index ccf50fc..4fe1abf 100644
--- a/docs/html/google/play/billing/billing_promotions.jd
+++ b/docs/html/google/play/billing/billing_promotions.jd
@@ -1,7 +1,7 @@
 page.title=In-app Promotions
 parent.title=In-app Billing
 parent.link=index.html
-page.metaDescription=Support promo codes in your app, which let you give content or features away to a limited number of users free of charge.
+page.metaDescription=Support promo codes in your app, which lets you give content or features away to a limited number of users free of charge.
 page.image=/images/play_dev.jpg
 page.tags="promotions, billing, promo codes"
 meta.tags="monetization, inappbilling, promotions"
@@ -13,7 +13,7 @@
   <h2>In this document</h2>
   <ol>
     <li><a href="#workflow">Creating and Redeeming Promo Codes</a></li>
-    <li><a href="#supporting">Supporting Promo Codes In Your App</a></li>
+    <li><a href="#supporting">Supporting Promo Codes in Your App</a></li>
     <li><a href="#testing">Testing In-app Promotions</a></li>
   </ol>
   <h2>See also</h2>
@@ -27,26 +27,26 @@
 
 <p>
   Promo codes let you give content or features away to a limited number of
-  users free of charge. Once you create a promo code, you can distribute it
+  users free of charge. After you create a promo code, you can distribute it
   subject to the
   <!--TODO: Link to TOS when/if they're available as a web page --> terms of
-  service. The user enters the promo code in your app or in the Play Store app,
-  and gets the item at no cost. You can use promo codes in many ways to
-  creatively engage with users. For example:
+  service. The user enters the promo code in your app or in the Google Play Store app
+  and receives the item at no cost. You can use promo codes in many ways to
+  creatively engage with users, such as the following:
 </p>
 
 <ul>
   <li>A game could have a special item, such as a character or decoration,
   that's only available to players who attend an event. The developer could
   distribute cards with promo codes at the event, and users would enter their
-  promo code to unlock the item.
+  promo codes to unlock the item.
   </li>
 
-  <li>An app developer might distribute promo codes at local businesses, to
+  <li>An app developer might distribute promo codes at local businesses to
   encourage potential users to try the app.
   </li>
 
-  <li>An app developer might give out "friends and family" codes to its employees to
+  <li>An app developer might give <em>friends and family codes</em> to its employees to
   share with their friends.
   </li>
 </ul>
@@ -54,11 +54,11 @@
 <p>
   Every promo code is associated with a particular <em>product ID</em> (also
   known as a <em>SKU</em>). You can create promo codes for your existing in-app
-  products. You can also keep a SKU off the Play Store, so the only way to get
+  products. You can also keep an SKU off the Play Store, so that the only way to get
   that item is by entering that SKU's promo code. When a user enters the promo
-  code in the Play Store or in their app, the user gets the item, just as if
+  code in the Play Store or in an app, the user gets the item, just as if
   they paid full price for it. If your app already uses <a href=
-  "{@docRoot}google/play/billing/api.html">In-app Billing version 3</a> to
+  "{@docRoot}google/play/billing/api.html">In-app Billing Version 3</a> to
   support in-app purchases, it's easy to add support for promo codes.
 </p>
 
@@ -67,12 +67,12 @@
 <p>
   You create promo codes through the <a href=
   "https://play.google.com/apps/publish/" class="external-link">Google Play
-  Developer Console</a>. Each promo code is associated with a single product item
+  Developer Console</a>. Each promo code is associated with a single product
   registered in the developer console.
 </p>
 
 <p>
-  When a user gets a promo code, they redeem it in one of two ways:
+  A user can redeem a promo code in one of these two ways:
 </p>
 
 <ul>
@@ -85,33 +85,20 @@
 
   <li>The user can redeem the code in the Google Play Store app. Once the user
   enters the code, the Play Store prompts the user to open the app (if they have
-  the latest version installed) or to download or update it. (We do not
-  currently support redeeming promo codes from the Google Play web store.)
+  the latest version installed) or to download or update it. Google doesn't
+  currently support redeeming promo codes from the Google Play web store.
   </li>
 </ul>
 
-<p>
-  If the promo code is for a <a href=
-  "{@docRoot}google/play/billing/api.html#consumetypes">consumable product</a>,
-  the user can apply an additional code for the same product <em>after</em> the first
-  product is consumed. For example, a game might offer promo codes for a bundle
-  of extra lives. Betty has two different promo codes for that bundle. She
-  redeems a single promo code, then launches the game. When the game launches,
-  the her character receives the lives, consuming the item. She can now redeem
-  the second promo code for another bundle of lives. (She cannot redeem the
-  second promo code until after she consumes the item she purchased with the
-  first promo code.)
-</p>
-
-<h2 id="supporting">Supporting Promo Codes In Your App</h2>
+<h2 id="supporting">Supporting Promo Codes in Your App</h2>
 
 <p>
-  To support promotion codes, your app should call the <a href=
+  To support promotion codes, your app must call the <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>
   method whenever the app starts or resumes. This method returns a bundle of all
   current, unconsumed purchases, including purchases the user made by redeeming
-  a promo code. This simplest approach is to call <a href=
+  a promo code. The simplest approach is to call <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>
   in your activity's {@link android.app.Activity#onResume onResume()} method,
@@ -119,21 +106,21 @@
   activity is unpaused. Calling <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>
-  on startup and resume guarantees that your app will find out about all
+  on startup and resume guarantees that your app finds out about all
   purchases and redemptions the user may have made while the app wasn't
   running. Furthermore, if a user makes a purchase while the app is running and
-  your app misses it for any reason, your app will still find out about the
+  your app misses it for any reason, your app still finds out about the
   purchase the next time the activity resumes and calls <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>.
 </p>
 
 <p>
-  In addition, your app should allow users to redeem promo codes inside the app
+  Your app should allow users to redeem promo codes inside the app
   itself. If your app supports the in-app purchase workflow (described in
   <a href=
   "{@docRoot}google/play/billing/billing_integrate.html#billing-requests">Making
-  In-app Billing Requests</a>), your app automatically supports in-app
+  In-app Billing requests</a>), your app automatically supports in-app
   redemption of promo codes. When you launch the in-app purchase UI,
   the user has the option to pay for the purchase with
   a promo code. Your activity's {@link android.app.Activity#onActivityResult
@@ -141,9 +128,9 @@
   purchase was completed. However, your app should still call <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>
-  on startup and resume, just in case the purchase and consumption workflow
-  didn't complete. For example, if the user successfully redeems a promo code,
-  and then your app crashes before the item is consumed, your app still gets
+  on startup and resume, in case the purchase and consumption workflow
+  didn't complete. For example, if the user successfully redeems a promo code
+  and then your app crashes before the item is consumed, your app still receives
   information about the purchase when the app calls <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a> on its next startup.
@@ -160,8 +147,8 @@
 <p>
   To listen for the <code>PURCHASES_UPDATED</code> intent, dynamically create a
   {@link android.content.BroadcastReceiver} object and register it to listen
-  for <code>"com.android.vending.billing.PURCHASES_UPDATED"</code>. Register
-  the receiver by putting code like this in your activity's {@link
+  for <code>com.android.vending.billing.PURCHASES_UPDATED</code>. Register
+  the receiver by inserting code similar to the following in your activity's {@link
   android.app.Activity#onResume onResume()} method:
 </p>
 
@@ -172,36 +159,34 @@
 <p>
   When the user makes a purchase, the system invokes your broadcast receiver's
   {@link android.content.BroadcastReceiver#onReceive onReceive()} method. That
-  method should call <a href=
+  method must call <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>
   to see what purchases the user has made.
 </p>
 
-<p>
-  Your activity's {@link android.app.Activity#onPause onPause()} method should
-  unregister the broadcast receiver, to reduce system overhead when your app
-  isn't running:
+<p>To reduce system overhead when your app
+  isn't running, your activity's {@link android.app.Activity#onPause onPause()} method must
+  unregister the broadcast receiver:
 </p>
 
 <pre>unRegisterReceiver(myPromoReceiver);</pre>
 
 <p class="note">
-  <strong>Note:</strong> You should not register this broadcast receiver in the
+  <strong>Note:</strong> Don't register this broadcast receiver in the
   app manifest. Declaring the receiver in the manifest can cause the system to
   launch the app to handle the intent if the user makes a purchase while the app
-  isn't running. This behavior is not necessary, and may be annoying to the
-  user. Instead, your app should call <a href=
-  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
-  ><code>getPurchases()</code></a>
-  when the user launches it, to find out about any purchases the user made
-  while the app wasn't running.
+  isn't running. This behavior is not necessary and may be annoying to the
+  user.
+  To find out about any purchases the user made while the app wasn't running,
+  call <a href="{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a> when the user launches the app.
 </p>
 
 <h2 id="testing">Testing In-app Promotions</h2>
 
 <p>
-  If your app supports in-app promotions, you should test the following use
+  If your app supports in-app promotions, test the following use
   cases.
 </p>
 
@@ -211,18 +196,18 @@
   If the user redeems a promo code within the app's purchase flow, as described
   in <a href=
   "{@docRoot}google/play/billing/billing_integrate.html#billing-requests">Making
-  In-app Billing Requests</a>, the system invokes your activity's {@link
+  In-app Billing requests</a>, the system invokes your activity's {@link
   android.app.Activity#onActivityResult onActivityResult()} method to handle
   the purchase. Verify that {@link android.app.Activity#onActivityResult
-  onActivityResult()} handles the purchase properly, whether the user uses cash
+  onActivityResult()} handles the purchase properly, whether the user pays with money
   or a promo code.
 </p>
 
-<h3 id="test-playstore">User redeems promo code in the Play Store</h3>
+<h3 id="test-playstore">User redeems promo code in the Google Play Store</h3>
 
 <p>
   If the user redeems a promo code in the Play Store, there are several
-  possible workflows. You should verify each one of these.
+  possible workflows. Verify each one of these workflows.
 </p>
 
 <h4 id="test-app-uninstalled">App is not installed</h4>
@@ -231,16 +216,16 @@
   If the user redeems a promo code for an app that is not installed on the
   device, the Play Store prompts the user to install the app. (If the app is
   installed but not up-to-date, the Play Store prompts the user to update the
-  app.) You should test the following sequence on a device that does not
+  app.) Test the following sequence on a device that doesn't
   have your app installed.
 </p>
 
 <ol>
-  <li>User redeems a promo code for the app in the Play Store. The Play Store
+  <li>The user redeems a promo code for the app in the Play Store. The Play Store
   prompts the user to install your app.
   </li>
 
-  <li>User installs and launches your app. Verify that on startup, the app
+  <li>The user installs and launches your app. Verify that on startup, the app
   calls <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>
@@ -252,16 +237,16 @@
 
 <p>
   If the user redeems a promo code for an app that is installed on the device,
-  the Play Store prompts the user to switch to the app.  You should test the
+  the Play Store prompts the user to switch to the app. Test the
   following sequence on a device that has your app installed but not running:
 </p>
 
 <ol>
-  <li>User redeems a promo code for the app in the Play Store. The Play Store
+  <li>The user redeems a promo code for the app in the Play Store. The Play Store
   prompts the user to switch to your app.
   </li>
 
-  <li>User launches your app. Verify that on startup, the app calls <a href=
+  <li>The user launches your app. Verify that on startup the app calls <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
   ><code>getPurchases()</code></a>
   and correctly detects the purchase the user made with the promo code.
@@ -274,15 +259,15 @@
 <p>
   If the user redeems a promo code for an app that is currently running on the
   device, the Play Store notifies the app via a <code>PURCHASES_UPDATED</code>
-  intent. You should test the following sequence:
+  intent. Test the following sequence:
 </p>
 
 <ol>
-  <li>User launches the app. Verify that the app has properly registered itself to
+  <li>The user launches the app. Verify that the app has properly registered itself to
   receive the <code>PURCHASES_UPDATED</code> intent.
   </li>
 
-  <li>User launches the Play Store app and redeems a promo code for the app. The Play
+  <li>The user launches the Play Store app and redeems a promo code for the app. The Play
   Store fires a <code>PURCHASES_UPDATED</code> intent. Verify that your app's
   {@link android.content.BroadcastReceiver#onReceive
   BroadcastReceiver.onReceive()} callback fires to handle the intent.
@@ -291,11 +276,11 @@
   <li>Your {@link android.content.BroadcastReceiver#onReceive onReceive()}
   method should respond to the intent by calling <a href=
   "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
-  ><code>getPurchases()</code></a>. Verify that it calls this method, and that
+  ><code>getPurchases()</code></a>. Verify that your app calls this method and that
   it correctly detects the purchase the user made with the promo code.
   </li>
 
-  <li>User switches back to your app. Verify that the user has the purchased
+  <li>The user switches back to your app. Verify that the user has the purchased
   item.
   </li>
 </ol>
diff --git a/docs/html/guide/_book.yaml b/docs/html/guide/_book.yaml
index 6d6686b..20ee483 100644
--- a/docs/html/guide/_book.yaml
+++ b/docs/html/guide/_book.yaml
@@ -9,6 +9,33 @@
   - title: System Permissions
     path: /guide/topics/security/permissions.html
 
+- title: Platform Architecture
+  path: /guide/platform/index.html
+  section:
+  - title: Use Java 8 Language Features
+    path: /guide/platform/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: Verifying App Behavior on the Android Runtime (ART)
+    path: /guide/practices/verifying-apps-art.html
+
 - title: App Components
   path: /guide/components/index.html
   section:
@@ -69,6 +96,11 @@
     path: /guide/topics/resources/runtime-changes.html
   - title: Localization
     path: /guide/topics/resources/localization.html
+    section:
+    - title: ICU4J Android Framework APIs
+      path: /guide/topics/resources/icu4j-framework.html
+    - title: Language and Locale
+      path: /guide/topics/resources/multilingual-support.html
   - title: Resource Types
     path: /guide/topics/resources/available-resources.html
     section:
@@ -203,6 +235,8 @@
       path: /guide/topics/search/adding-custom-suggestions.html
     - title: Searchable Configuration
       path: /guide/topics/search/searchable-config.html
+  - title: Multi-Window Support
+    path: /guide/topics/ui/multi-window.html
   - title: Drag and Drop
     path: /guide/topics/ui/drag-drop.html
   - title: Accessibility
@@ -417,5 +451,3 @@
       path: /guide/practices/screen-compat-mode.html
   - title: Supporting Tablets and Handsets
     path: /guide/practices/tablets-and-handsets.html
-  - title: Verifying App Behavior on ART
-    path: /guide/practices/verifying-apps-art.html
diff --git a/docs/html/guide/platform/images/android-stack_2x.png b/docs/html/guide/platform/images/android-stack_2x.png
new file mode 100644
index 0000000..33bb144
--- /dev/null
+++ b/docs/html/guide/platform/images/android-stack_2x.png
Binary files differ
diff --git a/docs/html/guide/platform/index.jd b/docs/html/guide/platform/index.jd
new file mode 100644
index 0000000..9aed461
--- /dev/null
+++ b/docs/html/guide/platform/index.jd
@@ -0,0 +1,217 @@
+page.title=Platform Architecture
+page.keywords=platform,architecture,framework
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      In this document
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#linux-kernel">The Linux Kernel</a>
+      </li>
+
+      <li>
+        <a href="#hal">Hardware Abstraction Layer (HAL)</a>
+      </li>
+
+      <li>
+        <a href="#art">Android Runtime</a>
+      </li>
+
+      <li>
+        <a href="#native-libs">Native C/C++ Libraries</a>
+      </li>
+
+      <li>
+        <a href="#api-framework">Java API Framework</a>
+      </li>
+
+      <li>
+        <a href="#system-apps">System Apps</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Android is an open source, Linux-based software stack created for a wide
+  array of devices and form factors. The following diagram shows the major
+  components of the Android platform.
+</p>
+
+<img src="/guide/platform/images/android-stack_2x.png" alt="" width=
+"519">
+<p class="img-caption">
+  <strong>Figure 1.</strong> The Android software stack.
+</p>
+
+<h2 id="linux-kernel">
+The Linux Kernel
+</h2>
+
+<p>
+  The foundation of the Android platform is the Linux kernel. For example,
+  <a href="#art">the Android Runtime (ART)</a> relies on the Linux kernel for
+  underlying functionalities such as threading and low-level memory management.
+</p>
+
+<p>
+  Using a Linux kernel allows Android to take advantage of <a href=
+  "https://source.android.com/security/overview/kernel-security.html">key
+  security features</a> and allows device manufacturers to develop hardware
+  drivers for a well-known kernel.
+</p>
+
+<h2 id="hal">
+Hardware Abstraction Layer (HAL)
+</h2>
+
+<p>
+  The <a href=
+  "https://source.android.com/devices/index.html#Hardware%20Abstraction%20Layer">
+  hardware abstraction layer (HAL)</a> provides standard interfaces that expose
+  device hardware capabilities to the higher-level <a href=
+  "#api-framework">Java API framework</a>. The HAL consists of multiple library
+  modules, each of which implements an interface for a specific type of hardware
+  component, such as the <a href=
+  "https://source.android.com/devices/camera/index.html">camera</a> or <a href=
+  "https://source.android.com/devices/bluetooth.html">bluetooth</a> module.
+  When a framework API makes a call to access device hardware, the Android
+  system loads the library module for that hardware component.
+</p>
+
+<h2 id="art">
+Android Runtime
+</h2>
+
+<p>
+  For devices running Android version 5.0 (API level 21) or higher, each app
+  runs in its own process and with its own instance of the <a href=
+  "http://source.android.com/devices/tech/dalvik/index.html">Android Runtime
+  (ART)</a>. ART is written to run multiple virtual machines on low-memory
+  devices by executing DEX files, a bytecode format designed specially for
+  Android that's optimized for minimal memory footprint. Build toolchains, such
+  as <a href="https://source.android.com/source/jack.html">Jack</a>, compile
+  Java sources into DEX bytecode, which can run on the Android platform.
+</p>
+
+<p>
+  Some of the major features of ART include the following:
+</p>
+
+<ul>
+  <li>Ahead-of-time (AOT) and just-in-time (JIT) compilation
+  </li>
+
+  <li>Optimized garbage collection (GC)
+  </li>
+
+  <li>Better debugging support, including a dedicated sampling profiler,
+  detailed diagnostic exceptions and crash reporting, and the ability to set
+  watchpoints to monitor specific fields
+  </li>
+</ul>
+
+<p>
+  Prior to Android version 5.0 (API level 21), Dalvik was the Android runtime.
+  If your app runs well on ART, then it should work on Dalvik as well, but
+  <a href="/guide/platform/verifying-apps-art.html">the reverse may not be
+  true</a>.
+</p>
+
+<p>
+  Android also includes a set of core runtime libraries that provide most of
+  the functionality of the Java programming language, including some <a href=
+  "/guide/platform/j8-jack.html">Java 8 language features</a>, that the Java
+  API framework uses.
+</p>
+
+<h2 id="native-libs">
+  Native C/C++ Libraries
+</h2>
+
+<p>
+  Many core Android system components and services, such as ART and HAL, are
+  built from native code that require native libraries written in C and C++.
+  The Android platform provides Java framework APIs to expose the functionality
+  of some of these native libraries to apps. For example, you can access
+  <a href="/guide/topics/graphics/opengl.html">OpenGL ES</a> through the
+  Android framework’s <a href=
+  "/reference/android/opengl/package-summary.html">Java OpenGL API</a> to add
+  support for drawing and manipulating 2D and 3D graphics in your app.
+</p>
+
+<p>
+  If you are developing an app that requires C or C++ code, you can use the
+  <a href="/ndk/index.html">Android NDK</a> to access some of these <a href=
+  "/ndk/guides/stable_apis.html">native platform libraries</a> directly from
+  your native code.
+</p>
+
+<h2 id="api-framework">
+Java API Framework
+</h2>
+
+<p>
+  The entire feature-set of the Android OS is available to you through APIs
+  written in the Java language. These APIs form the building blocks you need to
+  create Android apps by simplifying the reuse of core, modular system
+  components and services, which include the following:
+</p>
+
+<ul>
+  <li>A rich and extensible <a href="/guide/topics/ui/overview.html">View
+  System</a> you can use to build an app’s UI, including lists, grids, text
+  boxes, buttons, and even an embeddable web browser
+  </li>
+
+  <li>A <a href="/guide/topics/resources/overview.html">Resource Manager</a>,
+  providing access to non-code resources such as localized strings, graphics,
+  and layout files
+  </li>
+
+  <li>A <a href="/guide/topics/ui/notifiers/notifications.html">Notification
+  Manager</a> that enables all apps to display custom alerts in the status bar
+  </li>
+
+  <li>An <a href="/guide/components/activities.html">Activity Manager</a> that
+  manages the lifecycle of apps and provides a common <a href=
+  "/guide/components/tasks-and-back-stack.html">navigation back stack</a>
+  </li>
+
+  <li>
+    <a href="/guide/topics/providers/content-providers.html">Content
+    Providers</a> that enable apps to access data from other apps, such as
+    the Contacts app, or to share their own data
+  </li>
+</ul>
+
+<p>
+  Developers have full access to the same <a href=
+  "/reference/packages.html">framework APIs</a> that Android system apps use.
+</p>
+
+<h2 id="system-apps">
+System Apps
+</h2>
+
+<p>
+  Android comes with a set of core apps for email, SMS messaging, calendars,
+  internet browsing, contacts, and more. Apps included with the platform have
+  no special status among the apps the user chooses to install. So a
+  third-party app can become the user's default web browser, SMS messenger, or
+  even the default keyboard (some exceptions apply, such as the system's
+  Settings app).
+</p>
+
+<p>
+  The system apps function both as apps for users and to provide key
+  capabilities that developers can access from their own app. For example, if
+  your app would like to deliver an SMS message, you don't need to build that
+  functionality yourself—you can instead invoke whichever SMS app is already
+  installed to deliver a message to the recipient you specify.
+</p>
\ No newline at end of file
diff --git a/docs/html/preview/j8-jack.jd b/docs/html/guide/platform/j8-jack.jd
similarity index 63%
rename from docs/html/preview/j8-jack.jd
rename to docs/html/guide/platform/j8-jack.jd
index 4ea016d..9b19426 100644
--- a/docs/html/preview/j8-jack.jd
+++ b/docs/html/guide/platform/j8-jack.jd
@@ -1,41 +1,63 @@
-page.title=Java 8 Language Features
+page.title=Use Java 8 Language Features
 page.keywords="android N", "Java 8", "Jack"
 @jd:body
 
 <div id="qv-wrapper">
   <div id="qv">
+    <h2 id="Contents">
+      In this document:
+    </h2>
+
     <ol>
       <li>
-        <a href="#supported-features">Supported Java 8 Language Features and APIs</a>
+        <a href="#supported-features">Supported Java 8 Language Features and
+        APIs</a>
       </li>
+
       <li>
-        <a href="#configuration">Enabling Java 8 Features and the Jack Toolchain</a>
+        <a href="#configuration">Enable Java 8 Features and the Jack
+        Toolchain</a>
+        <ul>
+          <li>
+            <a href="#configure-gradle">Configure Gradle</a>
+          </li>
+
+          <li>
+            <a href="#known-issues">Known issues</a>
+          </li>
+        </ul>
       </li>
     </ol>
   </div>
 </div>
 
-<p>Android N introduces support for Java 8 language features
-  that you can use when developing apps that target Android N.
-  This page describes the new language features supported in the Android N
-  Preview, how to properly set up your project to use them, and any known
-  issues you may encounter.
+<p>
+  Android supports all Java 7 language features and a subset of Java 8 language
+  features that vary by platform version. This page describes the new language
+  features you can use, how to properly configure your project to use them, and
+  any known issues you may encounter.
 </p>
 
-<p>To start using these features, you need to download and set up Android
-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>
-
-
-
 <p class="note">
-  <strong>Note:</strong> Using the new Java 8 language features is not a
-  requirement for developing apps that target the Android N platform. If you
-  don't want to write code with Java 8 language features, you can keep your
-  project's source and target compatibility values set to Java 7, but you still
-  must compile with JDK 8 to build against the Android N platform.
+  <strong>Note:</strong> When developing apps for Android, using Java 8
+  language features is optional. You can keep your project's source and target
+  compatibility values set to Java 7, but you still need to compile using JDK
+  8.
+</p>
+
+<p>
+  Support for Java 8 language features requires a new compiler called <a href=
+  "https://source.android.com/source/jack.html">Jack</a>. Jack is supported
+  only on Android Studio 2.1 and higher. So if you want to use Java 8 language
+  features, you need to use Android Studio 2.1 to build your app.
+</p>
+
+<p>
+  If you already have Android Studio installed, make sure you update to the
+  latest version by clicking <strong>Help &gt; Check for Update</strong> (on
+  Mac, <strong>Android Studio &gt; Check for Updates</strong>). If you don't
+  already have the IDE installed on your workstation, <a href=
+  "{@docRoot}studio/">download Android Studio here</a>.
 </p>
 
 <h2 id="supported-features">
@@ -43,9 +65,9 @@
 </h2>
 
 <p>
-  Android does not currently support all Java 8 language features. However, the
-  following features are now available when developing apps targeting the
-  Android N Preview:
+  Android does not support all Java 8 language features. However, the
+  following features are available when developing apps targeting
+  Android 7.0 (API level 24):
 </p>
 
 <ul>
@@ -94,7 +116,7 @@
 </p>
 
 <p>
-  Additionally, the following Java 8 language feature APIs are now available:
+  Additionally, the following Java 8 language APIs are also available:
 </p>
 
 <ul>
@@ -144,37 +166,36 @@
 </ul>
 
 <h2 id="configuration">
-  Enabling Java 8 Features and the Jack Toolchain
+  Enable Java 8 Features and the Jack Toolchain
 </h2>
 
 <p>
   In order to use the new Java 8 language features, you need to also use the
-  new <a class="external-link" href=
-  "https://source.android.com/source/jack.html">Jack toolchain</a>. This new
-  Android toolchain compiles Java language source into Android-readable dex
-  bytecode, has its own {@code .jack} library format, and provides most toolchain
-  features as part of a single tool: repackaging, shrinking, obfuscation and
-  multidex.
+  <a href="https://source.android.com/source/jack.html">Jack toolchain</a>.
+  This new Android toolchain compiles Java language sources into
+  Android-readable DEX bytecode, has its own {@code .jack} library format, and
+  provides most toolchain features as part of a single tool: repackaging,
+  shrinking, obfuscation and multidex.
 </p>
 
 <p>Here is a comparison of the two toolchains used to build Android DEX files:</p>
 <ul>
   <li>Legacy javac toolchain:<br>
-  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
-  .class} --&gt; {@code .dex})
+  <b>javac</b> ({@code .java} → {@code .class}) → <b>dx</b> ({@code
+  .class} → {@code .dex})
   </li>
 
   <li>New Jack toolchain:<br>
-  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  <b>Jack</b> ({@code .java} → {@code .jack} → {@code .dex})
   </li>
 </ul>
 
-<h3>
-  Configuring Gradle
+<h3 id="configure-gradle">
+  Configure Gradle
 </h3>
 
 <p>
-  To enable the Java 8 language features and Jack for your project, enter the
+  To enable Java 8 language features and Jack for your project, enter the
   following in your module-level {@code build.gradle} file:
 </p>
 
@@ -195,7 +216,7 @@
 </pre>
 
 <h3 id="known-issues">
-  Known Issues
+  Known issues
 </h3>
 
 <p>
@@ -217,5 +238,5 @@
   </li>
 </ul>
 
-<p>If you find other problems while using Jack, <a href=
+<p>If you find other issues while using Jack, <a href=
 "http://tools.android.com/filing-bugs">please file a bug</a>.</p>
\ No newline at end of file
diff --git a/docs/html/guide/practices/verifying-apps-art.jd b/docs/html/guide/practices/verifying-apps-art.jd
index 217c65c..2da7c0e 100644
--- a/docs/html/guide/practices/verifying-apps-art.jd
+++ b/docs/html/guide/practices/verifying-apps-art.jd
@@ -2,60 +2,82 @@
 @jd:body
 
 <div id="qv-wrapper">
-<div id="qv">
-<h2>Quickview</h2>
-  <ul>
-    <li>The new Android runtime (ART) is available on some of the newest Android
-      devices, though all of them currently have Dalvik as the default
-      runtime.</li>
-    <li>App developers should make sure their apps are compatible with ART,
-      especially if you use JNI to run native code or if you use certain tools
-      that produce non-standard code (such as some obfuscators).</li>
-  </ul>
+  <div id="qv">
+    <h2 id="Contents">
+      In this document
+    </h2>
 
-  <h2 id="Contents">In this document</h2>
- <ol>
-    <li><a href="#GC_Migration">Addressing Garbage Collection (GC) Issues</a></li>
-    <li><a href="#JNI_Issues">Preventing JNI Issues</a>
-      <ol>
-        <li><a href="#JNI_and_GC">Checking JNI code for garbage-collection
-          issues</a></li>
-        <li><a href="#Error_Handling">Error handling</a></li>
-        <li><a href="#Object_Model_Changes">Object model changes</a></li>
-      </ol>
-    </li>
-    <li><a href="#Stack_Size">Preventing Stack Size Issues</a></li>
-    <li><a href="#AOT_Fails">Fixing AOT Compilation Issues</a></li>
-    <li><a href="#Reporting_Problems">Reporting Problems</a></li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="http://source.android.com/devices/tech/dalvik/art.html">Introducing ART</a></li>
-    <li><a
-href="http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html">Debugging
-Android JNI with CheckJNI</a></li>
-  </ol>
-</div>
+    <ol>
+      <li>
+        <a href="#GC_Migration">Addressing Garbage Collection (GC) Issues</a>
+      </li>
+
+      <li>
+        <a href="#JNI_Issues">Preventing JNI Issues</a>
+        <ol>
+          <li>
+            <a href="#JNI_and_GC">Checking JNI code for garbage-collection
+            issues</a>
+          </li>
+
+          <li>
+            <a href="#Error_Handling">Error handling</a>
+          </li>
+
+          <li>
+            <a href="#Object_Model_Changes">Object model changes</a>
+          </li>
+        </ol>
+      </li>
+
+      <li>
+        <a href="#Stack_Size">Preventing Stack Size Issues</a>
+      </li>
+
+      <li>
+        <a href="#AOT_Fails">Fixing AOT Compilation Issues</a>
+      </li>
+
+      <li>
+        <a href="#Reporting_Problems">Reporting Problems</a>
+      </li>
+    </ol>
+
+    <h2>
+      See also
+    </h2>
+
+    <ol>
+      <li>
+        <a href=
+        "http://source.android.com/devices/tech/dalvik/art.html">Introducing
+        ART</a>
+      </li>
+
+      <li>
+        <a href=
+        "http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html">
+        Debugging Android JNI with CheckJNI</a>
+      </li>
+    </ol>
+  </div>
 </div>
 
-<p>With Android 4.4, we are beginning to roll out a new Android runtime,
-<strong>ART</strong>. This runtime offers a number of new features that improve
-performance and smoothness of the Android platform and apps. (You can find more
-information about ART's new features in <a
-href="http://source.android.com/devices/tech/dalvik/art.html">Introducing
-ART</a>.)</p>
+<p>
+  The Android runtime (ART) is the default runtime for devices running Android
+  5.0 (API level 21) and higher. This runtime offers a number of features
+  that improve performance and smoothness of the Android platform and apps.
+  You can find more information about ART's new features in <a href=
+  "http://source.android.com/devices/tech/dalvik/art.html">Introducing
+  ART</a>.
+</p>
 
-<p>Currently, ART is available on a number of Android 4.4 devices, such as the
-Nexus 4, Nexus 5, Nexus 7, and Google Play edition devices.
-At this time, all devices still use Dalvik as the default runtime. We encourage
-you to test your apps for ART compatibility and to take advantage of ART's new
-features. However, for the time being, you should also take care to maintain
-compatibility with Dalvik.</p>
-
-<p>This document lets you know about things to watch for when migrating an
-existing app to be compatible with ART. Most apps should just work when
-running with ART. However, some techniques that work on Dalvik do not work on
-ART. This document discusses some of these issues.</p>
+<p>
+  However, some techniques that work on Dalvik do not work on ART. This
+  document lets you know about things to watch for when migrating an existing
+  app to be compatible with ART. Most apps should just work when running with
+  ART.
+</p>
 
 <h2 id="GC_Migration">Addressing Garbage Collection (GC) Issues</h2>
 
@@ -147,7 +169,7 @@
 
 <h3 id="Error_Handling">Error handling</h3>
 
-<p>ART's JNI throws errors in a number of cases where Dalvik didn’t. (Once
+<p>ART's JNI throws errors in a number of cases where Dalvik doesn’t. (Once
 again, you can catch many such cases by testing with CheckJNI.)</p>
 
 <p>For example, if <code>RegisterNatives</code> is called with a method that
diff --git a/docs/html/guide/topics/data/data-storage.jd b/docs/html/guide/topics/data/data-storage.jd
index a745d00..770340b 100644
--- a/docs/html/guide/topics/data/data-storage.jd
+++ b/docs/html/guide/topics/data/data-storage.jd
@@ -252,6 +252,17 @@
 save to the external storage. All applications can read and write files placed on the external
 storage and the user can remove them.</p>
 
+<h3 id="ScopedDirAccess">Using Scoped Directory Access</h3>
+
+On Android 7.0 or later, if you need access to a specific directory on
+external storage, use scoped directory access. Scoped directory access
+simplifies how your application accesses standard external storage directories,
+such as the <code>Pictures</code> directory, and provides a simple
+permissions UI that clearly details what directory the application is
+requesting access to. For more details on scoped directory access, see
+<a href="{@docRoot}training/articles/scoped-directory-access.html">Using
+Scoped Directory Access</a>.
+
 <h3 id="ExternalPermissions">Getting access to external storage</h3>
 
 <p>In order to read or write files on the external storage, your app must acquire the
diff --git a/docs/html/guide/topics/data/index.jd b/docs/html/guide/topics/data/index.jd
index 169fc22..3872825 100644
--- a/docs/html/guide/topics/data/index.jd
+++ b/docs/html/guide/topics/data/index.jd
@@ -11,13 +11,15 @@
   <div class="col-12">
     <h3>Training</h3>
 
-    <a href="http://developer.android.com/training/cloudsync/index.html">
-      <h4>Syncing to the Cloud</h4>
-      <p>This class covers different strategies for cloud enabled applications. It covers syncing
-data with the cloud using your own back-end web application, and backing up data using the cloud so
-that users can restore their data when installing your application on a new device.</p>
+    <a href="{@docRoot}training/backup/index.html">
+      <h4>Backing up App Data to the Cloud</h4>
+      <p>
+        This class covers techniques for backing up data to the cloud so that
+        users can restore their data when recovering from a data loss (such as a
+        factory reset) or installing your application on a new device.
+      </p>
     </a>
 
   </div>
 
-</div>
\ No newline at end of file
+</div>
diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd
index 5ced295..6deb14b 100644
--- a/docs/html/guide/topics/manifest/activity-element.jd
+++ b/docs/html/guide/topics/manifest/activity-element.jd
@@ -35,6 +35,7 @@
           android:<a href="#prmsn">permission</a>="<i>string</i>"
           android:<a href="#proc">process</a>="<i>string</i>"
           android:<a href="#relinquish">relinquishTaskIdentity</a>=["true" | "false"]
+          android:<a href="#resizeableActivity">resizeableActivity</a>=["true" | "false"]
           android:<a href="#screen">screenOrientation</a>=["unspecified" | "behind" |
                                      "landscape" | "portrait" |
                                      "reverseLandscape" | "reversePortrait" |
@@ -43,6 +44,7 @@
                                      "sensor" | "fullSensor" | "nosensor" |
                                      "user" | "fullUser" | "locked"]
           android:<a href="#state">stateNotNeeded</a>=["true" | "false"]
+          android:<a href="#supportsPIP">supportsPictureInPicture</a>=["true" | "false"]
           android:<a href="#aff">taskAffinity</a>="<i>string</i>"
           android:<a href="#theme">theme</a>="<i>resource or theme</i>"
           android:<a href="#uioptions">uiOptions</a>=["none" | "splitActionBarWhenNarrow"]
@@ -794,9 +796,39 @@
 and icons in the <a href="{@docRoot}guide/components/recents.html">overview screen</a>.</p>
 </dd>
 
+<dt id="resizeableActivity"><code>resizeableActivity</code></dt>
+
+<dd>
+<p>
+  Specifies whether the app supports <a href=
+  "{@docRoot}guide/topics/ui/multi-window.html">multi-window display</a>. You
+  can set this attribute in either the <code>&lt;activity&gt;</code> or
+  <a href="application-element.html"><code>&lt;application&gt;</code></a>
+  element.
+</p>
+
+<p>
+  If you set this attribute to true, the user can launch the activity in
+  split-screen and freeform modes. If you set the attribute to false, the
+  activity does not support multi-window mode. If this value is false, and the
+  user attempts to launch the activity in multi-window mode, the activity takes
+  over the full screen.
+</p>
+
+<p>
+  If your app targets API level 24 or higher, but you do not specify a value
+  for this attribute, the attribute's value defaults to true.
+</p>
+
+<p>
+  This attribute was added in API level 24.
+</p>
+</dd>
 
 <dt><a name="screen"></a>{@code android:screenOrientation}</dt>
-<dd>The orientation of the activity's display on the device.
+<dd>The orientation of the activity's display on the device. The system ignores
+  this attribute if the activity is running in <a
+  href="{@docRoot}guide/topics/ui/multi-window.html">multi-window mode</a>.
 
 <p>The value can be any one of the following strings:</p>
 
@@ -921,6 +953,19 @@
 crashes for some reason.
 </p></dd>
 
+<dt id="supportsPIP"><code>supportsPictureInPicture</code></dt>
+
+<dd>
+<p>
+  Specifies whether the activity supports <a href=
+  "{@docRoot}training/tv/playback/picture-in-picture.jd">Picture-in-Picture</a>
+  display. The system ignores this attribute if <a href=
+  "#resizeableActivity"><code>android:resizeableActivity</code></a> is false.
+</p>
+
+<p>This attribute was added in API level 24.</p>
+</dd>
+
 <dt><a name="aff"></a>{@code android:taskAffinity}</dt>
 <dd>The task that the activity has an affinity for.  Activities with
 the same affinity conceptually belong to the same task (to the same
diff --git a/docs/html/guide/topics/manifest/application-element.jd b/docs/html/guide/topics/manifest/application-element.jd
index 56d61f3..f8e251e 100644
--- a/docs/html/guide/topics/manifest/application-element.jd
+++ b/docs/html/guide/topics/manifest/application-element.jd
@@ -26,6 +26,7 @@
              android:<a href="#proc">process</a>="<i>string</i>"
              android:<a href="#restoreany">restoreAnyVersion</a>=["true" | "false"]
              android:<a href="#requiredAccountType">requiredAccountType</a>="<i>string</i>"
+             android:<a href="#resizeableActivity">resizeableActivity</a>=["true" | "false"]
              android:<a href="#restrictedAccountType">restrictedAccountType</a>="<i>string</i>"
              android:<a href="#supportsrtl">supportsRtl</a>=["true" | "false"]
              android:<a href="#aff">taskAffinity</a>="<i>string</i>"
@@ -358,6 +359,34 @@
 </dd>
 
 
+<dt id="resizeableActivity"><code>resizeableActivity</code></dt>
+
+<dd>
+<p>
+  Specifies whether the app supports <a href=
+  "{@docRoot}guide/topics/ui/multi-window.html">multi-window display</a>. You
+  can set this attribute in either the <a href="activity-element">
+  <code>&lt;activity&gt;</code></a> or <code>&lt;application&gt;</code> element.
+</p>
+
+<p>
+  If you set this attribute to true, the user can launch the activity in
+  split-screen and freeform modes. If you set the attribute to false, the
+  activity does not support multi-window mode. If this value is false, and the
+  user attempts to launch the activity in multi-window mode, the activity takes
+  over the full screen.
+</p>
+
+<p>
+  If your app targets API level 24 or higher, but you do not specify a value
+  for this attribute, the attribute's value defaults to true.
+</p>
+
+<p>
+  This attribute was added in API level 24.
+</p>
+</dd>
+
 <dt><a name="restrictedAccountType"></a>{@code android:restrictedAccountType}</dt>
 <dd>Specifies the account type required by this application and indicates that restricted profiles
 are allowed to access such accounts that belong to the owner user. If your app requires an
diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd
index 10841d6..9b32244 100755
--- a/docs/html/guide/topics/manifest/uses-feature-element.jd
+++ b/docs/html/guide/topics/manifest/uses-feature-element.jd
@@ -1230,7 +1230,7 @@
     </p>
 
     <p>
-      When declared as required, this feature indicates that the app is
+      By default, your app requires this feature. This feature indicates that the app is
       compatible with a device only if that device emulates a touchscreen
       ("fake touch" interface) or has an actual touchscreen.
     </p>
@@ -1240,19 +1240,12 @@
       that emulates a subset of a touchscreen's capabilities. For example, a
       mouse or remote control could drive an on-screen cursor. If your app
       requires basic point and click interaction (in other words, it won't work
-      with only a d-pad controller), you should declare this feature. Because
+      with only a d-pad controller), you should declare this feature or simply
+      avoid declaring any {@code android.hardware.touchscreen.*} features. Because
       this is the minimum level of touch interaction, you can also use an app
       that declares this feature on devices that offer more complex touch
       interfaces.
     </p>
-
-    <p class="note">
-      <strong>Note:</strong> Apps require the {@code android.hardware.touchscreen}
-      feature by default. If you want your app to be available to devices that
-      provide a fake touch interface, you must also explicitly declare that a
-      touchscreen is not required as follows:
-    </p>
-    <pre>&lt;uses-feature android:name="android.hardware.touchscreen" <strong>android:required="false"</strong> /&gt;</pre>
   </dd>
 
   <dt>
@@ -1327,21 +1320,9 @@
     </p>
 
     <p>
-      By default, your app requires this feature. As such, your app is not
-      available to devices that provide only an emulated touch interface ("fake
-      touch") by default. If you want to make your app available on devices
-      that provide a fake touch interface (or even on devices that provide only
-      a d-pad controller), you must explicitly declare that a touchscreen is
-      not required by declaring {@code android.hardware.touchscreen} with
-      {@code android:required="false"}. You should add this declaration if your
-      app uses—but does not require—a real touchscreen interface.
-    </p>
-
-    <p>
       If your app in fact requires a touch interface (to perform more advanced
-      touch gestures such as fling), then you don't need to declare any touch
-      interface features because they're required by default. However, it's
-      best if you explicitly declare all features that your app uses.
+      touch gestures such as fling), then you must explicitly declare this feature
+      or any advanced touchscreen features.
     </p>
 
     <p>
diff --git a/docs/html/guide/topics/manifest/uses-sdk-element.jd b/docs/html/guide/topics/manifest/uses-sdk-element.jd
index 94577ed..b8126c0 100755
--- a/docs/html/guide/topics/manifest/uses-sdk-element.jd
+++ b/docs/html/guide/topics/manifest/uses-sdk-element.jd
@@ -223,9 +223,14 @@
 are running each version, see the <a href="{@docRoot}about/dashboards/index.html">Platform
 Versions dashboards page</a>.</p>
 
-<table>
+<table id="api-level-table">
   <tr><th>Platform Version</th><th>API Level</th><th>VERSION_CODE</th><th>Notes</th></tr>
 
+    <tr><td><a href="{@docRoot}about/versions/nougat/android-7.0.html">Android 7.0</a></td>
+    <td><a href="{@docRoot}sdk/api_diff/24/changes.html" title="Diff Report">24</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#N}</td>
+    <td><a href="{@docRoot}about/versions/nougat/index.html">Platform Highlights</a></td></tr>
+
     <tr><td><a href="{@docRoot}about/versions/marshmallow/android-6.0.html">Android 6.0</a></td>
     <td><a href="{@docRoot}sdk/api_diff/23/changes.html" title="Diff Report">23</a></td>
     <td>{@link android.os.Build.VERSION_CODES#M}</td>
diff --git a/docs/html/guide/topics/resources/complex-xml-resources.jd b/docs/html/guide/topics/resources/complex-xml-resources.jd
index 66dcb58..ebf7bc3 100644
--- a/docs/html/guide/topics/resources/complex-xml-resources.jd
+++ b/docs/html/guide/topics/resources/complex-xml-resources.jd
@@ -93,8 +93,7 @@
         &lt;/vector&gt;
     <strong>&lt;aapt:attr /&gt;</strong>
 
-    &lt;target
-        android:name="rotationGroup" /&gt;
+    &lt;target android:name="rotationGroup"&gt;
         <strong>&lt;aapt:attr name="android:animation" &gt;</strong>
             &lt;objectAnimator
                 android:duration="6000"
@@ -102,6 +101,7 @@
                 android:valueFrom="0"
 
               android:valueTo="360" /&gt;
         <strong>&lt;aapt:attr&gt;</strong>
+    &lt;/target&gt;
 &lt;/animated-vector&gt;
 </pre>
 </dd>
diff --git a/docs/html/preview/features/icu4j-framework.jd b/docs/html/guide/topics/resources/icu4j-framework.jd
similarity index 92%
rename from docs/html/preview/features/icu4j-framework.jd
rename to docs/html/guide/topics/resources/icu4j-framework.jd
index 839c077..e7cbe72e 100644
--- a/docs/html/preview/features/icu4j-framework.jd
+++ b/docs/html/guide/topics/resources/icu4j-framework.jd
@@ -30,14 +30,16 @@
 
 <p>
   ICU4J is an open-source, widely used set of Java libraries providing Unicode
-  and globalization support for software applications. Android N
-  exposes a subset of the ICU4J APIs in the Android framework for app developers
+  and globalization support for software applications. Starting in Android 7.0
+  (API level 24), Android
+  exposes a subset of the ICU4J APIs for app developers
   to use under the {@code android.icu} package. These APIs use
   localization data present on the device. As a result, you can reduce your APK
   footprint by not compiling the ICU4J libraries into your APK; instead, you can
   simply call out to them in the framework. (In this case, you may want to provide
   <a href="{@docRoot}google/play/publishing/multiple-apks.html">multiple versions
-  of your APK</a>, so users running versions of Android lower than Android N
+  of your APK</a>, so users running versions of Android lower than
+  Android 7.0 (API level 24)
   can download a version of the app that contains the ICU4J libraries.)
 </p>
 
@@ -51,17 +53,17 @@
 <h2 id="relation">Relationship to ICU4J</h2>
 
 <p>
-  Android N exposes a subset of the ICU4J APIs via the
+  Android exposes a subset of the ICU4J APIs via the
   <code>android.icu</code> package, rather than <code>com.ibm.icu</code>. The
   Android framework may choose not to
-  expose ICU4J APIs for various reasons; for example, Android N does not expose
+  expose ICU4J APIs for various reasons; for example, Android does not expose
   some deprecated APIs or those that the ICU team have not yet declared as
   stable. As the ICU team deprecates APIs in the future, Android will also mark
   them as deprecated but will continue to include them.
 </p>
 
 <p class="table-caption"><strong>Table 1.</strong> ICU and CLDR versions used
-  in Android N.</p>
+  in Android].</p>
 <table>
 <tr>
 <th>Android API level</th>
@@ -69,7 +71,7 @@
 <th>CLDR version</th>
 </tr>
 <tr>
-<td>Android N</td>
+<td>Android 7.0 (API level 24)</td>
 <td>56</td>
 <td>28</td>
 </tr>
diff --git a/docs/html/preview/features/multilingual-support.jd b/docs/html/guide/topics/resources/multilingual-support.jd
similarity index 62%
rename from docs/html/preview/features/multilingual-support.jd
rename to docs/html/guide/topics/resources/multilingual-support.jd
index ff21b52..8d8484b 100644
--- a/docs/html/preview/features/multilingual-support.jd
+++ b/docs/html/guide/topics/resources/multilingual-support.jd
@@ -18,25 +18,21 @@
 </div>
 </div>
 
-<p>Android N provides enhanced support for multilingual users,
-allowing them to select multiple locales in settings. Android N
+<p>Starting in Android 7.0 (API level 24),
+Android provides enhanced support for multilingual users,
+allowing them to select multiple locales in settings. Android
 provides this capability by greatly expanding the number of locales supported
-and changing the way the system resolves resources. The new method of resolving
-resources is more robust and designed to be compatible with existing APKs, but
-you should take extra care to spot any unexpected behavior. For example, you
-should test to make sure that your app defaults to the expected language. Also,
-if your app supports multiple languages, you should ensure that this support works as
-intended. Finally, you should try to ensure that your app gracefully handles
-languages that you didn't explicitly design it to support.</p>
+and changing the way the system resolves resources.</p>
 
-<p>This document starts by explaining the resource resolution strategy prior to
-Android N. Next, it describes Android N's improved
-resource-resolution strategy. Last, it explains how to take advantage of
+<p>This document starts by explaining the resource resolution strategy in
+versions of Android lower than 7.0 (API level 24). Next, it describes
+the improved resource-resolution strategy in Android 7.0.
+Last, it explains how to take advantage of
 the expanded number of locales to support more multilingual users.</p>
 
 <h2 id="preN">Challenges in Resolving Language Resources</h2>
 
-<p>Prior to Android N, Android could not always successfully
+<p>Prior to Android 7.0, Android could not always successfully
  match app and system locales.</p>
 
  <p>For example, assume that you have the following situation:</p>
@@ -88,15 +84,17 @@
 
 <p>In this example, the system displays English strings without
 knowing whether the user can understand English. This behavior is pretty common
-today. Android N should substantially reduce the frequency
-of outcomes like this one.</p>
+today.</p>
 
 <h2 id="postN">Improvements to Resource-Resolution Strategy</h2>
-<p>Android N brings more robust resource resolution, and
-finds better fallbacks automatically. However, to speed up resolution and improve
+<p>Android 7.0 (API level 24) brings more robust resource resolution, and
+ finds better fallbacks automatically. However, to speed up resolution and
+ improve
  maintainability, you should store resources in the most common parent dialect.
- For example, if you were storing Spanish resources in the {@code es-US} directory
- before, move them into the {@code es-419} directory, which contains Latin American Spanish.
+ For example, if you were storing Spanish resources in the {@code es-US}
+ directory
+ before, move them into the {@code es-419} directory, which contains Latin
+ American Spanish.
  Similarly, if you have resource strings in a folder named {@code en-GB}, rename
  the folder to {@code en-001} (international English), because the most common
  parent for <code>en-GB</code> strings is {@code en-001}.
@@ -105,8 +103,8 @@
 
 <h3>Resource resolution examples</h3>
 
-<p>With Android N, the case described in <strong>Table 1</strong> is resolved
-differently:</p>
+<p>With versions of Android greater than 7.0, the case described in
+	<strong>Table 1</strong> is resolved differently:</p>
 
 <p class="table-caption" id="t-improved-res">
 <strong>Table 2.</strong> An improved resolution strategy for when there is no
@@ -142,7 +140,8 @@
 
 <p>Now the user gets French resources instead of English. This example also shows
  why you should store French strings in {@code fr} rather than {@code fr_FR}
- for Android N. Here the course of action is to match the closest parent dialect,
+ for Android 7.0 or higher. Here the course of action is
+ to match the closest parent dialect,
  making resolution faster and more predictable.</p>
 
 <p>In addition to this improved resolution logic, Android now offers more
@@ -184,38 +183,48 @@
 </tr>
 
 </table>
-<p>The user still gets a language they understand, even though the app doesn’t
-support French.</p>
+<p>
+  The user still gets a language they understand, even though the app doesn’t
+  support French.
+</p>
 
 
 <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()}
-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
+<p>
+  Starting with Android 7.0 (API level 24), Android exposes the
+  {@code LocaleList.getDefault()} API
+  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
   can show results in multiple languages based on user’s settings.  Browser apps
   can avoid offering to translate pages in a language the user already knows,
-  and keyboard apps can auto-enable all appropriate layouts. </p>
+  and keyboard apps can auto-enable all appropriate layouts.
+</p>
 
 <h3>Formatters</h3>
 
-<p>Up through Android 6.0 (API level 23), Android supported only one or two locales
- for many common languages
-(en, es, ar, fr, ru). Because there were only a few variants of each language,
-apps could get away with storing some numbers and dates as hard coded strings
-in resource files.  However, with Android's broadened set of supported locales,
-there can be
-significant differences in formats for dates, times, currencies, and similar
-information even within a single locale. Hard-coding your formats can produce a
-confusing experience for end users.  Therefore, when developing for Android N
-make sure to use formatters instead of hard coding numbers and date strings.</p>
+<p>
+  Up through Android 6.0 (API level 23), Android supported only one or
+  two locales
+  for many common languages
+  (en, es, ar, fr, ru). Because there were only a few variants of each language,
+  apps could get away with storing some numbers and dates as hard coded strings
+  in resource files.  However, with Android's broadened set of supported
+  locales, there can be
+  significant differences in formats for dates, times, currencies, and similar
+  information even within a single locale. Hard-coding your formats can produce
+  a confusing experience for end users.
+  Therefore, when developing for Android 7.0 or higher versions,
+  make sure to use formatters instead of hard coding numbers and date strings.</p>
 
-<p>A prime example is Arabic, whose support Android N expands from
-one {@code ar_EG} to 27 Arabic locales. These locales can share most resources,
-but some prefer ASCII digits, while others prefer native digits. For example,
-when you want to create a sentence with a digit variable, such as
-"Choose a 4 digit pin", use formatters as shown below:</p>
+<p>
+  For example, Android 7.0 and higher includes support for
+  27 Arabic locales. These locales can share most resources,
+  but some prefer ASCII digits, while others prefer native digits. For example,
+  when you want to create a sentence with a digit variable, such as
+  "Choose a 4 digit pin", use formatters as shown below:
+</p>
 
 <pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html/guide/topics/resources/runtime-changes.jd b/docs/html/guide/topics/resources/runtime-changes.jd
index 2e6f9b7..3444e16 100644
--- a/docs/html/guide/topics/resources/runtime-changes.jd
+++ b/docs/html/guide/topics/resources/runtime-changes.jd
@@ -17,6 +17,8 @@
     <li><a href="accessing-resources.html">Accessing Resources</a></li>
     <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">Faster
         Screen Orientation Change</a></li>
+    <li><a href="{@docRoot}guide/topics/ui/multi-window.html#lifecycle">
+      Multi-Window Lifecycle</a></li>
   </ol>
 </div>
 </div>
diff --git a/docs/html/preview/features/multi-window.jd b/docs/html/guide/topics/ui/multi-window.jd
similarity index 77%
rename from docs/html/preview/features/multi-window.jd
rename to docs/html/guide/topics/ui/multi-window.jd
index ca5bd0d..704391f 100644
--- a/docs/html/preview/features/multi-window.jd
+++ b/docs/html/guide/topics/ui/multi-window.jd
@@ -17,6 +17,8 @@
       </ol>
     <h2>See Also</h2>
       <ol>
+        <li><a href="{@docRoot}training/tv/playback/picture-in-picture.html">Adding
+          Picture-in-Picture</a></li>
         <li><a class="external-link"
           href="https://github.com/googlesamples/android-MultiWindowPlayground">Multi-Window
           Playground sample app</a></li>
@@ -28,7 +30,7 @@
 </div>
 
 <p>
-  Android N adds support for displaying more than one app at the
+  Android 7.0 adds support for displaying more than one app at the
   same time. On handheld devices, two apps can run side-by-side or
   one-above-the-other in <em>split-screen</em> mode. On TV devices, apps can
   use <em>picture-in-picture</em> mode to continue video playback while users
@@ -36,7 +38,7 @@
 </p>
 
 <p>
-  If you build your app with the N Preview SDK, you can configure how your app
+  If your app targets Android 7.0 (API level 24) or higher, you can configure how your app
   handles multi-window display. For example, you can specify your activity's
   minimum allowable dimensions. You can also disable multi-window display for
   your app, ensuring that the system only shows your app in full-screen
@@ -46,20 +48,20 @@
 <h2 id="overview">Overview</h2>
 
 <p>
-  Android N allows several apps to share the screen at once. For
+  Android 7.0 allows several apps to share the screen at once. For
   example, a user could split the screen, viewing a web page on the left side
   while composing an email on the right side. The user experience depends on
   the device:
 </p>
 
 <ul>
-  <li>Handheld devices running Android N offer split-screen
+  <li>Handheld devices running Android 7.0 offer split-screen
   mode. In this mode, the system fills the screen with two apps, showing them
   either side-by-side or one-above-the-other. The user can drag the dividing
   line separating the two to make one app larger and the other smaller.
   </li>
 
-  <li>On Nexus Player running Android N, apps can put themselves
+  <li>On TV devices, apps can put themselves
   in <a href="picture-in-picture.html">picture-in-picture mode</a>, allowing
   them to continue showing content while the user browses or interacts with
   other apps.
@@ -72,9 +74,9 @@
   </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,"
+<img src="{@docRoot}images/android-7.0/mw-splitscreen.png" alt="" width="650"
+    srcset="{@docRoot}images/android-7.0/mw-splitscreen.png 1x,
+    {@docRoot}images/android-7.0/mw-splitscreen_2x.png 2x,"
     id="img-split-screen" />
 <p class="img-caption">
   <strong>Figure 1.</strong> Two apps running side-by-side in split-screen mode.
@@ -100,9 +102,7 @@
 <p>
   Users can <a href="{@docRoot}guide/topics/ui/drag-drop.html">drag and
   drop</a> data from one activity to another while the activities are sharing
-  the screen. (Previously, users could only drag and drop data within a single
-  activity.)
-</p>
+  the screen.
 
 <h2 id="lifecycle">Multi-Window Lifecycle</h2>
 
@@ -163,7 +163,7 @@
 <h2 id="configuring">Configuring Your App for Multi-Window Mode</h2>
 
 <p>
-  If your app targets Android N, you can configure how and
+  If your app targets API level 24 or higher, you can configure how and
   whether your app's activities support multi-window display. You can set
   attributes in your manifest to control both size and layout.
   A root activity's attribute settings apply to all activities
@@ -173,8 +173,8 @@
 </p>
 
 <p class="note">
-  <strong>Note:</strong> If you build a multi-orientation app with a version of the
-  SDK lower than Android N, and the user uses the app in
+  <strong>Note:</strong> If you build a multi-orientation app that targets API
+  level 23 or lower, and the user uses the app in
   multi-window mode, the system forcibly resizes the app. The system presents a
   dialog box warning the user that the app may behave unexpectedly. The system
   does <em>not</em> resize fixed-orientation apps; if
@@ -183,10 +183,13 @@
 </p>
 
 <h4 id="resizeableActivity">android:resizeableActivity</h4>
+
 <p>
-  Set this attribute in your manifest's <code>&lt;activity&gt;</code> or
-  <code>&lt;application&gt;</code> node to enable or disable multi-window
-  display:
+  Set this attribute in your manifest's <a href=
+  "{@docRoot}guide/topics/manifest/activity-element"><code>&lt;activity&gt;</code></a>
+  or <a href=
+  "{@docRoot}guide/topics/manifest/application-element"><code>&lt;application&gt;</code></a>
+  element to enable or disable multi-window display:
 </p>
 
 <pre>
@@ -202,16 +205,19 @@
 </p>
 
 <p>
-  If your app targets Android N, but you do not specify a value
+  If your app targets API level 24, but you do not specify a value
   for this attribute, the attribute's value defaults to true.
 </p>
 
 <h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
 
 <p>
-  Set this attribute in your manifest's <code>&lt;activity&gt;</code> node to
-  indicate whether the activity supports picture-in-picture display. This
-  attribute is ignored if <code>android:resizeableActivity</code> is false.
+  Set this attribute in your manifest's <a href=
+  "{@docRoot}guide/topics/manifest/activity-element"><code>&lt;activity&gt;</code></a>
+  node to indicate whether the activity supports <a href=
+  "{@docRoot}training/tv/playback/picture-in-picture.jd">Picture-in-Picture</a>
+  display. This attribute is ignored if <code>android:resizeableActivity</code>
+  is false.
 </p>
 
 <pre>
@@ -221,7 +227,7 @@
 <h3 id="layout">Layout attributes</h3>
 
 <p>
-  With Android N, the <code>&lt;layout&gt;</code> manifest element
+  With Android 7.0, the <code>&lt;layout&gt;</code> manifest element
   supports several attributes that affect how an activity behaves in
   multi-window mode:
 </p>
@@ -283,8 +289,8 @@
 <h2 id="running">Running Your App in Multi-Window Mode</h2>
 
 <p>
-  Android N offers new functionality to support apps that can run
-  in multi-window mode.
+  Beginning with Android 7.0, the system offers functionality to support apps
+  that can run in multi-window mode.
 </p>
 
 <h3 id="disabled-features">Disabled features in multi-window mode</h3>
@@ -309,15 +315,13 @@
 <h3 id="change-notification">Multi-window change notification and querying</h3>
 
 <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>.
+  {@link android.app.Activity} offers the following methods to support
+  multi-window display.
 </p>
 
 <dl>
   <dt>
-    <code>Activity.isInMultiWindowMode()</code>
+    {@link android.app.Activity#isInMultiWindowMode isInMultiWindowMode()}
   </dt>
 
   <dd>
@@ -325,12 +329,14 @@
   </dd>
 
   <dt>
-    <code>Activity.isInPictureInPictureMode()</code>
+    {@link android.app.Activity#isInPictureInPictureMode
+    isInPictureInPictureMode()}
   </dt>
 
   <dd>
-    Call to find out if the activity is in picture-in-picture mode.
-
+    Call to find out if the activity is in <a href=
+    "{@docRoot}training/tv/playback/picture-in-picture.jd">picture-in-picture</a>
+    mode.
     <p class="note">
       <strong>Note:</strong> Picture-in-picture mode is a special case of
       multi-window mode. If <code>myActivity.isInPictureInPictureMode()</code>
@@ -340,7 +346,8 @@
   </dd>
 
   <dt>
-    <code>Activity.onMultiWindowModeChanged()</code>
+    {@link android.app.Activity#onMultiWindowModeChanged
+    onMultiWindowModeChanged()}
   </dt>
 
   <dd>
@@ -351,7 +358,8 @@
   </dd>
 
   <dt>
-    <code>Activity.onPictureInPictureModeChanged()</code>
+    {@link android.app.Activity#onPictureInPictureModeChanged
+    onPictureInPictureModeChanged()}
   </dt>
 
   <dd>
@@ -363,17 +371,21 @@
 </dl>
 
 <p>
-  There are also {@link android.app.Fragment} versions of each of these
-  methods, for example <code>Fragment.isInMultiWindowMode()</code>.
+  The {@link android.app.Fragment} class exposes versions of many of these
+  methods, for example {@link android.app.Fragment#onMultiWindowModeChanged
+  Fragment.onMultiWindowModeChanged()}.
 </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.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.
+  To put an activity in picture-in-picture mode, call {@link
+  android.app.Activity#enterPictureInPictureMode
+  Activity.enterPictureInPictureMode()}. This method has no effect if the
+  device does not support picture-in-picture mode. For more information, see
+  the <a href=
+  "{@docRoot}training/tv/playback/picture-in-picture.jd">Picture-in-Picture</a>
+  documentation.
 </p>
 
 <h3 id="launch">Launch New Activities in Multi-Window Mode</h3>
@@ -381,8 +393,8 @@
 <p>
   When you launch a new activity, you can hint to the system that the new
   activity should be displayed adjacent to the current one, if possible. To do
-  this, use the flag
-  <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>. Passing
+  this, use the intent flag
+  {@link android.content.Intent#FLAG_ACTIVITY_LAUNCH_ADJACENT}. Passing
   this flag requests the following behavior:
 </p>
 
@@ -400,7 +412,8 @@
 <p>
   If a device is in freeform mode and you are launching a new activity, you can
   specify the new activity's dimensions and screen location by calling
-  <code>ActivityOptions.setLaunchBounds()</code>. This method has no effect if
+  {@link android.app.ActivityOptions#setLaunchBounds
+  ActivityOptions.setLaunchBounds()}. This method has no effect if
   the device is not in multi-window mode.
 </p>
 
@@ -416,22 +429,15 @@
 <p>
   Users can <a href="{@docRoot}guide/topics/ui/drag-drop.html">drag and
   drop</a> data from one activity to another while the two activities are
-  sharing the screen. (Previously, users could only drag and drop data within a
-  single activity.) For this reason, you may want to add drag and drop
+  sharing the screen. (Prior to Android 7.0, users could only drag and drop data
+  within a single activity.) For this reason, you may want to add drag and drop
   functionality to your app if your app does not currently support it.
 </p>
 
-<p>
-  The N Preview SDK extends the <a href=
-  "{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
-  package to support cross-app drag and drop. For details on the following
-  classes and methods, see the <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N
-  Preview SDK Reference</a>.
-</p>
 
 <dl>
   <dt>
-    <code>android.view.DropPermissions</code>
+    {@link android.view.DragAndDropPermissions}
   </dt>
 
   <dd>
@@ -440,20 +446,20 @@
   </dd>
 
   <dt>
-    <code>View.startDragAndDrop()</code>
+    {@link android.view.View#startDragAndDrop View.startDragAndDrop()}
   </dt>
 
   <dd>
-    New alias for {@link android.view.View#startDrag View.startDrag()}. To
-    enable cross-activity drag and drop, pass the new flag
-    <code>View.DRAG_FLAG_GLOBAL</code>. If you need to give URI permissions to
-    the recipient activity, pass the new flags
-    <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> or
-    <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>, as appropriate.
+    Alias for {@link android.view.View#startDrag View.startDrag()}. To enable
+    cross-activity drag and drop, pass the flag {@link
+    android.view.View#DRAG_FLAG_GLOBAL}. If you need to give URI permissions to
+    the recipient activity, pass the flags {@link
+    android.view.View#DRAG_FLAG_GLOBAL_URI_READ} or {@link
+    android.view.View#DRAG_FLAG_GLOBAL_URI_WRITE}, as appropriate.
   </dd>
 
   <dt>
-    <code>View.cancelDragAndDrop()</code>
+    {@link android.view.View#cancelDragAndDrop View.cancelDragAndDrop()}
   </dt>
 
   <dd>
@@ -462,7 +468,7 @@
   </dd>
 
   <dt>
-    <code>View.updateDragShadow()</code>
+    {@link android.view.View#updateDragShadow View.updateDragShadow()}
   </dt>
 
   <dd>
@@ -471,7 +477,8 @@
   </dd>
 
   <dt>
-    <code>Activity.requestDragAndDropPermissions()</code>
+    {@link android.app.Activity#requestDragAndDropPermissions
+    Activity.requestDragAndDropPermissions()}
   </dt>
 
   <dd>
@@ -483,29 +490,29 @@
 <h2 id="testing">Testing Your App's Multi-Window Support</h2>
 
 <p>
-  Whether or not you update your app for Android N, you should
+  Whether or not your app targets API level 24 or higher, you should
   verify how it behaves in multi-window mode in case a user tries to launch it
-  in multiwindow mode on a device running Android N.
+  in multi-window mode on a device running Android 7.0 or higher.
 </p>
 
 <h3 id="configuring">Configuring a Test Device</h3>
 
 <p>
-  If you install Android N on a device, split-screen mode is
-  automatically supported.
+  If a device runs Android 7.0 or higher, it automatically supports split-screen
+  mode.
 </p>
 
-<h3 id="test-non-n">If your app was not built with the N Preview SDK</h3>
+<h3 id="test-non-n">If your app targets API level 23 or lower</h3>
 
 <p>
-  If you did not build your app with the N Preview SDK and the user attempts to use
-  the app in multi-window mode, the system forcibly resizes the app unless the app
-  declares a fixed orientation.
+  If your app targets API level 23 or lower and the user attempts to use
+  the app in multi-window mode, the system forcibly resizes the app unless the
+  app declares a fixed orientation.
 </p>
 
 <p>
   If your app does not declare a fixed orientation, you should launch your app
-  on a device running Android N and attempt to put the app in
+  on a device running Android 7.0 or higher and attempt to put the app in
   split-screen mode. Verify that the user experience is
   acceptable when the app is forcibly resized.
 </p>
@@ -519,7 +526,7 @@
 <h3 id="test-mw">If you support multi-window mode</h3>
 
 <p>
-  If you built your app with the N Preview SDK and have not disabled
+  If your app targets API level 24 or higher and does not disable
   multi-window support, verify the following behavior under both split-screen
   and freeform modes.
 </p>
@@ -593,7 +600,7 @@
 <p>
   If you disabled multi-window support by setting
   <code>android:resizableActivity="false"</code>, you should launch your app on
-  a device running Android N and attempt to put the app in
+  a device running Android 7.0 or higher and attempt to put the app in
   freeform and split-screen modes. Verify that when you do so, the app remains
   in full-screen mode.
 </p>
diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd
index 6cd63f3..09dd5f4 100644
--- a/docs/html/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html/guide/topics/ui/notifiers/notifications.jd
@@ -21,6 +21,8 @@
     <ol>
       <li><a href="#Updating">Updating notifications</a></li>
       <li><a href="#Removing">Removing notifications</a></li>
+      <li><a href="#direct">Replying to notifications</a></li>
+      <li><a href="#bundle">Bundling notifications</a></li>
     </ol>
   </li>
   <li><a href="#NotificationResponse">Preserving Navigation when Starting an Activity</a>
@@ -37,12 +39,18 @@
   </li>
   <li><a href="#metadata">Notification Metadata</a></li>
   <li><a href="#Heads-up">Heads-up Notifications</a></li>
-  <li><a href="#lockscreenNotification">Lock Screen Notifications</a></li>
+  <li><a href="#lockscreenNotification">Lock Screen Notifications</a>
     <ol>
       <li><a href="#visibility">Setting Visibility</a></li>
       <li><a href="#controllingMedia">Controlling Media Playback on the Lock Screen</a></li>
     </ol>
-  <li><a href="#CustomNotification">Custom Notification Layouts</a></li>
+  </li>
+  <li><a href="#CustomNotification">Customizing Notifications</a>
+    <ol>
+      <li><a href="#custom">Custom Views</a></li>
+      <li><a href="#style">Messaging Style</a></li>
+    </ol>
+  </li>
 </ol>
 
     <h2>Key classes</h2>
@@ -60,7 +68,7 @@
 <h2>See also</h2>
 <ol>
     <li>
-        <a href="{@docRoot}design/patterns/notifications.html">Android Design: Notifications</a>
+        <a href="https://material.google.com/patterns/notifications.html">Material Design: Notifications</a>
     </li>
 </ol>
 </div>
@@ -97,7 +105,7 @@
 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>
+read the <a href="https://material.google.com/patterns/notifications.html">Notifications</a> design guide.</p>
 
 <h2 id="CreateNotification">Creating a Notification</h2>
 
@@ -184,7 +192,7 @@
 </p>
 <p> For information about setting an appropriate priority level, see "Correctly
     set and manage notification priority" in the <a
-    href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design
+    href="https://material.google.com/patterns/notifications.html">Notifications</a> Design
     guide.
 </p>
 <!-- ------------------------------------------------------------------------------------------ -->
@@ -323,7 +331,7 @@
     For example, Gmail notifies the user that new emails have arrived by increasing its count of
     unread messages and by adding a summary of each email to the notification. This is called
     "stacking" the notification; it's described in more detail in the
-    <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design guide.
+    <a href="https://material.google.com/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
@@ -394,6 +402,305 @@
         all of the notifications you previously issued.
     </li>
 </ul>
+
+<!--------------------------------------------------------------- -->
+<h2 id="direct">Replying to notifications</h2>
+
+<p>
+  Starting in Android 7.0 (API level 24),
+  users can respond directly to text messages or update task lists
+  from within the notification
+  dialog. On a handheld, the inline reply action appears as an additional
+  button
+  displayed in the notification. When a user replies via keyboard, the system
+  attaches the text response to the intent
+  you had specified for the notification action and sends the intent to your
+  handheld app.
+</p>
+
+<img id="fig-reply-button" src="{@docRoot}images/android-7.0/inline-reply.png"
+  srcset="{@docRoot}images/android-7.0/inline-reply.png 1x,
+  {@docRoot}images/android-7.0/inline-reply_2x.png 2x"
+  width="400">
+<p class="img-caption">
+  <strong>Figure 1.</strong> The <strong>Reply</strong> action button.
+</p>
+
+<h3>Adding inline reply actions</h3>
+
+<p>To create a notification action that supports direct reply:
+</p>
+
+<ol>
+<li>Create an instance of {@link android.support.v4.app.RemoteInput.Builder}
+  that you can add to your notification
+action. This class's constructor accepts a string that the system uses as the key
+ for the text input. Later, your handheld app uses that key to retrieve the text
+  of the input.
+
+<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>Attach the {@link android.support.v4.app.RemoteInput}
+ object to an action using <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>Apply the action to a notification and issue the notification.
+
+<pre>
+// Build the notification and add the action.
+Notification newMessageNotification =
+        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, newMessageNotification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> The system prompts the user to input a response when they trigger the
+notification action. </p>
+
+<img id="fig-user-input" src="{@docRoot}images/android-7.0/inline-type-reply.png"
+    srcset="{@docRoot}images/android-7.0/inline-type-reply.png 1x,
+    {@docRoot}images/android-7.0/inline-type-reply_2x.png 2x"
+    width="300">
+<p class="img-caption">
+  <strong>Figure 2.</strong> The user inputs text from the notification shade.
+</p>
+
+<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>
+
+<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.
+
+    <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). You can complete
+  this process and retrieve the input text by creating a method, as in the
+  following code snippet:
+
+    <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>
+  </li>
+
+  <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, you can 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>
+
+<p>
+  The notification must be either updated or cancelled after the app has
+  received remote input. When the user replies to a remote update
+  using Direct Reply,
+  do not cancel the notification. Instead, update the notification
+  to display the user's reply.
+  For notifications using {@code MessagingStyle}, you should add
+  the reply as the latest message. When using other templates, you can
+  append the user's reply to the remote-input history.
+</p>
+
+<!-------------------------------------------------------------------------- -->
+
+<h2 id="bundle">Bundling notifications</h2>
+
+<p>
+  Starting in Android 7.0 (API level 24),
+  Android provides developers with a new way to represent
+  a queue of notifications: <i>bundled notifications</i>. This is similar to the
+  <a href="{@docRoot}training/wearables/notifications/stacks.html">Notification
+  Stacks</a> feature in Android Wear. For example, if your app
+  creates notifications
+  for received messages, when more than one message is received, bundle the
+  notifications together as a single group. You can
+  use the {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+  Builder.setGroup()} method to bundle similar notifications.</p>
+
+<p>
+  A notification group imposes a hierarchy on the notifications comprising it.
+  At the top of that hierarchy is a parent notification that displays summary
+  information for the group. The user can progressively
+  expand the notification group, and the system shows more information as the
+  user drills deeper. When the user expands the bundle, the system reveals more
+  information for all its child notifications; when the user
+  expands one of those notifications, the system reveals its entire content.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}images/android-7.0/bundles.png"
+  srcset="{@docRoot}images/android-7.0/bundles.png 1x,
+          {@docRoot}images/android-7.0/bundles_2x.png 2x"
+  width="300">
+<p class="img-caption">
+  <strong>Figure 3.</strong> The user can progressively expand the notification
+  group.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> If the same app sends four or more notifications
+  and does not specify a grouping, the
+  system automatically groups them together.
+</p>
+
+<p>To learn how to add notifications to a group, see
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Add
+Each Notification to a Group</a>.</p>
+
+
+<h3 id="best-practices">Best practices for bundled notifications</h3>
+<p>This section provides guidelines about when to use notification groups instead
+of the {@link android.app.Notification.InboxStyle InboxStyle}
+notifications available in Android 6.0 and previous versions.</p>
+
+<h3>When to use bundled notifications</h3>
+
+<p>You should use notification groups only if all of the following conditions are
+true for your use case:</p>
+
+<ul>
+  <li>The child notifications are complete notifications and can be displayed
+   individually without the need for a group summary.</li>
+  <li>There is a benefit to surfacing the child notifications individually. For
+  example:
+  </li>
+  <ul>
+    <li>They are actionable, with actions specific to each child.</li>
+    <li>There is more information to the child that the user wants to read.</li>
+  </ul>
+</ul>
+
+<p>Examples of good use cases for notification groups include: a messaging app
+displaying a list of incoming messages, or an email app displaying a list of
+received emails.</p>
+
+<p>
+Examples of cases where a single notification is preferable
+ include individual messages from a single person, or a list representation of
+ single-line text items. You can use
+({@link android.app.Notification.InboxStyle InboxStyle} or
+{@link android.app.Notification.BigTextStyle BigTextStyle}) to accomplish
+this.
+</p>
+
+<h3 id ="post">Displaying bundled notifications</h3>
+
+<p>
+  The app should always post a group summary, even if the group contains just a
+  single child. The system will suppress the summary and directly display the
+  child notification if it only contains a single notification. This ensures
+  that the system can provide a consistent experience when the user swipes away
+  children of a group.
+</p>
+
+<h3>Peeking notifications</h3>
+
+<p>While the system usually displays child notifications as a group, you can set
+ them to temporarily appear as
+ <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
+ heads-up notifications</a>. This feature is especially useful because it allows
+  immediate access to the most recent child and the actions associated with it.
+</p>
+
+
+<h3>Backwards compatibility</h3>
+
+<p>
+  Both notification groups and remote input have been a part of the {@link
+  android.app.Notification} API since Android 5.0 (API level 21) to support
+  Android Wear devices. If you've already built notifications with these APIs,
+  the only action you must take is to verify that the app behavior corresponds
+  to the guidelines described above, and to consider implementing {@code
+  setRemoteInputHistory()}.
+</p>
+
+<p>
+  In order to support backward compatibility, the same APIs are available with
+  the support library's {@link android.support.v4.app.NotificationCompat}
+  class, allowing you to build notifications that works on versions of Android
+  less than 5.0 (API level 21).
+  On handhelds and tablets, users only see the summary notification,
+  so an app should still have an inbox style or an equivalent notification
+  representative for the whole information content of the group. As Android
+  Wear devices allow users to see all child notifications even on older
+  platform levels, you should build child notifications regardless of API
+  level.
+</p>
+
 <!-- ------------------------------------------------------------------------------------------ -->
 <!-- ------------------------------------------------------------------------------------------ -->
 <h2 id="NotificationResponse">Preserving Navigation when Starting an Activity</h2>
@@ -886,35 +1193,38 @@
 
 <h3 id="controllingMedia">Controlling Media Playback on the Lock Screen</h3>
 
-<p>In Android 5.0 (API level 21) the lock screen no longer displays media controls
-based on the {@link android.media.RemoteControlClient}, which is now deprecated. Instead, use the
-{@link android.app.Notification.MediaStyle} template with the
-{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
-method, which converts actions into clickable icons.</p>
+<p>
+  In Android 5.0 (API level 21) the lock screen no longer displays media
+  controls based on the {@link android.media.RemoteControlClient}, which is
+  now deprecated. Instead, use the {@link
+  android.support.v7.app.NotificationCompat.MediaStyle} template with the
+  {@link
+  android.support.v4.app.NotificationCompat.Builder#addAction(android.support.v4.app.NotificationCompat.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()}
-method are not included in the support library, so these features run in Android 5.0 and higher
-only.</p>
-
-<p>To display media playback controls on the lock screen in Android 5.0, set the visibility
-to {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}, as described above. Then add
-the actions and set the {@link android.app.Notification.MediaStyle} template, as described in the
-following sample code:</p>
+<p>
+  To display media playback controls on the lock screen in Android 5.0, set
+  the visibility to {@link
+  android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}, as described
+  above. Then add the actions and set the {@link
+  android.support.v7.app.NotificationCompat.MediaStyle} template, as described
+  in the following sample code:
+</p>
 
 <pre>
-Notification notification = new Notification.Builder(context)
+Notification notification = new NotificationCompat.Builder(context)
     // Show controls on lock screen even when user hides sensitive content.
-    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
     .setSmallIcon(R.drawable.ic_stat_player)
     // Add media control buttons that invoke intents in your media service
     .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
     .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
     .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
     // Apply the media style template
-    .setStyle(new Notification.MediaStyle()
-    .setShowActionsInCompactView(1 /* #1: pause button */)
-    .setMediaSession(mMediaSession.getSessionToken())
+    .setStyle(new NotificationCompat.MediaStyle()
+        .setShowActionsInCompactView(1 /* #1: pause button */)
+        .setMediaSession(mMediaSession.getSessionToken()))
     .setContentTitle("Wonderful music")
     .setContentText("My Awesome Band")
     .setLargeIcon(albumArtBitmap)
@@ -984,3 +1294,69 @@
     standard notification layout text. If you use the same style in applications that target Android
     2.3 or higher, you'll ensure that your text is visible against the display background.
 </p>
+
+<!-- ------------------------------------------------------------------------ -->
+<h3 id="custom"> Custom Views</h3>
+<p>
+  Starting from Android 7.0 (API level 24),
+  you can customize notification views and
+  still obtain system decorations like notification headers, actions, and
+  expandable layouts.
+</p>
+
+<p>To enable this capability, Android provides the following APIs to style your
+  custom view:</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> Styles notifications other than media
+notifications.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> Styles media notifications.</dd>
+</dl>
+
+<p>To use this API, call the {@code setStyle()} method, passing to it
+the desired custom view style.</p>
+
+<p>This snippet shows how to construct a custom notification object with the
+{@code DecoratedCustomViewStyle()} method.</p>
+
+<pre>
+Notification notification = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
+
+<!-- ----------------------------------------------------------------------- -->
+
+<h3 id="style">Messaging Style</h3>
+<p>
+  Starting in Android 7.0 (API level 24),
+  Android provides an API for customizing the style of a notification.
+  Using the <code>MessagingStyle</code> class, you can change several of the
+  labels displayed on the notification, including the conversation title,
+  additional messages, and the content view for the notification.
+</p>
+
+<p>
+  The following code snippet demonstrates how to customize a notification's
+  style using the <code>MessagingStyle</code> class.
+</p>
+
+<pre>
+  Notification notification = new Notification.Builder()
+             .setStyle(new Notification.MessagingStyle("Me")
+                 .setConversationTitle("Team lunch")
+                 .addMessage("Hi", timestamp1, null) // Pass in null for user.
+                 .addMessage("What's up?", timestamp2, "Coworker")
+                 .addMessage("Not much", timestamp3, null)
+                 .addMessage("How about lunch?", timestamp4, "Coworker"))
+             .build();
+</pre>
+
diff --git a/docs/html/preview/images/bundles.png b/docs/html/images/android-7.0/bundles.png
similarity index 100%
rename from docs/html/preview/images/bundles.png
rename to docs/html/images/android-7.0/bundles.png
Binary files differ
diff --git a/docs/html/preview/images/bundles_2x.png b/docs/html/images/android-7.0/bundles_2x.png
similarity index 100%
rename from docs/html/preview/images/bundles_2x.png
rename to docs/html/images/android-7.0/bundles_2x.png
Binary files differ
diff --git a/docs/html/preview/images/datasaver.png b/docs/html/images/android-7.0/datasaver.png
similarity index 100%
rename from docs/html/preview/images/datasaver.png
rename to docs/html/images/android-7.0/datasaver.png
Binary files differ
diff --git a/docs/html/preview/images/doze-diagram-1.png b/docs/html/images/android-7.0/doze-diagram-1.png
similarity index 100%
rename from docs/html/preview/images/doze-diagram-1.png
rename to docs/html/images/android-7.0/doze-diagram-1.png
Binary files differ
diff --git a/docs/html/preview/images/doze-diagram-2.png b/docs/html/images/android-7.0/doze-diagram-2.png
similarity index 100%
rename from docs/html/preview/images/doze-diagram-2.png
rename to docs/html/images/android-7.0/doze-diagram-2.png
Binary files differ
diff --git a/docs/html/preview/images/inline-reply.png b/docs/html/images/android-7.0/inline-reply.png
similarity index 100%
rename from docs/html/preview/images/inline-reply.png
rename to docs/html/images/android-7.0/inline-reply.png
Binary files differ
diff --git a/docs/html/preview/images/inline-reply_2x.png b/docs/html/images/android-7.0/inline-reply_2x.png
similarity index 100%
rename from docs/html/preview/images/inline-reply_2x.png
rename to docs/html/images/android-7.0/inline-reply_2x.png
Binary files differ
diff --git a/docs/html/preview/images/inline-type-reply.png b/docs/html/images/android-7.0/inline-type-reply.png
similarity index 100%
rename from docs/html/preview/images/inline-type-reply.png
rename to docs/html/images/android-7.0/inline-type-reply.png
Binary files differ
diff --git a/docs/html/preview/images/inline-type-reply_2x.png b/docs/html/images/android-7.0/inline-type-reply_2x.png
similarity index 100%
rename from docs/html/preview/images/inline-type-reply_2x.png
rename to docs/html/images/android-7.0/inline-type-reply_2x.png
Binary files differ
diff --git a/docs/html/preview/images/m-preview-timeline-crop.png b/docs/html/images/android-7.0/m-preview-timeline-crop.png
similarity index 100%
rename from docs/html/preview/images/m-preview-timeline-crop.png
rename to docs/html/images/android-7.0/m-preview-timeline-crop.png
Binary files differ
diff --git a/docs/html/preview/images/m-preview-timeline.png b/docs/html/images/android-7.0/m-preview-timeline.png
similarity index 100%
rename from docs/html/preview/images/m-preview-timeline.png
rename to docs/html/images/android-7.0/m-preview-timeline.png
Binary files differ
diff --git a/docs/html/preview/images/mw-portrait.png b/docs/html/images/android-7.0/mw-portrait.png
similarity index 100%
rename from docs/html/preview/images/mw-portrait.png
rename to docs/html/images/android-7.0/mw-portrait.png
Binary files differ
diff --git a/docs/html/preview/images/mw-splitscreen.png b/docs/html/images/android-7.0/mw-splitscreen.png
similarity index 100%
rename from docs/html/preview/images/mw-splitscreen.png
rename to docs/html/images/android-7.0/mw-splitscreen.png
Binary files differ
diff --git a/docs/html/preview/images/mw-splitscreen_2x.png b/docs/html/images/android-7.0/mw-splitscreen_2x.png
similarity index 100%
rename from docs/html/preview/images/mw-splitscreen_2x.png
rename to docs/html/images/android-7.0/mw-splitscreen_2x.png
Binary files differ
diff --git a/docs/html/preview/images/n-preview-setup.png b/docs/html/images/android-7.0/n-preview-setup.png
similarity index 100%
rename from docs/html/preview/images/n-preview-setup.png
rename to docs/html/images/android-7.0/n-preview-setup.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-1.png b/docs/html/images/android-7.0/notifications-1.png
similarity index 100%
rename from docs/html/preview/images/notifications-1.png
rename to docs/html/images/android-7.0/notifications-1.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-2.png b/docs/html/images/android-7.0/notifications-2.png
similarity index 100%
rename from docs/html/preview/images/notifications-2.png
rename to docs/html/images/android-7.0/notifications-2.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-3.png b/docs/html/images/android-7.0/notifications-3.png
similarity index 100%
rename from docs/html/preview/images/notifications-3.png
rename to docs/html/images/android-7.0/notifications-3.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-card.png b/docs/html/images/android-7.0/notifications-card.png
similarity index 100%
rename from docs/html/preview/images/notifications-card.png
rename to docs/html/images/android-7.0/notifications-card.png
Binary files differ
diff --git a/docs/html/preview/images/pip-active.png b/docs/html/images/android-7.0/pip-active.png
similarity index 100%
rename from docs/html/preview/images/pip-active.png
rename to docs/html/images/android-7.0/pip-active.png
Binary files differ
diff --git a/docs/html/preview/images/pip-button.png b/docs/html/images/android-7.0/pip-button.png
similarity index 100%
rename from docs/html/preview/images/pip-button.png
rename to docs/html/images/android-7.0/pip-button.png
Binary files differ
diff --git a/docs/html/preview/images/quicksettings.png b/docs/html/images/android-7.0/quicksettings.png
similarity index 100%
rename from docs/html/preview/images/quicksettings.png
rename to docs/html/images/android-7.0/quicksettings.png
Binary files differ
diff --git a/docs/html/preview/images/sample-activenotifications.png b/docs/html/images/android-7.0/sample-activenotifications.png
similarity index 100%
rename from docs/html/preview/images/sample-activenotifications.png
rename to docs/html/images/android-7.0/sample-activenotifications.png
Binary files differ
diff --git a/docs/html/preview/images/sample-directboot.png b/docs/html/images/android-7.0/sample-directboot.png
similarity index 100%
rename from docs/html/preview/images/sample-directboot.png
rename to docs/html/images/android-7.0/sample-directboot.png
Binary files differ
diff --git a/docs/html/preview/images/sample-messagingservice.png b/docs/html/images/android-7.0/sample-messagingservice.png
similarity index 100%
rename from docs/html/preview/images/sample-messagingservice.png
rename to docs/html/images/android-7.0/sample-messagingservice.png
Binary files differ
diff --git a/docs/html/preview/images/sample-multiwindow.png b/docs/html/images/android-7.0/sample-multiwindow.png
similarity index 100%
rename from docs/html/preview/images/sample-multiwindow.png
rename to docs/html/images/android-7.0/sample-multiwindow.png
Binary files differ
diff --git a/docs/html/preview/images/sample-scopeddirectoryaccess.png b/docs/html/images/android-7.0/sample-scopeddirectoryaccess.png
similarity index 100%
rename from docs/html/preview/images/sample-scopeddirectoryaccess.png
rename to docs/html/images/android-7.0/sample-scopeddirectoryaccess.png
Binary files differ
diff --git a/docs/html/images/android-7.0/scoped-directory-access-dont-ask.png b/docs/html/images/android-7.0/scoped-directory-access-dont-ask.png
new file mode 100644
index 0000000..6682948
--- /dev/null
+++ b/docs/html/images/android-7.0/scoped-directory-access-dont-ask.png
Binary files differ
diff --git a/docs/html/images/android-7.0/scoped-directory-access-dont-ask_2x.png b/docs/html/images/android-7.0/scoped-directory-access-dont-ask_2x.png
new file mode 100644
index 0000000..be717f9
--- /dev/null
+++ b/docs/html/images/android-7.0/scoped-directory-access-dont-ask_2x.png
Binary files differ
diff --git a/docs/html/images/android-7.0/scoped-directory-access-framed.png b/docs/html/images/android-7.0/scoped-directory-access-framed.png
new file mode 100644
index 0000000..e4d619a
--- /dev/null
+++ b/docs/html/images/android-7.0/scoped-directory-access-framed.png
Binary files differ
diff --git a/docs/html/images/android-7.0/scoped-directory-access-framed_2x.png b/docs/html/images/android-7.0/scoped-directory-access-framed_2x.png
new file mode 100644
index 0000000..fe17bce
--- /dev/null
+++ b/docs/html/images/android-7.0/scoped-directory-access-framed_2x.png
Binary files differ
diff --git a/docs/html/preview/images/scoped-folder-access-dont-ask.png b/docs/html/images/android-7.0/scoped-folder-access-dont-ask.png
similarity index 100%
rename from docs/html/preview/images/scoped-folder-access-dont-ask.png
rename to docs/html/images/android-7.0/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/images/android-7.0/scoped-folder-access-dont-ask_2x.png
similarity index 100%
rename from docs/html/preview/images/scoped-folder-access-dont-ask_2x.png
rename to docs/html/images/android-7.0/scoped-folder-access-dont-ask_2x.png
Binary files differ
diff --git a/docs/html/preview/images/scoped-folder-access-framed.png b/docs/html/images/android-7.0/scoped-folder-access-framed.png
similarity index 100%
rename from docs/html/preview/images/scoped-folder-access-framed.png
rename to docs/html/images/android-7.0/scoped-folder-access-framed.png
Binary files differ
diff --git a/docs/html/preview/images/scoped-folder-access-framed_2x.png b/docs/html/images/android-7.0/scoped-folder-access-framed_2x.png
similarity index 100%
rename from docs/html/preview/images/scoped-folder-access-framed_2x.png
rename to docs/html/images/android-7.0/scoped-folder-access-framed_2x.png
Binary files differ
diff --git a/docs/html/preview/images/screen-zoom-1.png b/docs/html/images/android-7.0/screen-zoom-1.png
similarity index 100%
rename from docs/html/preview/images/screen-zoom-1.png
rename to docs/html/images/android-7.0/screen-zoom-1.png
Binary files differ
diff --git a/docs/html/preview/images/screen-zoom-2.png b/docs/html/images/android-7.0/screen-zoom-2.png
similarity index 100%
rename from docs/html/preview/images/screen-zoom-2.png
rename to docs/html/images/android-7.0/screen-zoom-2.png
Binary files differ
diff --git a/docs/html/preview/images/studio-jdk-location.jpg b/docs/html/images/android-7.0/studio-jdk-location.jpg
similarity index 100%
rename from docs/html/preview/images/studio-jdk-location.jpg
rename to docs/html/images/android-7.0/studio-jdk-location.jpg
Binary files differ
diff --git a/docs/html/images/cards/card-notifications_2x.png b/docs/html/images/cards/card-notifications_2x.png
new file mode 100644
index 0000000..e56c1df
--- /dev/null
+++ b/docs/html/images/cards/card-notifications_2x.png
Binary files differ
diff --git a/docs/html/images/tools/sdk-manager-support-libs.png b/docs/html/images/tools/sdk-manager-support-libs.png
index 3796800..cb4cea5 100644
--- a/docs/html/images/tools/sdk-manager-support-libs.png
+++ b/docs/html/images/tools/sdk-manager-support-libs.png
Binary files differ
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index 03efa86..3ceddf2 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -857,8 +857,7 @@
       "design/index.html",
       "design/patterns/navigation.html",
       "design/patterns/actionbar.html",
-      "design/style/iconography.html",
-      "design/patterns/notifications.html"
+      "design/style/iconography.html"
     ]
   },
   "distribute/essentials/corequalityguidelines/functionality": {
@@ -1076,7 +1075,6 @@
   "distribute/getusers/notifications": {
     "title": "",
     "resources": [
-      "design/patterns/notifications.html",
       "distribute/engage/gcm.html",
       "https://play.google.com/about/developer-content-policy.html"
     ]
@@ -1181,8 +1179,7 @@
     "resources": [
       "distribute/essentials/optimizing-your-app.html",
       "distribute/tools/launch-checklist.html",
-      "distribute/googleplay/developer-console.html",
-      "design/patterns/notifications.html"
+      "distribute/googleplay/developer-console.html"
     ]
   },
   "distribute/engage/video/more": {
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
index 5c42277..c79ad88 100644
--- a/docs/html/jd_extras_en.js
+++ b/docs/html/jd_extras_en.js
@@ -2655,6 +2655,19 @@
     "lang": "en",
     "group": "",
     "tags": [],
+    "url": "https://material.google.com/patterns/notifications.html",
+    "timestamp": "1469639720",
+    "image": "images/cards/card-notifications_2x.png",
+    "title": "Notifications",
+    "summary": "Notifications inform your app’s users about relevant and timely events in your app.",
+    "keywords": ["notifications", "design"],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
     "url": "https://www.google.com/design/spec/usability/",
     "timestamp": null,
     "image": "images/cards/material-usability_2x.png",
@@ -2733,7 +2746,6 @@
     "type": "design",
     "category": "material design"
   },
-
   {
     "lang": "en",
     "group": "",
@@ -4672,7 +4684,7 @@
       "design/patterns/navigation.html",
       "design/patterns/actionbar.html",
       "design/style/iconography.html",
-      "design/patterns/notifications.html"
+      "https://material.google.com/patterns/notifications.html"
     ]
   },
   "distribute/essentials/corequalityguidelines/functionality": {
@@ -4869,7 +4881,7 @@
   "distribute/getusers/notifications": {
     "title": "",
     "resources": [
-      "design/patterns/notifications.html",
+      "https://material.google.com/patterns/notifications.html",
       "distribute/engage/gcm.html",
       "https://play.google.com/about/developer-content-policy.html"
     ]
@@ -4985,7 +4997,7 @@
       "distribute/essentials/optimizing-your-app.html",
       "distribute/tools/launch-checklist.html",
       "distribute/googleplay/developer-console.html",
-      "design/patterns/notifications.html"
+      "https://material.google.com/patterns/notifications.html"
     ]
   },
   "distribute/engage/video/more": {
@@ -5544,15 +5556,12 @@
     "https://medium.com/google-developers/writing-more-code-by-writing-less-code-with-android-studio-live-templates-244f648d17c7#.hczcm02du",
     ]
   },
-  "preview/landing/resources": {
+  "nougat/landing/resources": {
     "title": "",
     "resources": [
-      "preview/overview.html",
-      "preview/api-overview.html",
-      "preview/behavior-changes.html",
-      "preview/setup-sdk.html",
-      "preview/samples.html",
-      "preview/support.html"
+      "about/versions/nougat/api-overview.html",
+      "about/versions/nougat/behavior-changes.html",
+      "about/versions/nougat/samples.html",
     ]
   },
 
diff --git a/docs/html/preview/_book.yaml b/docs/html/preview/_book.yaml
deleted file mode 100644
index ad67249..0000000
--- a/docs/html/preview/_book.yaml
+++ /dev/null
@@ -1,344 +0,0 @@
-toc:
-- title: Program Overview
-  path: /preview/overview.html
-  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 the Preview
-  path: /preview/setup-sdk.html
-  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
-  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
-  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: Key Attestation
-    path: /preview/features/key-attestation.html
-  - 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
-  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
-  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/_project.yaml b/docs/html/preview/_project.yaml
deleted file mode 100644
index 3ec851a..0000000
--- a/docs/html/preview/_project.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-name: "Preview"
-home_url: /preview/
-description: "Android N final SDK is now available."
-content_license: cc3-apache2
-buganizer_id: 30209417
diff --git a/docs/html/preview/download-ota.jd b/docs/html/preview/download-ota.jd
deleted file mode 100644
index 65f7f9f..0000000
--- a/docs/html/preview/download-ota.jd
+++ /dev/null
@@ -1,332 +0,0 @@
-page.title=Applying a Device OTA Image
-
-@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">Before downloading and installing components of
-      the Android Preview SDK, you must agree to the following terms and
-      conditions.</p>
-
-    <h2 class="norule">Terms and Conditions</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-This is the Android SDK Preview License Agreement (the “License Agreement”).
-
-1. Introduction
-
-1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) 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 Preview.
-
-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 “Android-compatible” means any Android implemation 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.
-
-2. Accepting the License Agreement
-
-2.1 In order to use the Preview, you must first agree to the License Agreement. You may not use the Preview if you do not accept the License Agreement.
-
-2.2 By clicking to accept and/or using the Preview, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the Preview and may not accept the License Agreement if you are a person barred from receiving the Preview under the laws of the United States or other countries including the country in which you are resident or from which you use the Preview.
-
-2.4 If you will use the Preview internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and 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 Preview on behalf of your employer or other entity.
-
-3. Preview License from Google
-
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the Preview solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this Preview 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 Preview is not used for that purpose.
-
-3.3 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "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 Preview 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 Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
-
-3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
-
-3.6 You agree that the form and nature of the Preview that Google provides may change without prior notice to you and that future versions of the Preview may be incompatible with applications developed on previous versions of the Preview. You agree that Google may stop (permanently or temporarily) providing the Preview (or any features within the Preview) 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 Preview.
-
-4. Use of the Preview by You
-
-4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the Preview 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 Preview to develop applications, you will protect the privacy and legal rights of users. If 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 users provide you 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, each user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the Preview, 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 Google or any third party.
-
-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.
-
-4.7 The Preview is in development, and your testing and feedback are an important part of the development process. By using the Preview, you acknowledge that implementation of some features are still under development and that you should not rely on the Preview having the full functionality of a stable release. You agree not to publicly distribute or ship any application using this Preview as this Preview will no longer be supported after the official Android SDK is released.
-
-5. Your Developer Credentials
-
-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.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the Preview, 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 Preview are being used and how they are being used. Before any of this information is collected, the Preview 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 Preview and is maintained in accordance with Google's Privacy Policy located at http://www.google.com/policies/privacy/.
-
-7. Third Party Applications
-
-7.1 If you use the Preview 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.
-
-8. Using Google APIs
-
-8.1 Google 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.
-
-9. Terminating the License Agreement
-
-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 Preview and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.
-
-9.4 The License Agreement will automatically terminate without notice or other action upon the earlier of:
-(A) when Google ceases to provide the Preview or certain parts of the Preview to users in the country in which you are resident or from which you use the service; and
-(B) Google issues a final release version of the Android SDK.
-
-9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the Preview, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.
-
-10. DISCLAIMERS
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE PREVIEW IS AT YOUR SOLE RISK AND THAT THE PREVIEW IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE PREVIEW AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE PREVIEW 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. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE PREVIEW IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
-
-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.
-
-11. LIMITATION OF LIABILITY
-
-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.
-
-12. Indemnification
-
-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 Preview, (b) any application you develop on the Preview that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the Preview. When these changes are made, Google will make a new version of the License Agreement available on the website where the Preview is made available.
-
-14. General Legal Terms
-
-14.1 the License Agreement constitutes the whole legal agreement between you and Google and governs your use of the Preview (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 Preview.
-
-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 PREVIEW 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 PREVIEW. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
-
-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.
-  </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">I have read and agree with the above terms and conditions</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<p>
-  This page provides links to over-the-air (OTA) device images and describes
-  how to manually apply an OTA update to a device. This procedure may be useful
-  in recovering devices that received OTA updates through the Android Beta
-  Program and do not start up after the update is installed.
-</p>
-
-<h2 id="install-ota">Installing OTA Images</h2>
-
-<p></p>
-
-<p>To install an OTA package to a device:</p>
-
-<ol>
-  <li>Download an OTA device image from the table below.</li>
-  <li>Reboot the device into Recovery mode. For more information on putting
-    Nexus devices in this mode, see
-    <a href="https://support.google.com/nexus/answer/4596836">Reset your Nexus
-      device to factory settings</a>.
-  </li>
-  <li>On the device, select <strong>ADB sideload</strong>.</li>
-  <li>Connect the device to a computer with the Android development environment
-    loaded and the Android Debug Bridge (adb) tool installed.</li>
-  <li>Run the following command:
-    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
-  </li>
-</ol>
-
-
-
-<h2 id="ota-images">Device OTA Images</h2>
-
-<table>
-  <tr>
-    <th scope="col">Device</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-ota-npd90g-0a874807.zip</a><br>
-      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
-      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd90g-06f5d23d.zip</a><br>
-      MD5: 513570bb3a91878c2d1a5807d2340420<br>
-      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd90g-5baa69c2.zip</a><br>
-      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
-      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd90g-c04785e1.zip</a><br>
-      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
-      SHA-1: 31633180635b831e59271a7d904439f278586f49
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
-      MD5: 0493fa79763d67bcdde8007299e1888d<br>
-      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd90g-3a0643ae.zip</a><br>
-      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
-      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd90g-ec931914.zip</a><br>
-      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
-      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
-      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
-      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
-    </td>
-  </tr>
-
-</table>
-
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
-  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/preview/download.jd b/docs/html/preview/download.jd
deleted file mode 100644
index e4db890..0000000
--- a/docs/html/preview/download.jd
+++ /dev/null
@@ -1,562 +0,0 @@
-page.title=Test on a Device
-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">Before downloading and installing components of
-      the Android Preview SDK, you must agree to the following terms and
-      conditions.</p>
-
-    <h2 class="norule">Terms and Conditions</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-This is the Android SDK Preview License Agreement (the “License Agreement”).
-
-1. Introduction
-
-1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) 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 Preview.
-
-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 “Android-compatible” means any Android implemation 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.
-
-2. Accepting the License Agreement
-
-2.1 In order to use the Preview, you must first agree to the License Agreement. You may not use the Preview if you do not accept the License Agreement.
-
-2.2 By clicking to accept and/or using the Preview, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the Preview and may not accept the License Agreement if you are a person barred from receiving the Preview under the laws of the United States or other countries including the country in which you are resident or from which you use the Preview.
-
-2.4 If you will use the Preview internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and 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 Preview on behalf of your employer or other entity.
-
-3. Preview License from Google
-
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the Preview solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this Preview 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 Preview is not used for that purpose.
-
-3.3 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "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 Preview 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 Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
-
-3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
-
-3.6 You agree that the form and nature of the Preview that Google provides may change without prior notice to you and that future versions of the Preview may be incompatible with applications developed on previous versions of the Preview. You agree that Google may stop (permanently or temporarily) providing the Preview (or any features within the Preview) 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 Preview.
-
-4. Use of the Preview by You
-
-4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the Preview 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 Preview to develop applications, you will protect the privacy and legal rights of users. If 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 users provide you 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, each user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the Preview, 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 Google or any third party.
-
-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.
-
-4.7 The Preview is in development, and your testing and feedback are an important part of the development process. By using the Preview, you acknowledge that implementation of some features are still under development and that you should not rely on the Preview having the full functionality of a stable release. You agree not to publicly distribute or ship any application using this Preview as this Preview will no longer be supported after the official Android SDK is released.
-
-5. Your Developer Credentials
-
-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.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the Preview, 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 Preview are being used and how they are being used. Before any of this information is collected, the Preview 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 Preview and is maintained in accordance with Google's Privacy Policy located at http://www.google.com/policies/privacy/.
-
-7. Third Party Applications
-
-7.1 If you use the Preview 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.
-
-8. Using Google APIs
-
-8.1 Google 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.
-
-9. Terminating the License Agreement
-
-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 Preview and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.
-
-9.4 The License Agreement will automatically terminate without notice or other action upon the earlier of:
-(A) when Google ceases to provide the Preview or certain parts of the Preview to users in the country in which you are resident or from which you use the service; and
-(B) Google issues a final release version of the Android SDK.
-
-9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the Preview, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.
-
-10. DISCLAIMERS
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE PREVIEW IS AT YOUR SOLE RISK AND THAT THE PREVIEW IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE PREVIEW AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE PREVIEW 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. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE PREVIEW IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
-
-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.
-
-11. LIMITATION OF LIABILITY
-
-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.
-
-12. Indemnification
-
-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 Preview, (b) any application you develop on the Preview that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the Preview. When these changes are made, Google will make a new version of the License Agreement available on the website where the Preview is made available.
-
-14. General Legal Terms
-
-14.1 the License Agreement constitutes the whole legal agreement between you and Google and governs your use of the Preview (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 Preview.
-
-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 PREVIEW 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 PREVIEW. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
-
-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.
-  </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">I have read and agree with the above terms and conditions</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>In this document</h2>
-      <ol>
-        <li><a href="#device-preview">Set up a hardware device</a>
-          <ol>
-            <li><a href="#ota">Get over-the-air updates</a></li>
-            <li><a href="#flash">Manually flash a device</a></li>
-            <li><a href="#revertDevice">Uninstalling</a></li>
-          </ol>
-        </li>
-        <li><a href="#setupAVD">Set up an emulator</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  To run and test your app on the new platform you need to set up an Android N
-  runtime environment. You can do that in either of these ways:
-</p>
-
-<ul>
-  <li>Install Android N on a supported hardware device, or</li>
-  <li>Set up an Android emulator running Android N</li>
-</ul>
-
-<p>
-  If you want an environment for basic compatibility testing of your app on the
-  new platform, all you need is your current APK and a hardware device or
-  emulator. You don't necessarily need to update your full development
-  environment to do basic testing.
-</p>
-
-<p>
-  If you want to modify your app to target Android N or use new Android N APIs,
-  you need to set up a development environment that's updated to support
-  Android N. <a href="{@docRoot}preview/setup-sdk.html">Set Up to Develop for
-  Android N</a> has details.
-</p>
-
-
-<h2 id="device-preview">Set up a hardware device</h2>
-
-<p>
-  The N Developer Preview offers system updates for a range of hardware devices
-  that you can use for testing your app, from phones to tablets and TV.
-</p>
-
-<p>
-  If you have access to a supported device, you can update it to a Developer
-  Preview milestone build in one of these ways:
-</p>
-
-<ul>
-  <li>
-    <strong>Enroll the device in automatic OTA system updates</strong> through
-    the <a href="https://g.co/androidbeta">Android Beta Program</a>. Once
-    enrolled, your device will receive regular over-the-air (OTA) updates of
-    all milestone builds in the N Developer Preview. When the next version of
-    Android is released, your device will automatically update to the final
-    version. This approach is recommended because it lets you seamlessly
-    transition from your current environment, through the various releases of
-    the N Developer Preview, to the release version.
-  </li>
-
-  <li>
-    <strong>Download a Developer Preview system image and flash the
-    device</strong>. OTA updates are not provided automatically for devices
-    that you flash manually, but you can enroll those devices in Android Beta
-    Program to get OTA updates. When the next version of Android is released,
-    you can download the final device image from the <a href=
-    "https://developers.google.com/android/nexus/images" type=
-    "external-link">factory images</a> page.
-  </li>
-</ul>
-
-<h3 id="ota">Enroll the device in automatic OTA updates</h3>
-
-<p>
-  If you have access to a supported device (see the list in the Downloads
-  table), you can receive over-the-air updates to preview versions of Android
-  by enrolling that device in the <a href="https://g.co/androidbeta">Android
-  Beta Program</a>. These updates are automatically downloaded and will update
-  your device just like official system updates. When the next version of
-  Android is released, the device will automatically update to the production
-  version.
-</p>
-
-<p>
-  You can un-enroll a device at any time. The device will receive an OTA update
-  to the most recent production version of Android available for that device
-  (for example, Android 6.0 Marshmallow). The update requires a full device
-  reset, so user data on the device will be removed. Make sure to <strong>back
-  up important data</strong> before un-enrolling a device.
-</p>
-
-<p>
-  For more information and to enroll your device, see
-  the <a href="https://g.co/androidbeta">Android Beta Program</a> web site.
-</p>
-
-<p class="note"><strong>Note:</strong>
-  Un-enrolling requires a full device reset. Back up
-  important data first.
-</p>
-
-<h3 id="flash">Flashing a device manually</h3>
-
-<p>
-  At any time you can download the latest Developer Preview system image and
-  manually flash it to your device. See the table below to download the system
-  image for your test device. Manually flashing a device is useful if you need
-  precise control over the test environment or need to reinstall frequently,
-  such as for automated testing.
-</p>
-
-<!-- You can flash by ota or system image --><p>
-  Installing a system image on a device <strong>removes all data from the
-  device</strong>, so you should back up your data first.
-</p>
-
-<p>
-  After you back up your device data and download the system image below that
-  matches your device, follow the instructions at <a href=
-  "https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
-  to flash the image onto your device.
-</p>
-
-<p>
-  Manually flashed system images <strong>do not
-  automatically receive OTA updates</strong> to later Developer Preview
-  milestone builds or the final, production version. Make sure to keep your
-  environment up-to-date and flash a
-  new system image at each Developer Preview milestone.
-</p>
-
-<p>
-  If you decide you want to get OTA updates after manually flashing a device,
-  all you need to do is enroll the device in the <a href="https://g.co/androidbeta">Android
-  Beta Program</a>. You can enroll the device at any time to receive the next Preview
-  update over the air.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</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-npd90g-factory-7a0ca1bc.tgz</a><br>
-      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
-      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
-    </td>
-  </tr>
-
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
-      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
-      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
-    </td>
-  </tr>
-
-  <tr id="angler">
-    <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
-      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
-      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
-    </td>
-  </tr>
-
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd90g-factory-41b55406.tgz</a><br>
-      MD5: cefa78950141da2a7c75e887717e3c8f<br>
-      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
-    </td>
-  </tr>
-
-  <tr id="volantisg">
-    <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd90g-factory-610492be.tgz</a><br>
-      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
-      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd90g-factory-0fe95694.tgz</a><br>
-      MD5: f4cb48f919e4c29c631de21416c612e2<br>
-      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
-    </td>
-  </tr>
-
-  <tr id="ryu">
-    <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd90g-factory-f4da981c.tgz</a><br>
-      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
-      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
-    </td>
-  </tr>
-
-  <tr id="seed">
-    <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
-      MD5: 0ed565c509594072822d71c65b48ec8e<br>
-      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="revertDevice">Uninstalling the Preview from a device</h3>
-
-<p>
-  If you want to uninstall the preview from a device, you can do so in one of
-  these ways: </p>
-  <ul>
-    <li><strong>Obtain a factory spec system image</strong> and then manually
-    flash it to the device.
-      <ul>
-          <li>For <strong>Nexus devices and Pixel C devices</strong>, see
-        the <a href="http://developers.google.com/android/nexus/images">Factory Images
-        for Nexus Devices</a> page for downloads. </li>
-        <li>For <strong>other devices</strong>, please contact the device manufacturer
-        directly. Alternatively, if the device is supported
-        in the Android Beta Program, you can enroll the device in the
-        program and then un-enroll it (see below).</li>
-      </ul>
-    </li>
-    <li><strong>Un-enroll the device from Android Beta Program</strong>. If the
-    device is enrolled in the <a href="https://g.co/androidbeta">Android Beta
-    Program</a>, regardless of device, you can simply un-enroll it from the program.
-  <p>
-    The device will receive an OTA update to the most recent production version
-    of Android available for that device (for example, Android 6.0 Marshmallow).
-    The update requires a full device reset, so user data on the device will be
-    removed. Make sure to <strong>back up important data</strong> before
-    un-enrolling a device.
-  </p>
-  </li>
-</ul>
-
-<p class="note"><strong>Note:</strong>
-  Uninstalling a Developer Preview system image prior to
-  the end of the program requires a full device reset and removes all user data
-  on the device.
-</p>
-
-
-<h2 id="setupAVD">Set up an emulator</h2>
-
-<p>To use the Android Emulator to run the Android N Preview, you need to
-download the Android N Preview SDK and create a virtual device for the
-emulator.</p>
-
-<p>First, download the Android N Preview SDK as follows (if you
-already got it while <a href="{@docRoot}preview/setup-sdk.html">setting up
-to develop for Android N</a>, you can skip this part):
-
-<ol>
-  <li>In Android Studio, 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; Android SDK</strong>.
-
-  <li>Click the <strong>SDK Platforms</strong> tab, then select the
-  <strong>Android N Preview</strong> check box.</li>
-
-  <li>Click the <strong>SDK Tools</strong> tab, then select the
-    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
-    Platform-Tools</strong>, and <strong>Android SDK Tools</strong> check
-    boxes.
-  </li>
-
-  <li>Click <strong>OK</strong> and accept the license
-    agreements for any packages to be installed.
-  </li>
-</ol>
-
-<p>You should now have <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
-<strong>Platform-Tools 24.0.0 rc1</strong>, and <strong>SDK Tools
-25.0.9</strong>. If you do not update the SDK Tools to 25.0.9, then you won't
-be able to run the x86_64 system images for Android N.</p>
-
-
-<p>Now create a virtual device with the Android N system image:</p>
-
-<ol>
-  <li>Open the AVD Manager by selecting <strong>Tools > Android >
-    AVD Manager</strong>.</li>
-  <li>Click <strong>Create Virtual Device</strong>.</li>
-  <li>Select a device such as Nexus 5X, Nexus 6P, Nexus 9, or Android TV,
-    then click <strong>Next</strong>.</li>
-  <li>Select the <strong>N</strong> system image (with the
-    <strong>x86</strong> ABI), then click <strong>Next</strong>.
-    (Only x86 system images are currently supported with the Android Emulator
-for the Android N Preview.)
-  <li>Complete the rest of the AVD configuration and click
-    <strong>Finish</strong>.</li>
-</ol>
-
-<p>You can now launch the Android Emulator with the Android N Preview AVD.</p>
-
-<p>
-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>For more information about creating virtual devices, see <a href=
-  "{@docRoot}tools/devices/index.html">Managing Virtual Devices</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/preview/features/afw.jd b/docs/html/preview/features/afw.jd
deleted file mode 100644
index 17cd58e..0000000
--- a/docs/html/preview/features/afw.jd
+++ /dev/null
@@ -1,555 +0,0 @@
-page.title=Android for Work Updates
-page.metaDescription=New Android for Work APIs and features in Android N.
-page.keywords="android for work", "android N", "enterprise", "QR code"
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#qr">QR Code Provisioning
-                </a></li>
-
-        <li><a href="#sec-challenge">Work Profile Security Challenge
-                </a></li>
-
-        <li><a href="#suspend">Disable Access to Apps
-                </a></li>
-
-        <li><a href="#toggle-work">Toggle Work Mode
-                </a></li>
-
-        <li><a href="#always-on-vpn">Always-On VPN
-                </a></li>
-
-        <li><a href="#contacts">Contacts Integration with Work Profile
-                </a></li>
-
-        <li><a href="#remote-reboot">Remote Reboot
-                </a></li>
-
-        <li><a href="#disable-roaming">Disable Data Roaming
-                </a></li>
-
-        <li><a href="#process-logging">Enterprise Process Logging
-                </a></li>
-
-        <li><a href="#bug-reports">Remote Bug Reports
-                </a></li>
-
-        <li><a href="#remove-cert">Remove a Client Certificate
-                </a></li>
-
-        <li><a href="#grant-cert-on-install">Grant Access to Client Certificate
-                on Installation</a></li>
-
-        <li><a href="#ui-policy">System UI Policy Transparency
-                </a></li>
-
-        <li><a href="#managed-configurations">Managed Configurations Enhancements
-                </a></li>
-
-        <li><a href="#location-off">Location Off Switch
-                </a></li>
-
-        <li><a href="#custom-provisioning">Customized Provisioning
-                </a></li>
-
-        <li><a href="#multi-wifi-ca">Multiple Wi-Fi CA Certificates
-                </a></li>
-
-        <li><a href="#custom-lock">Customized Lockscreen Message
-                </a></li>
-
-        <li><a href="#work-connectionservice">Work Profile ConnectionService
-                </a></li>
-
-        <li><a href="#lock-wp">Lock Down Wallpaper
-                </a></li>
-
-        <li><a href="#lock-user-icon">Lock Down User Icon
-                </a></li>
-
-        <li><a href="#health-monitoring">Device Health Monitoring
-                </a></li>
-
-      </ol>
-
-    <h2>See Also</h2>
-    <ul>
-      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK
-            Reference</a></li>
-    </ul>
-  </div>
-</div>
-
-<p>This document describes the new Android for Work features provided in
-Android N.</p>
-
-<h2 id="qr">QR Code Provisioning</h2>
-
-<p>
-  Android for Work now supports using QR codes to provision corporate-liable
-  devices. The setup wizard now allows you to scan a QR code to provision
-  the device.
-</p>
-
-<h2 id="sec-challenge">Work Profile Security Challenge</h2>
-
-<p>
-  Profile owners can require users to specify a security challenge for apps
-  running in the work profile. The system shows the security challenge when the
-  user attempts to open any work apps. If the user successfully completes the
-  security challenge, the system unlocks the work profile and decrypts it if
-  necessary.
-</p>
-
-<p>
-  If a profile owner sends an {@link
-  android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD} intent, the
-  system prompts a user to set up a security challenge. The profile owner can
-  also send an <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> intent to
-  prompt the user to set a device lock.
-</p>
-
-<p>
-  Profile owners can choose to set the password policies for the work challenge
-  differently from the policies for other device passwords. For example, the
-  minimum length for the device challenge response can be different from the
-  length required for other passwords. Profile owners set the challenge
-  policies using the usual {@link android.app.admin.DevicePolicyManager}
-  methods, such as {@link
-  android.app.admin.DevicePolicyManager#setPasswordQuality
-  setPasswordQuality()} and {@link
-  android.app.admin.DevicePolicyManager#setPasswordMinimumLength
-  setPasswordMinimumLength()}. The profile owner can also set the device lock,
-  by using the {@link android.app.admin.DevicePolicyManager} instance returned
-  by the new <code>DevicePolicyManager.getParentProfileInstance()</code>
-  method. Additionally, profile owners can customize the credentials screen for
-  the work challenge by using the {@link android.app.admin.DevicePolicyManager}
-  class's new <code>setOrganizationColor()</code> and
-  <code>setOrganizationName()</code> methods.
-</p>
-
-<p>
-  For details on the new methods and constants, see the
-  <code>DevicePolicyManager</code> reference page in the <a
-  href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK Reference</a>.
-</p>
-
-<h2 id="suspend">Disable Access to Apps</h2>
-
-<p>
-  Device owners and profile owners can temporarily suspend access to 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, 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.
-</p>
-
-<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 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>
-
-<h2 id="always-on-vpn">Always-On VPN</h2>
-
-<p>
-  Device owners and profile owners can require that work apps always connect to
-  the network through a specified VPN. If owners set this requirement, the
-  device automatically starts that VPN at boot time.
-</p>
-
-<p>
-  Owners can require use of a VPN by calling the new
-  <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code> method. To find out
-  if the owner has set a VPN requirement, call the new
-  <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code> method.
-</p>
-
-<p>
-  Because the system can directly bind VPN services without app interaction,
-  VPN clients need to handle new entry points for always-on VPN. As before, you
-  can find active services by using an intent filter that matches the action
-  {@link android.net.VpnService android.net.VpnService}.
-</p>
-
-<p>
-  Users can manually set an always-on VPN client that implement {@link
-  android.net.VpnService} by using the <strong>Settings &gt; More &gt;
-  VPN</strong> screen.
-</p>
-
-<h2 id="contacts">Contacts Integration with Work Profile</h2>
-
-<p>
-  Profile owners can allow local search and directory lookup of work contacts
-  from the primary user. For example, a user can access both personal and work
-  directory contacts from their personal dialer or contacts application (if
-  permitted by their profile administrator).
-</p>
-
-<p>
-  Developers that leverage the Contact Provider can use the Enterprise Contacts
-  API to access work profile directory entries from the primary user if allowed
-  by policy:
-</p>
-
-<ul>
-  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
-  </li>
-
-  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
-  </li>
-</ul>
-
-<p>
-  Profile owners can control the visibility of work contacts in the primary
-  user using the following new methods:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
-  </li>
-</ul>
-
-<h2 id="remote-reboot">Remote Reboot</h2>
-
-<p>
-  Device owners can remotely reboot devices. In some cases, devices deployed in
-  public places inside enclosures can prevent access to the power button. If a
-  device needs to be rebooted, administrators can do so using the new
-  <code>DevicePolicyManager.reboot()</code> method.
-</p>
-
-<h2 id="disable-roaming">Disable Data Roaming</h2>
-
-<p>
-  Device owners can disable data roaming using the new {@link
-  android.os.UserManager} user restriction <code>DISALLOW_DATA_ROAMING</code>.
-</p>
-
-<h2 id="process-logging">Enterprise Process Logging</h2>
-
-<p>
-  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>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
-</p>
-
-<p>
-  API changes include:
-</p>
-
-<ul>
-
-  <li>
-    The new class <code>android.app.admin.SecurityLog</code> and its
-    methods
-  </li>
-
-  <li>
-    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrieveSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>List&lt;SecurityEvent&gt;
-      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
-  </li>
-
-  <li>
-    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
-  </li>
-</ul>
-
-<h2 id="bug-reports">Remote Bug Reports</h2>
-
-<p>
-  Device owners can remotely trigger and retrieve a bug report that contains a
-  device state dump file, which allows forensic investigation of a known
-  incident or compromised device. Due to the detailed nature of the bug report,
-  user consent is required.
-</p>
-
-<p>
-  Android N includes the following API additions to support this feature. For
-  details, see the <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK
-  Reference</a>.
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.requestBugreport()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportFailed()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportShared()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
-  </li>
-
-  <li>
-    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
-  </li>
-</ul>
-
-<h2 id="remove-cert">Remove a Client Certificate</h2>
-
-<p>
-  Profile owners and device owners can now remove client certificates that were
-  installed through {@link android.app.admin.DevicePolicyManager#installKeyPair
-  installKeyPair()} by calling the new method
-  <code>DevicePolicyManager.removeKeyPair()</code>.
-</p>
-
-<h2 id="grant-cert-on-install">Grant Access to Client Certificate on
-  Installation</h2>
-
-<p>
-  If a profile owner or device owner grants a third-party app the ability to
-  manage certificates, the app can grant itself access to certificates it
-  installs without any intervention by the owner.
-</p>
-
-<p>
-  The existing API for managing certificates is extended to include:
-</p>
-
-<ul>
-  <li><code>DevicePolicyManager.installKeyPair()</code>
-  </li>
-</ul>
-
-<h2 id="ui-policy">System UI Policy Transparency</h2>
-
-<p>
-  Policies that affect the user experience or restrict user Settings are fully
-  disclosed to the user, and profile owners and device owners can attribute the
-  policy to their company’s IT department. In addition to a consistent “Action
-  not allowed” message in Settings, IT administrators can set an
-  organization-specific support message in device settings with the following
-  new {@link android.app.admin.DevicePolicyManager} methods:
-</p>
-
-<ul>
-  <li>
-    <code>DevicePolicyManager.setShortSupportMessage()</code>
-  </li>
-
-  <li>
-    <code>DevicePolicyManager.setLongSupportMessage()</code>
-  </li>
-</ul>
-
-<h2 id="managed-configurations">Managed Configurations Enhancements</h2>
-
-<p>
-  The device or profile owner can enable another application to manage
-  configurations via the new
-  <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
-  method. The nominated application can check whether this permission has been
-  granted by calling
-  <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
-</p>
-
-<p>
-  An application nominated to manage configurations can call {@link
-  android.app.admin.DevicePolicyManager#setApplicationRestrictions
-  setApplicationRestrictions()} and {@link
-  android.app.admin.DevicePolicyManager#getApplicationRestrictions
-  getApplicationRestrictions()} for any packages within that user or profile.
-</p>
-
-<h2 id="location-off">Location Off Switch</h2>
-
-<p>
-  Users can disable location permissions for work apps while continuing to
-  access location information in their personal apps. A separate location
-  access switch in Location Settings allows users to deny location updates or
-  last-location queries for apps running in the work profile.
-</p>
-
-<p>
-  The top level location off switch disables location access for both the
-  primary profile and the managed profile.
-</p>
-
-<h2 id="custom-provisioning">Customized Provisioning</h2>
-
-<p>
-  An application can customize the profile owner and device owner provisioning
-  flows with corporate colors and logos.
-</p>
-
-<dl>
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
-  </dt>
-
-  <dd>
-    Customizes flow color.
-  </dd>
-
-  <dt>
-    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
-  </dt>
-
-  <dd>
-    Customizes the flow with a corporate logo.
-  </dd>
-</dl>
-
-<h2 id="multi-wifi-ca">Multiple Wi-Fi CA Certificates</h2>
-
-<p>
-  Profile owners and device owners can set multiple CA certificates for a given
-  Wi-Fi configuration. When corporate Wi-Fi networks have separate CAs for
-  separate access points with the same SSID, IT administrators can include all
-  relevant CAs in the Wi-Fi configuration using the new method
-  <code>setCaCertificates()</code>.
-</p>
-
-<p>
-  APIs added are:
-</p>
-
-<ul>
-  <li>
-    <code>WifiEnterpriseConfig.setCaCertificates()</code>
-  </li>
-
-  <li>
-    <code>WifiEnterpriseConfig.getCaCertificates()</code>
-  </li>
-</ul>
-
-<h2 id="custom-lock">Customized Lockscreen Message</h2>
-
-<p>
-  Device owners can provide owner information to be shownon the lockscreen.
-  This information takes precedence over the user lock screen message (if one is
-  set). New {@link android.app.admin.DevicePolicyManager} methods are:
-</p>
-
-<ul>
-  <li>
-    <code>setDeviceOwnerLockScreenInfo()</code>
-  </li>
-
-  <li>
-    <code>getDeviceOwnerLockScreenInfo()</code>
-  </li>
-</ul>
-
-<h2 id="work-connectionservice">Work Profile ConnectionService</h2>
-
-<p>
-  Profile owners can specify a work dialer application that uses a
-  work-specific {@link android.telecom.ConnectionService} for the calling
-  backend (calling accounts). The work dialer maintains a work-only call log
-  and relies on work contacts only. Users have a consistent in-call UI
-  experience regardless of dialing application. Incoming work calls to the work
-  calling accounts are distinguished from personal incoming calls to the
-  personal calling accounts.
-</p>
-
-<p>
-  The dialer should check for the new flag
-  <code>android.telecom.Call.PROPERTY_ENTERPRISE_CALL</code> to determine if a call
-  is a work call. If a call is a work call, the dialer should indicate this,
-  such as by adding a work badge.
-</p>
-
-<h2 id="lock-wp">Lock Down Wallpaper</h2>
-
-<p>
-  A new user restriction (<code>DISALLOW_SET_WALLPAPER</code>) prevents the
-  user from changing their wallpaper. The device owner or profile owner can
-  still change the wallpaper, but they can only change the wallpaper for the
-  user or profile they control. For example, a profile owner can’t change the
-  wallpaper of the parent user, but a profile owner in the primary profile or
-  device owner can. A profile owner or device owner that wants to change the
-  wallpaper should check whether the the user or profile they manage has a
-  wallpaper ({@link android.app.WallpaperManager#isWallpaperSupported
-  isWallpaperSupported()}) and whether they are allowed to change it (with the
-  new method <code>WallpaperManager.isWallpaperSettingAllowed()</code>)
-</p>
-
-<h2 id="lock-user-icon">Lock Down User Icon</h2>
-
-<p>
-  A new user restriction (<code>DISALLOW_SET_USER_ICON</code>) prevents the
-  user from changing their user icon. The user’s device owner or profile owner
-  can still change the icon. However, a profile owner can only change the user
-  icon for the profile it controls.
-</p>
-
-<h2 id="health-monitoring">Device Health Monitoring</h2>
-
-<p>
-  A device owner or profile owner can use the new
-  <code>HardwarePropertiesManager</code> interface to retrieve information
-  about device health, such as CPU or GPU temperatures and CPU usage. The new
-  monitoring interface is especially useful for monitoring unattended devices
-  running in a remote location.
-</p>
diff --git a/docs/html/preview/features/notification-updates.jd b/docs/html/preview/features/notification-updates.jd
deleted file mode 100644
index fd65e12..0000000
--- a/docs/html/preview/features/notification-updates.jd
+++ /dev/null
@@ -1,400 +0,0 @@
-page.title=Notifications
-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>This document includes</h2>
-<ol>
-  <li><a href="#direct">Direct Reply</a></li>
-  <li><a href="#bundle">Bundled Notifications</a></li>
-  <li><a href="#custom">Custom Views</a></li>
-  <li><a href="#style">Messaging Style</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Android N introduces several new APIs that allow apps to post
-notifications that are highly visible and interactive.</p>
-
-<p>Android N extends the existing {@link android.support.v4.app.RemoteInput}
-notification API to support inline replies on handsets. This feature allows users
- to quickly respond from the notification shade without visiting your app.</p>
-
-<p>
-  Android N also allows you to bundle similar notifications to
-  appear as a single notification. To make this possible, Android N uses the existing {@link
-  android.support.v4.app.NotificationCompat.Builder#setGroup
-  NotificationCompat.Builder.setGroup()} method. Users can expand each of the
-  notifications, and perform actions such as reply and dismiss on each of the
-  notifications, individually from the notification shade.
-</p>
-
-<p>Last, Android N also adds new APIs that allow you to leverage system
-decorations in your app’s customized notification views. These APIs help
-ensure that the notification views share a consistent presentation with
-standard templates.</p>
-
-<p>This document highlights some of the key changes that you should take into
- account when using the new notification features in your apps.</p>
-
-<h2 id="direct">Direct Reply</h2>
-
-<p>With the Direct Reply feature in Android N, users can quickly
-respond to text messages or update task lists directly within the notification
-interface. On a handheld, the inline reply action appears as an additional button
- attached to the notification. When a user replies via keyboard, the system attaches
-  the text response to the intent
-    you had specified for the notification action and sends the intent to your
-     handheld app.
-
-
-<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>Figure 1.</strong> Android N adds the <strong>Reply</strong>
-  action button.
-</p>
-
-<h3>Adding inline reply actions</h3>
-
-<p>To create a notification action that supports direct reply:
-</p>
-
-<ol>
-<li>Create an instance of {@link android.support.v4.app.RemoteInput.Builder}
-  that you can add to your notification
-action. This class's constructor accepts a string that the system uses as the key
- for the text input. Later, your handheld app uses that key to retrieve the text
-  of the input.
-
-<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>Attach the {@link android.support.v4.app.RemoteInput}
- object to an action using <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>Apply the action to a notification and issue the notification.
-
-<pre>
-// Build the notification and add the action.
-Notification newMessageNotification =
-        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, newMessageNotification);
-
-</pre>
-</li>
-
-</ol>
-
-
-<p> The system prompts the user to input a response when they trigger the
-notification action. </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>Figure 2.</strong> The user inputs text from the notification shade.
-</p>
-
-<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>
-
-<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.
-
-    <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). You can complete
-  this process and retrieve the input text by creating a method, as in the
-  following code snippet:
-
-    <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>
-  </li>
-
-  <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>
-
-<p>
-  The notification must be either updated or cancelled after the app has
-  received remote input. When the user replies to a remote update
-  using Direct Reply,
-  do not cancel the notification. Instead, update the notification to display the user's reply.
-For notifications using {@code MessagingStyle}, you should add
-the reply as the latest message. When using other templates, you can
-append the user's reply to the remote-input history.
-</p>
-
-<h2 id="bundle">Bundled Notifications</h2>
-
-<p>Android N provides developers with a new way to represent
- a queue of notifications: <i>bundled notifications</i>. This is similar to the
-  <a href="{@docRoot}training/wearables/notifications/stacks.html">Notification
-  Stacks</a> feature in Android Wear. For example, if your app creates notifications
-  for received messages, when more than one message is received, bundle the
- notifications together as a single group. You can
- use the existing {@link android.support.v4.app.NotificationCompat.Builder#setGroup
-Builder.setGroup()} method to bundle similar notifications.</p>
-
-<p>
-  A notification group imposes a hierarchy on the notifications comprising it.
-  At the top of that hierarchy is a parent notification that displays summary
-  information for the group. The user can progressively
-  expand the notification group, and the system shows more information as the
-  user drills deeper. When the user expands the bundle, the system reveals more
-  information for all its child notifications; when the user
-  expands one of those notifications, the system reveals its entire content.
-</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>Figure 3.</strong> The user can progressively expand the notification
-  group.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> If the same app sends four or more notifications
-  and does not specify a grouping, the
-  system automatically groups them together.
-</p>
-
-<p>To learn how to add notifications to a group, see
-<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Add
-Each Notification to a Group</a>.</p>
-
-
-<h3 id="best-practices">Best practices for bundled notifications</h3>
-<p>This section provides guidelines about when to use notification groups instead
-of the {@link android.app.Notification.InboxStyle InboxStyle}
-notifications that have been available in earlier versions of the
-Android platform.</p>
-
-<h3>When to use bundled notifications</h3>
-
-<p>You should use notification groups only if all of the following conditions are
-true for your use case:</p>
-
-<ul>
-  <li>The child notifications are complete notifications and can be displayed
-   individually without the need for a group summary.</li>
-  <li>There is a benefit to surfacing the child notifications individually. For
-  example:
-  </li>
-  <ul>
-    <li>They are actionable, with actions specific to each child.</li>
-    <li>There is more information to the child that the user wants to read.</li>
-  </ul>
-</ul>
-
-<p>Examples of good use cases for notification groups include: a messaging app
-displaying a list of incoming messages, or an email app displaying a list of
-received emails.</p>
-
-<p>
-Examples of cases where a single notification is preferable
- include individual messages from a single person, or a list representation of
- single-line text items. You can use
-({@link android.app.Notification.InboxStyle InboxStyle} or
-{@link android.app.Notification.BigTextStyle BigTextStyle}) to accomplish
-this.
-</p>
-
-<h3 id ="post">Displaying bundled notifications</h3>
-
-<p>
-  The app should always post a group summary, even if the group contains just a
-  single child. The system will suppress the summary and directly display the
-  child notification if it only contains a single notification. This ensures
-  that the system can provide a consistent experience when the user swipes away
-  children of a group.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> This version of Android N does not yet
-  suppress the summary for notification groups containing a single child. This
-  functionality will be added in a later version of Android N.
-</p>
-
-<h3>Peeking notifications</h3>
-
-<p>While the system usually displays child notifications as a group, you can set
- them to temporarily appear as
- <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
- heads-up notifications</a>. This feature is especially useful because it allows
-  immediate access to the most recent child and the actions associated with it.
-</p>
-
-
-<h3>Backwards compatibility</h3>
-
-<p>
-  Both notification groups and remote input have been a part of the {@link
-  android.app.Notification} API since Android 5.0 (API level 21) to support
-  Android Wear devices. If you've already built notifications with these APIs,
-  the only action you must take is to verify that the app behavior corresponds
-  to the guidelines described above, and to consider implementing {@code
-  setRemoteInputHistory()}.
-</p>
-
-<p>
-  In order to support backward compatibility, the same APIs are available with
-  the support library's {@link android.support.v4.app.NotificationCompat}
-  class, allowing you to build notifications that works on earlier Android
-  versions. On handhelds and tablets, users only see the summary notification,
-  so an app should still have an inbox style or an equivalent notification
-  representative for the whole information content of the group. As Android
-  Wear devices allow users to see all child notifications even on older
-  platform levels, you should build child notifications regardless of API
-  level.
-</p>
-
-<h2 id="custom"> Custom Views</h2>
-<p>Starting from Android N, you can customize notification views and
-still obtain system decorations like notification headers, actions, and
-expandable layouts.</p>
-
-<p>To enable this capability, Android N adds the following APIs to style your
-  custom view:</p>
-
-<dl>
-<dt>
-{@code DecoratedCustomViewStyle()}</dt>
-<dd> Styles notifications other than media
-notifications.</dd>
-<dt>
-{@code DecoratedMediaCustomViewStyle()}</dt>
-<dd> Styles media notifications.</dd>
-</dl>
-
-<p>To use this new API, call the {@code setStyle()} method, passing to it
-the desired custom view style.</p>
-
-<p>This snippet shows how to construct a custom notification object with the
-{@code DecoratedCustomViewStyle()} method.</p>
-
-<pre>
-Notification notification = new Notification.Builder()
-           .setSmallIcon(R.drawable.ic_stat_player)
-           .setLargeIcon(albumArtBitmap))
-           .setCustomContentView(contentView);
-           .setStyle(new Notification.DecoratedCustomViewStyle())
-           .build();
-
-</pre>
-
-<h2 id="style">Messaging Style</h2>
-<p>
-  Android N introduces a new API for customizing the style of a notification.
-  Using the <code>MessagingStyle</code> class, you can change several of the
-  labels displayed on the notification, including the conversation title,
-  additional messages, and the content view for the notification.
-</p>
-
-<p>
-  The following code snippet demonstrates how to customize a notification's
-  style using the <code>MessagingStyle</code> class.
-</p>
-
-<pre>
-  Notification notification = new Notification.Builder()
-             .setStyle(new Notification.MessagingStyle("Me")
-                 .setConversationTitle("Team lunch")
-                 .addMessage("Hi", timestamp1, null) // Pass in null for user.
-                 .addMessage("What's up?", timestamp2, "Coworker")
-                 .addMessage("Not much", timestamp3, null)
-                 .addMessage("How about lunch?", timestamp4, "Coworker"))
-             .build();
-</pre>
diff --git a/docs/html/preview/features/tv-recording-api.jd b/docs/html/preview/features/tv-recording-api.jd
deleted file mode 100644
index 6619821..0000000
--- a/docs/html/preview/features/tv-recording-api.jd
+++ /dev/null
@@ -1,142 +0,0 @@
-page.title=TV Recording
-page.keywords=preview,sdk,tv,recording
-page.tags=androidn
-page.image=images/cards/card-nyc_2x.jpg
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#supporting">Indicating Support for Recording</a></li>
-    <li><a href="#recording">Recording a Session</a></li>
-    <li><a href="#errors">Handling Recording Errors</a></li>
-    <li><a href="#sessions">Managing Recorded Sessions</a></li>
-    <li><a href="#best">Best Practices</a></li>
-  </ol>
-</div>
-</div>
-
-<p>TV input services let the user pause and resume channel playback via
-time-shifting APIs. Android N expands on time-shifting
-by letting the user save multiple recorded sessions.</p>
-
-<p>Users can schedule recordings in advance, or start a recording as they watch
-a program. Once the system has saved a recording, the user can browse, manage,
-and play back the recording using the system TV app.</p>
-
-<p>If you want to provide recording functionality for your TV input service,
-you must indicate to the system that your app supports recording, implement
-the ability to record programs, handle and communicate any errors that occur
-during recording, and manage your recorded sessions.</p>
-
-<p class="note"><strong>Note:</strong> The Live Channels app does not yet
-provide a way for users to create or access recordings. Until changes are
-made to the Live Channels app, it may be difficult to fully test the recording
-experience for your TV input service.</p>
-
-<h2 id="supporting">Indicating Support for Recording</h2>
-
-<p>To tell the system that your TV input service supports recording, set
-the <code>android:canRecord</code> attribute in your service metadata XML file
-to <code>true</code>:
-</p>
-
-<pre>
-&lt;tv-input xmlns:android="http://schemas.android.com/apk/res/android"
-  <b>android:canRecord="true"</b>
-  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" /&gt;
-</pre>
-
-<p>For more information on the service metadata file, see
-<a href="{@docRoot}training/tv/tif/tvinput.html#manifest">Declare Your TV Input
-Service in the Manifest</a>.
-</p>
-
-<p>Alternatively, you can indicate recording support in your code using
-these steps:</p>
-
-<ol>
-<li>In your <code>TvInputService.onCreate()</code> method, create a new
-<code>TvInputInfo</code> object using the <code>TvInputInfo.Builder</code>
-class.</li>
-<li>When creating the new <code>TvInputInfo</code> object, call
-<code>setCanRecord(true)</code> before calling <code>build()</code> to
-indicate your service supports recording.</li>
-<li>Register your <code>TvInputInfo</code> object with the system by calling
-<code>TvInputManager.updateTvInputInfo()</code>.</li>
-</ol>
-
-<h2 id="recording">Recording a Session</h2>
-
-<p>After your TV input service registers that it supports recording
-functionality, the system calls your
-<code>TvInputService.onCreateRecordingSession()</code> when it needs to access
-your app's recording implementation. Implement your own
-<code>TvInputService.RecordingSession</code> subclass and return it
-when the <code>onCreateRecordingSession()</code> callback
-fires. This subclass is responsible for switching to the correct channel data,
-recording the requested data, and communicating recording status and errors to
-the system.</p>
-
-<p>When the system calls <code>RecordingSession.onTune()</code>, passing in a
-channel URI, tune to the channel that the URI specifies. Notify the system that
-your app has tuned to the desired channel by calling <code>notifyTuned()</code>,
-or, if your app could not tune to the proper channel, call
-<code>notifyError()</code>.</p>
-
-<p>The system next invokes the <code>RecordingSession.onStartRecording()</code>
-callback. Your app must start recording immediately. When the system invokes
-this callback, it may provide a URI that contains information about the program
-that is about to be recorded. When the recording is done, you need to copy this
-data to the <code>RecordedPrograms</code> data table.</p>
-
-<p>Finally, the system calls <code>RecordingSession.onStopRecording()</code>.
-At this point, your app must stop recording immediately. You also need to
-create an entry in the <code>RecordedPrograms</code> table. This entry should
-include the recorded session data URI in the
-<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> column, and any program
-information that the system provided in the initial call to
-<code>onStartRecording()</code>.</p>
-
-<p>For more details on how to access the <code>RecordedPrograms</code> table
-see <a href="#sessions">Managing Recorded Sessions</a>.</p>
-
-<h2 id="errors">Handling Recording Errors</h2>
-
-<p>If an error occurs during recording, rendering the recorded data unusable,
-notify the system by calling <code>RecordingSession.notifyError()</code>.
-Similarly, you can call <code>notifyError()</code> after a recording session is
-created to let the system know that your app can no longer record sessions.</p>
-
-<p>If an error occurs during recording, but you'd like to provide a usable
-partial recording to users for playback, call
-<code>RecordingSession.notifyRecordingStopped()</code> to enable the system to
-use the partial session.</p>
-
-<h2 id="sessions">Managing Recorded Sessions</h2>
-
-<p>The system maintains information for all recorded sessions from all
-recording-capable channel apps in the <code>TvContract.RecordedPrograms</code>
-content provider table. This information is accessible via the
-<code>RecordedPrograms.Uri</code> content URI. Use content provider APIs to
-read, add, and delete entries from this table.</p>
-
-<p>For more information on working with content provider data see
-<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
-Content Provider Basics</a> .</p>
-
-<h2 id="best">Best Practices</h2>
-
-<p>TV devices may have limited storage, so use your best judgment when
-allocating storage to save recorded sessions. Use
-<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code> when
-there isn't enough space to save a recorded session.</p>
-
-<p>When the user initiates recording, you should start recording data as soon
-as possible. To facilitate this, complete any up-front time-consuming tasks,
-like accessing and allocating storage space, when the system invokes the
-<code>onCreateRecordingSession()</code> callback. Doing so lets you start
-recording immediately when the <code>onStartRecording()</code> callback
-fires.</p>
diff --git a/docs/html/preview/license.jd b/docs/html/preview/license.jd
deleted file mode 100644
index ae02aae..0000000
--- a/docs/html/preview/license.jd
+++ /dev/null
@@ -1,145 +0,0 @@
-page.title=License Agreement
-
-@jd:body
-
-<p>
-To get started with the Android SDK Preview, you must agree to the following terms and conditions.
-As described below, please note that this is a preview version of the Android SDK, subject to change, that you use at your own risk.  The Android SDK Preview is not a stable release, and may contain errors and defects that can result in serious damage to your computer systems, devices and data.
-</p>
-
-<p>
-This is the Android SDK Preview License Agreement (the “License Agreement”).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Introduction
-
-1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) 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 Preview.
-
-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 “Android-compatible” means any Android implemation 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.
-
-2. Accepting the License Agreement
-
-2.1 In order to use the Preview, you must first agree to the License Agreement. You may not use the Preview if you do not accept the License Agreement.
-
-2.2 By clicking to accept and/or using the Preview, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the Preview and may not accept the License Agreement if you are a person barred from receiving the Preview under the laws of the United States or other countries including the country in which you are resident or from which you use the Preview.
-
-2.4 If you will use the Preview internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and 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 Preview on behalf of your employer or other entity.
-
-3. Preview License from Google
-
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the Preview solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this Preview 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 Preview is not used for that purpose.
-
-3.3 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "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 Preview 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 Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
-
-3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
-
-3.6 You agree that the form and nature of the Preview that Google provides may change without prior notice to you and that future versions of the Preview may be incompatible with applications developed on previous versions of the Preview. You agree that Google may stop (permanently or temporarily) providing the Preview (or any features within the Preview) 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 Preview.
-
-4. Use of the Preview by You
-
-4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the Preview 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 Preview to develop applications, you will protect the privacy and legal rights of users. If 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 users provide you 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, each user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the Preview, 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 Google or any third party.
-
-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.
-
-4.7 The Preview is in development, and your testing and feedback are an important part of the development process. By using the Preview, you acknowledge that implementation of some features are still under development and that you should not rely on the Preview having the full functionality of a stable release. You agree not to publicly distribute or ship any application using this Preview as this Preview will no longer be supported after the official Android SDK is released.
-
-5. Your Developer Credentials
-
-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.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the Preview, 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 Preview are being used and how they are being used. Before any of this information is collected, the Preview 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 Preview and is maintained in accordance with Google's Privacy Policy located at http://www.google.com/policies/privacy/.
-
-7. Third Party Applications
-
-7.1 If you use the Preview 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.
-
-8. Using Google APIs
-
-8.1 Google 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.
-
-9. Terminating the License Agreement
-
-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 Preview and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.
-
-9.4 The License Agreement will automatically terminate without notice or other action upon the earlier of:
-(A) when Google ceases to provide the Preview or certain parts of the Preview to users in the country in which you are resident or from which you use the service; and
-(B) Google issues a final release version of the Android SDK.
-
-9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the Preview, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.
-
-10. DISCLAIMERS
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE PREVIEW IS AT YOUR SOLE RISK AND THAT THE PREVIEW IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE PREVIEW AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE PREVIEW 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. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE PREVIEW IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
-
-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.
-
-11. LIMITATION OF LIABILITY
-
-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.
-
-12. Indemnification
-
-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 Preview, (b) any application you develop on the Preview that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the Preview. When these changes are made, Google will make a new version of the License Agreement available on the website where the Preview is made available.
-
-14. General Legal Terms
-
-14.1 the License Agreement constitutes the whole legal agreement between you and Google and governs your use of the Preview (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 Preview.
-
-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 PREVIEW 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 PREVIEW. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
-
-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.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html/preview/overview.jd b/docs/html/preview/overview.jd
deleted file mode 100644
index 601442e..0000000
--- a/docs/html/preview/overview.jd
+++ /dev/null
@@ -1,450 +0,0 @@
-page.title=Program Overview
-page.metaDescription=Get your apps ready for the next version of 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:#B2DFDB; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview X is now available
-  </h3>
-  <p>This release includes the ...</p>
-   <div style="margin:auto 1em">
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#dp4">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/download.html">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Test 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>
-  Welcome to the <strong>Android N Developer Preview</strong>, a program that
-  gives you everything you need to test and optimize your apps for the next
-  version of Android. It's free, and you can get started right away just by
-  downloading the N Developer Preview tools.
-</p>
-
-
-
-
-
-
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        Hardware and emulator images
-      </h5>
-
-      <p>
-        Run and test your apps on a range of devices or on an emulator.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Latest platform code
-      </h5>
-
-      <p>
-        We’ll provide monthly updates during the Preview, so you’ll be testing against the latest platform changes.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Priority for developer issues
-      </h5>
-
-      <p>
-        During the first several weeks we’ll give priority to developer-reported
-        issues, so test and give feedback as soon as possible.
-      </p>
-    </div>
-
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        New behaviors and capabilities
-      </h5>
-
-      <p>
-        Start work early to support new platform behaviors and develop with new features.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-        <h5>
-        Updates delivered by OTA
-      </h5>
-
-      <p>
-        Seamless over-the-air updates for any supported device through the
-        Android Beta Program. No flashing is needed.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Feedback and support
-      </h5>
-
-      <p>
-        Report issues and give us feedback using our
-        <a href="{@docRoot}preview/bug">issue tracker</a>. Connect with other
-        developers in the
-        <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">Timeline and updates</h2>
-
-<p>
-  The N Developer Preview runs from 9 March 2016 until the final Android N
-  public release to AOSP and OEMs, planned for Q3 2016.
-</p>
-
-<img src="{@docRoot}images/n-preview-updates_2x.png">
-
-<p>
-  At key development milestones, we’ll deliver updates for your development and
-  testing environment. In general you can expect an update each month (4 to 6
-  week interval). The milestones are listed below.
-</p>
-
-<ul>
-  <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#dp2">Preview 2</a></strong> (incremental update, alpha)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></strong> (incremental update, beta)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp4">Preview 4</a></strong> (final APIs and official SDK, Play publishing)</li>
-  <li><strong><a href="{@docRoot}preview/support.html#dp5">Preview 5</a></strong> (near-final system images for final testing)</li>
-  <li><strong>Final release</strong> to AOSP and ecosystem</li>
-</ul>
-
-<p>
-  Each update includes SDK tools, preview system images, emulators, reference
-  documentation, and API diffs.
-</p>
-
-<p>
-  The <strong>first three preview milestones</strong> provide an <strong>early
-  test and development environment</strong> that help you identify
-  compatibility issues in your current apps and plan migration or feature work
-  needed to target the new platform. This is the priority period in which to
-  give us your feedback on features and APIs and file compatibility issues
-  &mdash; for all of these, please use the <a href="{@docRoot}preview/bug">issue
-  tracker</a>. You can expect some API changes across these updates.
-</p>
-
-<p>
-  At <strong>previews 4 and 5</strong> you’ll have access to the <strong>final
-  N APIs and SDK</strong> to develop with, as well as near-final system images
-  to test system behaviors and features. Android N will provide a standard API
-  level at this time. You can begin final compatibility testing of your legacy
-  apps and refine any new code that is using the N APIs or features.
-</p>
-
-<p>
-  Also starting in preview 4, you’ll be able to <strong>publish apps to
-  devices</strong> running Android N at the official API level, such as
-  consumer devices that have opted into the Android Beta program. You can
-  publish into the Google Play alpha and beta channels first, so you can test
-  your apps with Android Beta consumers before distributing broadly on the
-  store.
-</p>
-
-<p>
-  As you test and develop on Android N, we strongly recommend <strong>keeping
-  your development environment up-to-date</strong> as preview updates are
-  released. To make the process easier, you can enroll your test devices in the
-  Android Beta program and get <strong>updates over-the-air (OTA)</strong> at
-  each milestone. Alternatively, updated preview images are available that you
-  download and flash manually.
-</p>
-
-<p>
-  We’ll notify you when preview updates are available via the <a href=
-  "http://android-developers.blogspot.com/">Android Developers Blog</a>, as
-  well as this site and the <a href="{@docRoot}preview/dev-community">Android
-  N Developer Community</a>.
-</p>
-
-
-<h2 id="preview_tools">What's in the N Developer Preview?</h2>
-
-<p>
-  The N Developer Preview includes everything you need to test your existing
-  apps on a variety of screen sizes, network technologies, CPU/GPU chipsets,
-  and hardware architectures.
-</p>
-
-<h3 id="sdk_tools">SDK tools</h3>
-
-<p>You can download these components through the SDK Manager in <a href="{@docRoot}studio/intro/update.html">Android Studio</a>:</p>
-
-<ul>
-  <li> N Developer Preview <strong>SDK and tools</strong>
-  <li> N Developer Preview <strong>emulator system image</strong> (32-bit & 64-bit)
-  <li> N Developer Preview <strong>emulator system Image for Android TV</strong> (32-bit)
-  <li> N Developer Preview support libraries (for new app templates)
-</ul>
-
-<p>
-  We’ll provide updates to these development tools at each milestone as needed.
-</p>
-
-<h3 id="hardware_system_images">Hardware system images</h3>
-
-<p>
-  The N Developer Preview includes Nexus and other hardware system images that you can use when
-  testing and developing on physical devices. See the <a href=
-  "{@docRoot}preview/download.html">Device Images</a> page for the full list
-  of hardware images.
-</p>
-
-<p>
-  We’ll deliver updated system images for these devices at each milestone. You
-  can download and flash the updated system images to your test devices
-  manually, as frequently as you need. This is especially useful for automated
-  testing environments where you might need to reflash your device multiple
-  times.
-</p>
-
-<p class="note"><strong>Note</strong>:
-  <strong>Devices flashed manually will not get OTA updates</strong> like in
-  last year’s preview. This year, you can get OTAs by enrolling devices in the
-  Android Beta Program &mdash; see details in the next section.
-</p>
-
-<h3 id="android_beta">OTA Updates through Android Beta Program</h3>
-
-<p>
-  New for Android N is an Over-the-Air (OTA) update program that automatically
-  delivers the latest preview updates of Android N directly to devices enrolled
-  in the program. The program is free, and it’s open to anyone who has a
-  supported device that’s registered to their Google account.
-</p>
-
-<p>
-  To enroll in the program visit the <a href="https://g.co/androidbeta">Android
-  Beta Program</a> site. You’ll
-  see all of the devices registered to your account that are eligible to enroll
-  in Android Beta.
-</p>
-
-<ol>
-  <li> Choose the devices you want to receive the Android N updates
-  <li> Click Enroll, read and agree to the terms of service, and then click OK
-</ol>
-
-<p>
-  Once you’ve enrolled, your device will soon receive an update. In most cases,
-  you will not need to do a full reset of your data to move to Android N, but
-  it’s recommended that you back up any data you don’t want to lose before
-  enrolling the device.
-</p>
-
-<p>
-  As updates are delivered to your device, we recommend downloading and
-  installing them as soon as possible. You’ll want to stay current with the
-  latest changes in system UI, behavior, APIs, and features.
-</p>
-
-<p>
-  At the conclusion of the Developer Preview, your enrolled devices will
-  receive an update to the official Android N release.
-</p>
-
-<p>
-  You can un-enroll your devices from the Android Beta program at any time from
-  the Android Beta site. Before un-enrolling, make sure to back-up your data on
-  the device.
-</p>
-
-  <p class="note"><strong>Note</strong>:
-  When you un-enroll, <strong>your device will be factory reset</strong>
-  to the latest version
-  of Android 6.0 Marshmallow (not necessarily the version that you had
-  installed prior to enrolling the device). To ensure a clean installation,
-  your data will be erased from the device, including contacts, messages,
-  photos, and so on.
-</p>
-
-<h3 id="documentation_and_sample_code">Documentation and sample code</h3>
-
-<p>
-  These documentation resources are available on the Developer Preview site to
-  help you learn about the Android&nbsp;N:
-</p>
-
-<ul>
-  <li> <a href="{@docRoot}preview/setup-sdk.html">Set Up to Develop for
-Android N</a> has
-  step-by-step instructions for getting started.</li>
-  <li> <a href="{@docRoot}preview/behavior-changes.html">Behavior
-  Changes</a> points you to key areas to test.</li>
-  <li> Documentation of new APIs, including an <a
-  href="{@docRoot}preview/api-overview.html">API Overview</a>, downloadable
-  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
-  Reference</a>, and detailed developer guides on key features such as
-  multi-window support, bundled notifications, multi-locale support, and others.
-  <li> <a href="{@docRoot}preview/samples.html">Sample code</a> that
-  demonstrates how to support permissions and other new features.
-  <li> <a href="{@docRoot}preview/support.html#release-notes">Release notes</a>
-  for the current version of the N Developer Preview, including change notes and
-  diff reports.
-</ul>
-
-<h4 id="reference">Downloadable API Reference</h4>
-
-<p>
-  During the early preview updates, you can download the latest
-  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API Reference
-  for the Android N platform</a> as a separate zip archive. The reference
-  download also includes a diff report that helps you identify API changes from
-  API 23 and the previous update.
-</p>
-
-<p>
-  When the Android N APIs are final and an official API level is assigned,
-  we’ll provide the API reference to you online at <a href=
-  "https://developer.android.com">https://developer.android.com</a>.
-</p>
-
-<h3 id="support_resources">
-  Support resources
-</h3>
-
-<p>
-  As you test and develop on the N Developer Preview, please use these channels
-  to report issues and give feedback.
-</p>
-
-<ul>
-  <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/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
-    a Google+ community where you can <strong>connect with other developers</strong>working with
-    Android N. You can share observations or ideas or find answers to
-    questions about Android N. We’ll moderate the community and provide answers and
-    guidance as needed.</li>
-</ul>
-
-<h3 id="targeting">Targeting, preview APIs, and publishing</h3>
-
-<p>
-  The N Developer Preview provides a development-only system and Android
-  library that <strong>does not have a standard API level</strong>. If you want
-  to opt out of compatibility behaviors to test your app (which is strongly
-  recommended), you can target the preview version of Android N by setting your
-  app's <code><a href=
-  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
-  to <code>“N”</code>.
-</p>
-
-<p>
-  The Android N Developer Preview delivers <strong>preview APIs</strong>
-  &mdash; the APIs will not be official until the final SDK is released,
-  currently planned for the third quarter of 2016. This means that you can
-  <strong>expect minor API changes</strong> over time, especially during
-  initial weeks of the program. We’ll provide a summary of changes to you with
-  each update of the Android N Developer Preview.
-</p>
-
-<p class="note">
-  <strong>Note</strong>: Although preview APIs may change, underlying
-  system behaviors are stable and ready for testing against
-  right away.
-</p>
-
-<p>
-  Google Play <strong>prevents publishing of apps targeting the N Developer
-  Preview</strong>. When the Android N final SDK is available, you’ll be able
-  to target the official Android N API level and publish your app to Google
-  Play via the alpha and beta release channels. Meanwhile, if you want to
-  distribute an app targeting Android N to testers, you can do so via email or
-  by direct download from your site.
-</p>
-
-<p>
-  At the full release of Android N to AOSP and OEMs, planned for Q3 2016,
-  you’ll be able to publish your apps targeting Android N to the public release
-  channel in Google Play.
-</p>
-
-
-<h2 id="how_to_get_started">How to get started</h2>
-
-<p>
-  To get started testing your app with Android N:
-</p>
-
-<ol>
-  <li> Review the <a href="{@docRoot}preview/api-overview.html">API Overview</a>
-  and <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a> to
-  get an idea of what's new and how it affects your apps. In particular,
-  learn about the new <a href="{@docRoot}preview/features/notification-updates.html"
-  >notifications</a> features and
-  <a href="{@docRoot}preview/features/multi-window.html">multi-window support</a>.</li>
-  <li> Set up your environment by following the instructions for <a
-  href="{@docRoot}preview/setup-sdk.html">Setting up the Preview SDK</a>
-  and configuring test devices.</li>
-  <li> Follow the <a href="{@docRoot}preview/download.html">
-  instructions</a> to update your device to the latest build of the N Developer
-  Preview. The easiest way is to enroll your device in
-  <a href="https://www.google.com/android/beta">Android Beta</a> program. </li>
-  <li> Review the <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>
-  and <a href="{@docRoot}preview/samples.html">Android N samples</a> to gain more
-  insight into new API features and how to use them in your app.
-  <li> Join the <a href="{@docRoot}preview/dev-community">Android N
-  Developer Community</a> to get the latest news and connect with other
-  developers working with the new platform.</li>
-</ol>
-
-<p>
-  Thank you for your participation in the Android N Developer Preview program!
-</p>
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
deleted file mode 100644
index 34d00a4..0000000
--- a/docs/html/preview/preview_toc.cs
+++ /dev/null
@@ -1,235 +0,0 @@
-<ul id="nav">
-
-  <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>
-  </li>
-
-
-  <li class="nav-section">
-    <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 the Preview</a></div>
-  </li>
-
-  <li class="nav-section">
-    <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>
-
-
-  <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"
-              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"
-              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"
-              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"
-              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/tv-recording-api.html"
-              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"
-              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"
-              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/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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  <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"
-      ru-lang="Примеры"
-      zh-cn-lang="示例"
-      zh-tw-lang="範例">
-      Samples</a></div>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/license.html"
-      es-lang="Contrato de licencia"
-      ja-lang="使用許諾契約"
-      ko-lang="라이선스 계약"
-      pt-br-lang="Contrato de licença"
-      ru-lang="Лицензионное соглашение"
-      zh-cn-lang="许可协议"
-      zh-tw-lang="授權協議">
-      License Agreement</a></div>
-  </li>
-
-</ul>
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
deleted file mode 100644
index ff11e8e..0000000
--- a/docs/html/preview/setup-sdk.jd
+++ /dev/null
@@ -1,175 +0,0 @@
-page.title=Set Up the 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">Get Android Studio 2.1</a></li>
-  <li><a href="#get-sdk">Get the Android N SDK</a>
-    <ol>
-      <li><a href="#docs-dl">Reference documentation</a>
-    </ol>
-  </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>
-  </div>
-</div>
-
-<p>To develop apps for the Android N Preview, you need to make some updates
-to your developer environment, as described on this page.</p>
-
-<p>To simply test your app's compatibility on the
-Android N system image, follow the guide to <a
-href="{@docRoot}preview/download.html">Test on an Android N Device</a>.</p>
-
-<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
-
-
-<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>,
-which require a new compiler called Jack. The latest version of Jack
-is currently supported only in Android Studio 2.1. So if you want to
-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>
-
-<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>If you don't have it, <a href="{@docRoot}studio/">download Android Studio
-2.1 here</a>.</p>
-
-
-<h2 id="get-sdk">Get the N Preview SDK</h2>
-
-<p>To start developing with Android N APIs, you need to install the
-Android N Preview SDK in Android Studio as follows:</p>
-
-<ol>
-  <li>Open the SDK Manager by clicking <strong>Tools > Android >
-  SDK Manager</strong>.</li>
-
-  <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
-    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
-    Platform-Tools</strong>, and <strong>Android SDK Tools</strong> check
-    boxes.
-  </li>
-
-  <li>Click <strong>OK</strong>, then accept the licensing
-    agreements for any packages that need to be installed.
-  </li>
-</ol>
-
-<h3 id="docs-dl">Get the N Preview reference documentation</h3>
-
-<p>Beginning with the Preview 4 release, the API reference for the
-  N platform (API level 24) is now available online at <a href=
-  "{@docRoot}reference/">developer.android.com/reference/</a>. There is also
-  an incremental diff report for <a href="{@docRoot}sdk/api_diff/24/changes.html"
-  >API changes between API levels 23 and 24</a>.</p>
-
-<h2 id="java8">Get the Java 8 JDK</h2>
-
-<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>
-
-<ol>
-  <li>Open an Android project in Android Studio, then open the
-    Project Structure dialog by selecting <strong>File &gt;
-        Project Structure</strong>. (Alternatively, you can set the default
-        for all projects by selecting <strong>File &gt; Other Settings &gt;
-        Default Project Structure</strong>.)
-   </li>
-   <li>In the left panel of the dialog, click <strong>SDK Location</strong>.
-   </li>
-   <li>In the <strong>JDK Location</strong> field, enter the location of the
-    Java 8 JDK (click the button on the right
-    to browse your files), then click <strong>OK</strong>.
-   </li>
-</ol>
-
-<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700"
-  alt="" />
-
-
-<h2 id="create-update">Update or Create a Project</h2>
-
-<p>Now that the N platform API level is "24" instead
-of "N", you can configure your projects normally with this API level (and even
-publish your apps compiled with API 24 on Google Play). Just be sure that you've
-updated your project to use <strong>Android SDK Build Tools 24.0.0</strong> and
-<strong>Android SDK Platform-Tools 24.0.0</strong>.</p>
-
-<p>If you plan to use Java 8 language features, you should also read
-<a href="{@docRoot}preview/j8-jack.html">Java 8 Language Features</a>
-for information about the supported Java 8 features and
-how to configure your project with the Jack compiler.</p>
-
-
-<h3 id="update">Update an existing project</h3>
-
-<p>Open the
-  <code>build.gradle</code> file for your module and update the values as
-  follows:
-</p>
-
-<pre>
-android {
-  compileSdkVersion <strong>24</strong>
-  buildToolsVersion <strong>'24.0.0'</strong>
-  ...
-
-  defaultConfig {
-     targetSdkVersion <strong>24</strong>
-     ...
-  }
-  ...
-}</pre>
-
-<p>Now that the API level 24 is final, you can compile against it and keep your
-<code>minSdkVersion</code> to whatever version is appropriate for your app.</p>
-
-
-<h3 id="create">Create a new project</h3>
-
-
-<p>To create a new project for development with the Android N Preview SDK:</p>
-
-<ol>
-  <li>Click <strong>File > New Project</strong>. and follow the steps until
-  you reach the <strong>Target Android Devices</strong> page.
-  </li>
-  <li>On this page, select the <strong>Phone and Tablet</strong> check box.</li>
-  <li>Under <strong>Phone and Tablet</strong> option, in the <strong>Minimum
-    SDK</strong> option list, select
-    <strong>API 24: Android 6.X (N Preview)</strong>.</li>
-</ol>
-
-
-<h2 id="next">Next Steps</h2>
-
-<ul>
-  <li>Follow the guide to <a
-href="{@docRoot}preview/download.html">Test on an Android N Device</a>.</li>
-  <li>Learn more about the Android N platform with
-<a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a>
-and <a href="{@docRoot}preview/api-overview.html">Android N APIs
-and Features</a>.</li>
-</ul>
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
deleted file mode 100644
index 0d0d9db..0000000
--- a/docs/html/preview/support.jd
+++ /dev/null
@@ -1,1698 +0,0 @@
-page.title=Support and Release Notes
-meta.keywords="preview", "android"
-page.tags="preview", "developer preview"
-page.image=images/cards/card-n-support_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ul>
-  <li><a href="#dp5">Developer Preview 5</a>
-    <ul>
-      <li><a href="#general">General advisories</a></li>
-      <li><a href="#new">New in DP5</a></li>
-      <li><a href="#ki">Known issues</a></li>
-      <li><a href="#upgrade-notes">Notes on publishing apps
-      that target API 24</a></li>
-    </ul>
-  </li>
-  <li><a href="#dp4">Developer Preview 4</a></li>
-  <li><a href="#dp3">Developer Preview 3</a></li>
-  <li><a href="#dp2">Developer Preview 2</a></li>
-  <li><a href="#dp1">Developer Preview 1</a></li>
-</ul>
-
-<!--
-<h2>See Also</h2>
-<ol>
-  <li></li>
-</ol>
--->
-
-</div>
-</div>
-
-<p>
-  Two primary support channels are available to you when developing and testing
-  with the Android N Developer Preview: Please file bugs at <a href=
-  "https://developer.android.com/preview/bug"
-  >https://developer.android.com/preview/bug</a> for
-  device-specific, system, and Google App bugs. For issues in other apps,
-  please contact the developer directly.
-</p>
-
-<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="dp5">Developer Preview 5</h2>
-
-<div class="cols">
-  <div class="col-6of12">
-    <p>
-      <em>Date: July 2016<br>
-      Build: NPD90G<br>
-      Emulator support: x86 &amp; ARM (32/64-bit)<br>
-      Google Play services: 8.4</em>
-    </p>
-  </div>
-</div>
-
-<h3 id="general">General advisories</h3>
-
-<p>
-  This Developer Preview release is for <strong>app developers and other early
-  adopters</strong> and is available for daily use, development, or
-  compatibility testing. Please be aware of these general notes about the
-  release:
-</p>
-
-<ul>
-  <li>This release may have various <strong>stability issues</strong> on
-  supported devices.
-  </li>
-
-  <li>Some apps <strong>may not function as expected</strong> on the new
-  platform version. This includes Google’s apps as well as other apps.
-  </li>
-
-  <li>Developer Preview 5 is <strong>Compatibility Test Suite (CTS)
-  approved</strong> on these devices: Nexus 5X, Nexus 6, Nexus 6P, Nexus 9,
-  and Pixel C. Apps that depend on CTS approved builds should work normally
-  on these devices (Android Pay for example).
-  </li>
-
-  <li>Developer Preview 5 is <strong>available</strong> on Nexus 5X, Nexus 6, Nexus 6P,
-  Nexus 9, Nexus Player, Pixel C, and General Mobile 4G (Android One).
-  </li>
-</ul>
-
-
-<h3 id="new">New in DP5</h3>
-
-<h4>Updated system images for supported devices and emulator</h4>
-
-<p>
-  Developer Preview 5 includes <a href=
-  "{@docRoot}preview/download.html"><strong>near-final system
-  images</strong></a> for supported devices and the Android emulator. The
-  images include the final APIs (API level 24) for the upcoming Android N
-  platform. When you are done testing, you can publish apps using API
-  level 24 to Google Play, in alpha, beta, and production release channels.
-</p>
-
-
-<!--
-
-<h4 id="api-changes">Feature and API changes</h4>
-
-<ul>
-  <li>TODO</li>
-</ul>
-
--->
-
-<h3 id="ki">Known Issues</h3>
-
-<h4>Stability</h4>
-
-<ul>
-  <li>Users may encounter system instability (such as kernel panics and
-  crashes).
-  </li>
-</ul>
-
-<h4>Multi-window</h4>
-<ul>
-  <li>MapView may be blank when resized in multi-window mode and not focused.
-  </li>
-</ul>
-
-<h4>Do Not Disturb</h4>
-<ul>
-  <li>Do Not Disturb mode may be set at device reboot. To work around
-  the issue, delete the existing rule for VR as follows: go to
-  <strong>Settings > Sound > Do not disturb > Automatic Rules</strong>
-  and tap the trash icon next to the VR rule.
-  </li>
-</ul>
-
-<h4>Screen zoom and multiple APKs in Google Play</h4>
-<ul>
-  <li>On devices running Developer Preview 5, Google Play services 9.0.83
-  incorrectly reports the current screen density rather than the stable screen
-  density. When screen zoom is enabled on these devices, this can cause Google
-  Play to select a version of a multi-APK app that’s designed for smaller
-  screens. This issue is fixed in the next version of Google Play services.
-  </li>
-</ul>
-
-<h4>Vulkan support and multiple APKs in Google Play</h4>
-<ul>
-  <li>On devices running Developer Preview 5, Google Play services 9.0.83
-  currently reports Vulkan support but not Vulkan version. This can cause
-  Google Play to select a version of a multi-APK app that’s designed for lower
-  Vulkan support on devices with higher version support. Currently, the Google
-  Play Store does not accept uploads of Apps which use Vulkan version
-  targeting. This support will be added to the Google Play Store in the
-  future any Android N devices using the Google Play services 9.0.83 will
-  continue to receive versions of Apps targeting basic Vulkan support.
-  </li>
-</ul>
-
-<h4>Android Auto</h4>
-<ul>
-  <li>The version of Google Maps included in Developer Preview 5 (9.30)
-  crashes when used with Android Auto. This issue will be fixed in the
-  next update to Google Maps (9.31), expected in the coming weeks.
-  </li>
-</ul>
-
-
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-<!-- TBA, if any
-
-<h4 id="dp5-fixes">Fixes for issues reported by developers</h4>
-
-<p>
-  A number of issues reported by developers have been fixed, including:
-</p>
-
-<ul>
-  <li>TODO</li>
-</ul>
-
--->
-
-<h3 id="upgrade-notes">Notes on publishing apps that target API 24</h3>
-
-<p>
-  Before publishing apps that target API 24 in Google Play, keep these points
-  in mind:
-</p>
-
-<ul>
-  <li>If your app’s current <code>targetSdkVersion</code> is 22 or lower and
-  you want to target API 24, you’ll need to support <a href=
-  "{@docRoot}about/versions/marshmallow/android-6.0-changes.html">behaviors
-  introduced with Android 6.0 (Marshmallow)</a>, such as <a href=
-  "{@docRoot}training/permissions/requesting.html">runtime permissions</a>, in
-  addition to Android N behaviors.
-  </li>
-
-  <li>Once you publish an app with <code>targetSdkVersion</code> set to 23 or
-  higher, you can't later publish a version of the app with a higher
-  <code>versionCode</code> that targets 22 or lower. This restriction applies
-  in alpha and beta channels as well as production channel.
-  </li>
-</ul>
-
-
-<!-- DP4 Release Notes Archive -->
-
-<h2 id="dp4">Developer Preview 4</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Date: June 2016<br>
-        Build: NPD56N<br>
-        Emulator support: x86 &amp; ARM (32/64-bit)<br>
-        Google Play services: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp4-general">General advisories</h3>
-
-<p>
-  This Developer Preview release is for <strong>app developers and other early
-  adopters</strong> and is available for daily use, development, or
-  compatibility testing. Please be aware of these general notes about the
-  release:
-</p>
-
-<ul>
-  <li>This release may have various <strong>stability issues</strong> on
-  supported devices.
-  </li>
-
-  <li>Some apps <strong>may not function as expected</strong> on the new
-  platform version. This includes Google’s apps as well as other apps.
-  </li>
-
-  <li>Developer Preview 4 is <strong>Compatibility Test Suite (CTS)
-  approved</strong> on these devices: Nexus 5X, Nexus 6, Nexus 6P, and
-  Pixel C. Apps that depend on CTS approved builds should work normally
-  on these devices (Android Pay for example).
-  </li>
-
-  <li>Developer Preview 4 is <strong>available on all supported
-  devices:</strong> Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player,
-  Pixel C, General Mobile 4G (Android One), as well as Sony Xperia Z3
-  (D6603 and D6653 models).
-  </li>
-</ul>
-
-
-<h3 id="dp4-new">New in DP4</h3>
-
-<h4>Android N final APIs</h4>
-
-<p>
-  Developer Preview 4 includes the <strong>final APIs</strong> for the upcoming
-  Android N platform. The new API level is 24.
-</p>
-
-<h4>Play publishing</h4>
-
-<p>
-  You can now publish apps that use <strong>API level 24</strong> to Google
-  Play, in alpha, beta, and production release channels.
-</p>
-
-<h4>Android Studio and tools updates</h4>
-
-<p>
-  Along with Developer Preview 4 we’re providing the <strong>final API 24
-  SDK</strong> to be used with Android Studio 2.1.2 and higher. In addition,
-  we’re releasing updated Developer Preview 4 system images for the emulator to
-  help test your apps.
-</p>
-
-<p>
-  As new updates roll out for Android Studio, you should see minor improvements in
-  the new project wizards and AVD manager as we add enhanced support for API 24.
-  These are primarily cosmetic changes and should not stop you from getting
-  your app ready for an update in the Play store.
-</p>
-
-<h4 id="dp4-api-changes">Feature and API changes</h4>
-
-<ul>
-  <li>In previous versions of Android, an app activates with all of its locale
-  resources loaded before locale negotiation begins. Starting in Android N DP4,
-  the system negotiates resource locales individually for each resource object
-  before the app activates.
-  </li>
-
-  <li>As announced at Developer Preview 3, we’ve deferred the Launcher
-  Shortcuts feature to a later release of Android. In Developer Preview 4,
-  we’ve removed the Launcher Shortcuts APIs.
-  </li>
-
-  <li>We’ve changed the BLE Scanning behavior starting in DP4. We’ll prevent
-  applications from starting and stopping scans more than 5 times in 30
-  seconds. For long running scans, we’ll convert them into opportunistic scans.
-  </li>
-
-  <li>The <a href=
-  "{@docRoot}preview/features/multi-window.html">Multi-Window</a>
-  <code>android:minimalHeight</code> and <code>android:minimalWidth</code>
-  attributes have been renamed to <code>android:minHeight</code> and
-  <code>android:minWidth</code>.
-  </li>
-</ul>
-
-<h3 id="dp4-ki">Known Issues</h3>
-
-<h4>Stability</h4>
-
-<ul>
-  <li>Users may encounter system instability (such as kernel panics and
-  crashes).
-  </li>
-</ul>
-
-<h4>Launcher</h4>
-
-<ul>
-  <li>The default launcher’s <strong>All Apps</strong> tray may become
-  unresponsive after cycling the screen off and on. Returning to the
-  homescreen and relaunching the <strong>All Apps</strong> tray may resolve
-  this issue.
-  </li>
-</ul>
-
-<h4>Setup Wizard</h4>
-
-<ul>
-  <li>Crash on selecting "Not now" in "Set up email" screen.
-  </li>
-</ul>
-
-<h4>Media</h4>
-
-<ul>
-  <li>Media playback may be unreliable on Nexus 9 and Nexus Player, including
-  issues playing HD video.
-  </li>
-
-  <li>Occasional freeze when running the YouTube app with other apps in
-  multi-window mode on Pixel C devices. In some cases hard reboot is required.
-  </li>
-
-  <li>Apps may have issues playing some Widevine DRM-protected content on Nexus
-  9 devices.
-  </li>
-
-  <li>Issues handling VP8 video on Nexus 9 devices.
-  </li>
-</ul>
-
-<h4>External storage</h4>
-
-<ul>
-  <li>Apps may become unstable when the user moves them from internal storage
-  to adoptable external storage (this can include SD card or devices attached
-  over USB).
-  </li>
-</ul>
-
-<h4>Screen zoom and multiple APKs in Google Play</h4>
-
-<ul>
-  <li>On devices running Android N, Google Play services 9.0.83 incorrectly
-  reports the current screen density rather than the stable screen density.
-  When screen zoom is enabled on these devices, this can cause Google Play to
-  select a version of a multi-APK app that’s designed for smaller screens. This
-  issue is fixed in the next version of Google Play services and will be
-  included in a later Developer Preview release.
-  </li>
-</ul>
-
-<h4>Vulkan support and multiple APKs in Google Play</h4>
-
-<ul>
-  <li>On devices running Android N, Google Play services 9.0.83 currently
-  reports Vulkan support but not Vulkan version. This can cause Google Play to
-  select a version of a multi-APK app that’s designed for lower Vulkan support
-  on devices with higher version support. Currently, the Google Play Store does
-  not accept uploads of apps which use Vulkan version targeting. This support
-  will be added to the Google Play Store in the future and fixed in the next
-  version of Google Play services (to be included in a later Developer Preview
-  release). Any N devices using the version of Google Play services 9.0.83 will
-  continue to receive versions of apps targeting basic Vulkan support.
-  </li>
-</ul>
-
-<h4>Accessibility</h4>
-<ul>
-  <li>Switch access doesn't allow user to navigate web pages in Chrome.
-  </li>
-
-  <li>Accessibility issues for talkback users with notification dismissal, and
-  wifi selection screen.
-  </li>
-</ul>
-
-<h4>Android for Work</h4>
-
-<ul>
-  <li>Currently, CA certificates provisioned through {@link
-  android.app.admin.DevicePolicyManager} are not
-  available to profiles other than the primary user/profile due to a preload
-  issue. For example, this could prevent a user from connecting to a trusted
-  server when in a Work profile. This issue will be resolved in the next
-  Developer Preview.
-  </li>
-
-  <li>After reboot with work mode off, solving work challenge does not switch
-  on work mode.
-  </li>
-
-  <li>Users receiving a video call in Hangouts have to unlock work challenge
-    first.
-  </li>
-
-  <li>Accessing Settings &gt; Security &gt; Device Security crash observed when
-  separating primary and work challenge.
-  </li>
-
-  <li>If {@link android.os.UserManager#DISALLOW_CONFIG_VPN} is set before
-  calling {@link android.app.admin.DevicePolicyManager#setAlwaysOnVpnPackage
-  DevicePolicyManager.setAlwaysOnVpnPackage()}, then setting always on VPN does
-  not work. That is, after rebooting the device with the {@link
-  android.os.UserManager#DISALLOW_CONFIG_VPN} restriction set, VPN is not
-  autostarted.
-  </li>
-</ul>
-
-<h4>Android Auto</h4>
-
-<p>
-  The version of Google Maps included in Developer Preview 4 (9.30) crashes
-  when used with Android Auto. This issue will be fixed in the next update to
-  Google Maps (9.31), expected in the coming weeks.
-</p>
-
-
-<!-- TBA, if any
-<h4>Device-specific issues</h4>
-
-<dl>
-  <dt>
-    <strong>Device Name</strong>
-  </dt>
-
-  <dd>
-    Issue 1
-  </dd>
-
-  <dd>
-    Issue 2
-  </dd>
-</dl>
-
--->
-
-
-<h4 id="dp4-fixes">Fixes for issues reported by developers</h4>
-
-<p>
-  A number of issues reported by developers have been fixed, including:
-</p>
-
-<ul>
-  <li>The active network state ({@link android.net.NetworkInfo#getState
-  NetworkInfo.getState()} and {@link android.net.NetworkInfo#getDetailedState
-  NetworkInfo.getDetailedState()}) might return incorrect values during some
-  restricted background scenarios
-  </li>
-
-  <li>Data Saver restricts the foreground MMS mobile network request
-    (<a href="https://code.google.com/p/android/issues/detail?id=208478">bug
-    208478</a>)
-  </li>
-
-  <li>Quick settings tiles and notifications sometimes unresponsive
-  </li>
-
-  <li>Unable to dismiss Clock notifications
-  </li>
-
-  <li>Duplication of bluetooth icon and other status icons
-  </li>
-
-  <li>Additional bluetooth connectivity fixes
-  </li>
-
-</ul>
-
-<p>For the full list of fixed issues, see <a href="https://goo.gl/6uCKtf">the
-issue tracker</a>.</p>
-
-<h3 id="dp4-upgrade-notes">Notes on publishing apps that target API 24</h3>
-
-<p>
-  Before publishing apps that target API 24 in Google Play, keep these points
-  in mind:
-</p>
-
-<ul>
-  <li>If your app’s current <code>targetSdkVersion</code> is 22 or lower and
-  you want to target API 24, you’ll need to support <a href=
-  "{@docRoot}about/versions/marshmallow/android-6.0-changes.html">behaviors
-  introduced with Android 6.0 (Marshmallow)</a>, such as <a href=
-  "{@docRoot}training/permissions/requesting.html">runtime permissions</a>, in
-  addition to Android N behaviors.
-  </li>
-
-  <li>Once you publish an app with <code>targetSdkVersion</code> set to 23 or
-  higher, you can't later publish a version of the app with a higher
-  <code>versionCode</code> that targets 22 or lower. This restriction applies
-  in alpha and beta channels as well as production channel.
-  </li>
-</ul>
-
-<!-- DP3 Release Notes Archive -->
-
-<h2 id="dp3">Developer Preview 3</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Date: May 2016<br>
-        Build: NPD35K<br>
-        Emulator support: x86 &amp; ARM (32/64-bit)<br>
-        Google Play services: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp3-general">General advisories</h3>
-
-<p>
-  This Developer Preview release is for <strong>app developers and other early
-  adopters</strong> and is available for daily use, development, or
-  compatibility testing. Please be aware of these general notes about the
-  release:
-</p>
-
-<ul>
-  <li>This release may have various <strong>stability issues</strong> on
-    supported devices. Users may encounter system instability, such as kernel
-    panics and crashes.
-  </li>
-
-  <li>Some apps <strong>may not function as expected</strong> on the new
-  platform version. This includes Google’s apps as well as other apps.
-  </li>
-
-  <li>Developer Preview 3 is <strong>Compatibility Test Suite (CTS)
-  approved</strong> on these devices: Nexus 5X, Nexus 6, Nexus 6P, and Pixel
-  C. Apps that depend on CTS approved builds should
-  work normally on these devices (Android Pay for example).
-  </li>
-
-  <li>Developer Preview 3 is <strong>available on all supported
-  devices:</strong> Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player, Pixel
-  C, General Mobile 4G (Android One), as well as Sony Xperia Z3 (D6603 and
-  D6653 models).
-
-  </li>
-</ul>
-
-
-<h3 id="dp3-new">New in DP3</h3>
-
-<h4>VR Mode for Android</h4>
-
-<p>
-  Android N adds platform support and optimizations for a new VR Mode to let
-  developers build high quality mobile VR experiences for users. There are a
-  number of performance enhancements, including access to an exclusive CPU core
-  for VR apps. Within your apps, you can take advantage of intelligent
-  head-tracking, and stereo notifications that work for VR. Most importantly,
-  Android N provides for very low latency graphics.
-</p>
-
-<p>
-  For more information, see the <a href=
-  "https://developers.google.com/vr/android/">Google VR SDK for Android</a>.
-</p>
-
-<h4>Sustained performance mode</h4>
-
-<p>
-  Android N includes optional support for <a href=
-  "{@docRoot}preview/api-overview.html#sustained_performance_api">sustained
-  performance mode</a>, enabling OEMs to provide hints on device performance
-  capabilities for long running applications. App developers can then use these
-  hints to tune applications for a predictable, consistent level of device
-  performance over long periods of time. App developers can try out this new
-  API in the developer preview on Nexus 6P devices only.
-</p>
-
-<h4>Multiprocess WebView</h4>
-
-<p>
-  Starting with version 51 in Android N, WebView will run web content in a
-  separate sandboxed process when the developer option "Multiprocess WebView"
-  is enabled. The WebView team is looking for feedback on compatibility and
-  runtime performance in N before enabling multiprocess WebView in a future
-  version of Android. In this version, regressions in startup time, total
-  memory usage and software rendering performance are expected.
-</p>
-
-<p>
-  If you find unexpected issues in multiprocess mode we’d like to hear about
-  them. Please get in touch with the WebView team by <a href=
-  "https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">
-  filing a bug</a>.
-</p>
-
-<h4>Keyboard Shortcuts helper</h4>
-
-<p>
-  Android N lets users press <code>Meta+/</code> to trigger a <strong>Keyboard
-  Shortcuts</strong> screen that displays all shortcuts available both from the
-  system and from the app in focus. Developers can add their own shortcuts or
-  trigger the Shortcuts screen from their apps. See <a href=
-  "{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Keyboard
-  Shortcuts helper</a> for details.
-</p>
-
-<h4>FrameMetrics API</h4>
-
-<p>
-  DP3 introduces a new <a href=
-  "{@docRoot}preview/api-overview.html#framemetrics_api">FrameMetrics API</a>
-  that allows an app to monitor its UI rendering performance by exposing a
-  streaming pubsub API to transfer frame timing info for the application’s
-  current window. <code>FrameMetricsListener</code> can be used to measure
-  interaction-level UI performance in production with higher granularity and
-  without the need for a USB connection.
-</p>
-
-<h4 id="dp3-api-changes">Feature and API changes</h4>
-
-<dl>
-  <dt>
-    Launcher Shortcuts and the Launcher Shortcuts API
-  </dt>
-
-  <dd>
-    We’ve decided to defer this feature to a future release of Android. We plan
-    to remove the Launcher Shortcuts APIs (ShortcutManager and others) from the
-    public Android N API starting in the next developer preview.
-  </dd>
-
-  <dt>
-    WebView Javascript run before page load
-  </dt>
-
-  <dd>
-    Starting with apps targeting Android N, the Javascript context is reset
-    when a new page is loaded. Currently, the context is carried over for the
-    first page loaded in a new {@link android.webkit.WebView} instance.
-    Developers looking to inject Javascript into the {@link
-    android.webkit.WebView} should execute the script after the page has
-    started to load.
-  </dd>
-
-  <dt>
-    WebView Geolocation on insecure origins
-  </dt>
-
-  <dd>
-    Starting with apps targeting Android N, the geolocation API will only be
-    allowed on secure origins (over HTTPS.) This policy is designed to protect
-    users' private information when they're using an insecure connection.
-  </dd>
-
-  <dt>
-    Data Saver
-  </dt>
-
-  <dd>
-    Starting in Developer Preview 3, apps can use use an intent to display a
-    system dialog that lets the user directly add the app to the Data Saver
-    exemption whitelist. See the <a href=
-    "{@docRoot}preview/api-overview.html#data_saver">Data Saver
-    documentation</a> for details.
-  </dd>
-
-  <dt>
-    <a href=
-    "{@docRoot}preview/api-overview.html#number-blocking">Number-blocking</a>
-  </dt>
-
-  <dd>
-    If an unauthorized user attempts to block or unblock a number, the
-    operation now fails with {@link java.lang.SecurityException}. (Previously,
-    the operation threw {@link java.lang.UnsupportedOperationException}.)
-  </dd>
-
-  <dt>
-    <a href="{@docRoot}preview/api-overview.html#tile_api">Quick Settings Tile
-    API</a>
-  </dt>
-
-  <dd>
-    The system now uses the activity's metadata to decide on the tile mode.
-    (Previously, tile mode was determined by the return value of
-    <code>TileService.onTileAdded()</code>.) For more information, see
-    <code>TileService.META_DATA_ACTIVE_TILE</code> in the downloadable <a href=
-    "{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>.
-  </dd>
-</dl>
-
-<h4 id="dp3-fixes">Fixes for issues reported by developers</h4>
-
-<p>
-  A number of issues reported by developers have been fixed, including:
-</p>
-
-<ul>
-  <li>Bluetooth Audio playback interrupted after 1 song (bug <a href=
-  "https://code.google.com/p/android/issues/detail?id=206889">206889</a>)
-  </li>
-
-  <li>Pixel C Consistently Crashes (bug <a href=
-  "https://code.google.com/p/android/issues/detail?id=206962">206962</a>)
-  </li>
-
-  <li>Clock and Toast notification issues (bug <a href=
-  "https://code.google.com/p/android/issues/detail?id=203094">203094</a>)
-  </li>
-
-  <li>Pixel C reboots when connected to MacBook Pro via USB C Cable (bug
-  <a href=
-  "https://code.google.com/p/android/issues/detail?id=205432">205432</a>)
-  </li>
-
-  <li>Calandar offset by one day (bug <a href=
-  "https://code.google.com/p/android/issues/detail?id=203002">203002</a>)
-  </li>
-
-  <li>TelephonyManager.getAllCellInfo returning invalid data (bug <a href=
-  "https://code.google.com/p/android/issues/detail?id=203022">203022</a>)
-  </li>
-
-  <li>Nexus 6p, Bluetooth keeps disconnecting (bug <a href=
-  "https://code.google.com/p/android/issues/detail?id=208062">208062</a>)
-  </li>
-</ul>
-
-<p>For the full list of fixed issues, see <a href="https://goo.gl/6uCKtf">the
-issue tracker</a>.</p>
-
-<h3 id="dp3-ki">Known Issues</h3>
-
-<h4>Accessibility</h4>
-
-<ul>
-  <li>Unable to listen to TTS output when pitch is set near maximum level.
-  </li>
-
-  <li>Accessibility features and settings may be disrupted with the user adds a
-  Work profile, including magnification gesture and setting. Accessibility
-  state is restored when the user next touches the associated settings.
-  </li>
-</ul>
-
-<h4>Camera</h4>
-
-<ul>
-  <li>The Camera app has exhibited instability; it may crash in various
-    circumstances, such as when launched in multi-window mode.
-  </li>
-
-  <li>Pressing the shutter continuously in panorama mode may cause the Camera
-  app to crash.
-  </li>
-</ul>
-
-<h4>Audio</h4>
-<ul>
-  <li>A platform audio player issue prevents some apps from functioning
-  normally. For example, Skype and other apps are affected by this issue.
-  </li>
-</ul>
-
-<h4>Connectivity</h4>
-
-
-<ul>
-  <li>When a Bluetooth Low Energy (BLE) peripheral role device advertises a
-  service and a BLE central role device connects, the peripheral role device
-  disconnects very quickly.
-  </li>
-
-  <li>Wi-Fi connection may be dropped when the screen is off.
-  </li>
-
-  <li>RFCOMM connections are unstable and may result in data corruption and
-  dangling connections.
-  </li>
-
-  <li>The active network state ({@link android.net.NetworkInfo#getState
-  NetworkInfo.getState()} and {@link android.net.NetworkInfo#getDetailedState
-  NetworkInfo.getDetailedState()}) might return incorrect values during some
-  restricted background scenarios.
-  </li>
-</ul>
-
-
-<h4>
-  Launcher
-</h4>
-
-<ul>
-  <li>The default launcher’s All Apps tray may become unresponsive after
-  cycling screen off / screen on. Returning to the homescreen and relaunching
-  the All Apps tray may resolve this issue.
-  </li>
-</ul>
-
-<h4>
-  Keyboard
-</h4>
-
-<ul>
-  <li>When updating a device running Android 6.0 or earlier to the N Developer
-  Preview, Google Keyboard does not preserve preferences data such as recent
-  emoji and sound settings.
-  </li>
-
-  <li>Google Indic Managed Keyboard may be unstable.
-  </li>
-
-  <li>When entering text in a password field, the user can select Russian as
-  the input language but the keyboard remains in English. This prevents the
-  user from entering Russian-language passwords.
-  </li>
-</ul>
-
-<h4>
-  Locale and languages
-</h4>
-
-<ul>
-  <li>When using a right-to-left (RTL) locale, the system may unexpectedly
-  switch to left-to-right (LTR) presentation after restarting the device.
-  </li>
-</ul>
-
-<h4>Media</h4>
-
-<ul>
-  <li>Media playback be be unreliable on Nexus 9 and Nexus Player, including
-  issues playing HD video.
-  </li>
-</ul>
-
-<h4>
-  Multi-window mode
-</h4>
-
-<ul>
-  <li>Device may freeze when changing orientation in multi-window mode.
-  </li>
-
-  <li>Several apps currently have issues with multi-window mode:
-    <ul>
-      <li>The system UI may crash when docking Settings &gt; Display &gt;
-      Screen brightness to multi-window.
-      </li>
-
-      <li>The Camera app may crash when launched in multi-window mode.
-      </li>
-
-      <li>YouTube may crash when launched into multi-window mode. To fix the
-      issue, you can clear the YouTube app’s data at Storage &gt; Apps &gt;
-      YouTube.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>
-  Google Play services
-</h4>
-
-<ul>
-  <li>Apps using Google Cast through Google Play services may be unstable when
-  the user selects a system locale that uses letters and numbers outside of the
-  ASCII range.
-  </li>
-</ul>
-
-<h4>
-  Android for Work and Google Apps Device Policy
-</h4>
-
-<ul>
-  <li>The Device Policy app may crash when the user unlocks the device with the
-  "device policy status" screen pinned.
-  </li>
-
-  <li>After setting up a work profile with file-based encryption enabled and
-  then turning off Work, users must unlock primary profile screen lock to once
-  again access Work apps.
-  </li>
-
-  <li>Device reboots when removing the security pattern lock and opening work
-  app/personal app in the multi-window.
-  </li>
-
-  <li>Setting DISALLOW_VPN_CONFIG is causing the consent dialog to appear in
-  always-on-vpn set by Device Policy Client.
-  </li>
-
-  <li>Traffic is not locked down until VPN is connected in always-on-vpn mode.
-  </li>
-</ul>
-
-<h4>
-  External storage
-</h4>
-
-<ul>
-  <li>Apps may become unstable when the user moves them from internal storage
-  to adoptable external storage (this can include SD card or devices attached
-  over USB).
-  </li>
-</ul>
-
-<h4>
-  Screen zoom and multiple APKs in Google Play
-</h4>
-
-<ul>
-  <li>On devices running Android N, Google Play services 9.0.83 incorrectly reports
-  the current screen density rather than the stable screen density. When screen
-  zoom is enabled on these devices, this can cause Google Play to select a
-  version of a multi-APK app that’s designed for smaller screens. This issue is
-  fixed in the next version of Google Play services and will be included in a
-  later Developer Preview release.
-  </li>
-
-  <li>On devices running Android N, Google Play services 9.0.83 currently reports
-  Vulkan support but not Vulkan version. This can cause Google Play to select a
-  version of a multi-APK app that’s designed for lower Vulkan support on
-  devices with higher version support. Currently, the Google Play Store does
-  not accept uploads of Apps which use Vulkan version targeting. This support
-  will be added to the Google Play Store in the future and fixed in the next
-  version of Google Play services (to be included in a later Developer Preview
-  release) any N devices using the version of Google Play services 9.0.83 will
-  continue to receive versions of Apps targeting basic Vulkan support.
-  </li>
-</ul>
-
-<h4>Notifications</h4>
-
-<ul>
-  <li>MessagingStyle does not show notifications with "null" (self) sender.
-  </li>
-</ul>
-
-<h4>Developer Tools</h4>
-
-<ul>
-  <li>
-    <code>adb</code> may sometimes disconnect while using JDWP debugging.
-  </li>
-</ul>
-
-
-<!-- DP2 Release Notes Archive -->
-
-<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="dp2-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="dp2-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="dp2-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>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-6of12">
-      <p>
-        <em>Date: March 2016<br>
-        Builds: NPC56P, NPC56R, updated: NPC56W, NPC56X<br>
-        Emulator support: x86 &amp; ARM (32/64-bit)<br>
-        Google Play services: 8.4</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<h3 id="dp1-general">General advisories</h3>
-
-<p>
-  This Developer Preview release is for app developers only 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>This release has various stability and performance issues on all devices
-  that make it <em>not suitable for daily use on phone or tablet</em>,
-  especially for non-developers.
-  </li>
-
-  <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>
-
-  <li>Battery life may be regressed in this release for screen-on and
-  screen-off use cases.
-  </li>
-
-  <li>Some apps may not function normally on Developer Preview 1. This includes
-  Google’s apps as well as other apps.
-  </li>
-
-  <li>This early build is not Compatibility Test Suite (CTS) approved. Apps
-  that depend on CTS approved builds (Android Pay for example) won’t work.
-  </li>
-
-  <li>This preview release supports the following devices: Nexus 5X, Nexus 6,
-  Nexus 6P, Nexus 9, Nexus Player, and Pixel C, as well as General Mobile 4G
-  (Android One).
-  </li>
-</ul>
-
-<h3 id="dp1-platform">Platform 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>
-
-  <li>Battery life may be regressed in this release for screen-on and
-  screen-off use cases.
-  </li>
-</ul>
-<h4 id="dialer">Dialer</h4>
-
-<ul>
-  <li>Dialer app does not support Direct boot. This will be addressed later in
-  N Developer Preview.
-  </li>
-
-  <li>Voicemail playback does not work.
-  </li>
-</ul>
-
-<h4>Microphone</h4>
-
-<ul>
-   <li>The system may incorrect persists the microphone mute state across apps and reboots. If you mute the microphone in an app and the state is persisted, open any app that has microphone mute controls and unmute the microphone.</li>
-</ul>
-
-<h4 id="ui">System UI</h4>
-
-<ul>
-  <li>Some new or modified strings in the system UI are not translated to all
-  languages.
-  </li>
-
-  <li>Overview UI is still in development, and subject to change. For example,
-  we intend to remove the timer that appears when the user switches between
-  apps.
-  </li>
-
-  <li>Settings controls and toggles may be slow or appear to be unresponsive.
-  </li>
-
-  <li>Visual design of notifications is subject to change.
-  </li>
-
-  <li>In the Gmail app, direct archiving of emails included in a notification
-  bundle does not work properly.
-  </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>
-
-      <li>When the user enters a wrong password and pin, the system does not
-      display any informational message; instead, it only clears the input
-      field. This issue does not affect pattern or fingerprint input.
-      </li>
-
-      <li>On a tablet, the background displayed with the work challenge is
-      disproportionately small.
-      </li>
-
-      <li>The version of <a href=
-      "https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">
-        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://github.com/googlesamples/android-testdpc/releases">TestDPC</a>
-        to test this feature.
-      </li>
-    </ul>
-  </li>
-
-  <li>Always On VPN
-    <ul>
-      <li>If Always On VPN mode is turned on, but VPN is not available, apps
-      not specified as exceptions to the Always On policy connect over the
-      ordinary network. Unless specified as exceptions to Always On VPN policy,
-      apps should be offline if they have no VPN connection available.
-        <ul>
-          <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>
-    </ul>
-  </li>
-
-  <li>Improved Contacts
-    <ul>
-      <li>Bluetooth PBAP/MAP devices do not display Caller ID for work
-      contacts. The next release of Preview resolves this issue.
-      </li>
-    </ul>
-  </li>
-
-  <li>Work Mode
-    <ul>
-      <li>The Google Now Launcher does not display whether Work Mode is on or
-      off. The Launcher also does not show app suspension state.
-      </li>
-
-      <li>After the user turns Work Mode off and on, the system no longer shows
-      Work profile app widgets, such as Calendar.
-      </li>
-    </ul>
-  </li>
-
-  <li>Suspend Packages
-  </li>
-
-  <li>Device admins can suspend critical system packages, which may lead to
-  unexpected behavior, such as placing calls despite the Telephone disabled
-  dialog’s being displayed.
-  </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 {@code DPM.setPackagesSuspended} state does not persist when the
-      user uninstalls and then reinstalls an app. Either the app should remain
-      suspended after uninstall/reinstall, or suspended apps should not be
-      uninstallable
-      </li>
-
-      <li>The first check-in in a Work Profile takes several minutes to
-      complete. This may cause the device to take longer than normal to be
-      visible in the Play EMM API.
-      </li>
-
-      <li>Notifications from Work Profile apps are not visible to notification
-      listeners installed in the personal profile. As a result, the system does
-      not display Notifications as expected.
-      </li>
-
-    </ul>
-  </li>
-</ul>
-
-<h4 >Keyboard</h4>
-
-<ul>
-  <li>Bluetooth pairing between keyboards and Android devices may be unstable.
-  </li>
-</ul>
-
-<h4 >Video</h4>
-
-<ul>
-<li>Video playback may lag and show interruptions.</li>
-</ul>
-
-<h4>Wi-Fi</h4>
-
-<ul>
-  <li>Wi-Fi has undergone some refactoring which may change API corner case
-  behavior. Specifically, applications which attempt to connect to specific
-  networks, or attempt to reconnect to networks should retest.
-  </li>
-
-  <li>The legacy DHCP client has been removed from the platform. The only DHCP
-  client that the platform supports is the DHCP client introduced in M.
-  </li>
-</ul>
-
-<h4>Direct boot</h4>
-
-<ul>
-  <li>NFC doesn't function until first unlock.
-    <ul>
-      <li>When a phone with Bluetooth enabled is restarted, Bluetooth does not
-      turn on automatically. You must manually re-enable Bluetooth.
-      </li>
-
-      <li>Under some circumstances, the default ringtone may not sound for
-      phone calls and messages. This behavior is fixed in the next N Preview
-      release, with one exception (and workaround):
-      </li>
-
-      <li>On a device that is not freshly wiped--one that has been booted at
-      least once since being set to direct boot mode--the default notification
-      ringtone does not sound. The user can work around this issue by manually
-      selecting a ringtone from Settings.
-      </li>
-
-      <li>Direct boot is not enabled by default on devices running an N
-      Developer Preview build. To enable direct boot for testing and
-      development, go to Developer Options and tap Convert to File Encryption.
-      In this dev preview, this requires a factory reset to repartition and
-      reformat your device for File-based Encryption.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Picture-in-picture for Android TV</h4>
-
-<ul>
-  <li>The PIP integration in the Recents UI is not finalized, and is subject to
-  change.
-    <ul>
-      <li>The animation of the PIP window is not smooth. Future releases of the
-      Preview will improve this.
-      </li>
-    </ul>
-  </li>
-
-  <li style="list-style: none">Future releases of the Preview will improve upon
-  the visual design and layout alignment of PIP.
-  </li>
-</ul>
-
-<h4>Bug reports</h4>
-
-<ul>
-  <li>Bug reports do not always complete successfully (as a workaround,
-  sometimes they can still be accessed through the bug report document provider
-  in internal storage).
-  </li>
-</ul>
-
-<h4>Split-screen Multi-window</h4>
-
-<ul>
-  <li>Apps may experience crashes and unexpected UI behavior when put into
-  split-screen mode. These are app issues that must be fixed by the app
-  developer.
-  </li>
-
-  <li>When an app targets a version of the Android platform earlier than N, the
-  App may not work with split-screen toast may appear multiple times.
-  </li>
-
-  <li>Long-pressing the Overview button while using an app with a fixed
-  orientation may produce unexpected app behavior.
-  </li>
-
-  <li>Apps may flicker while resizing.
-  </li>
-
-  <li>Animations are not yet final.
-  </li>
-</ul>
-
-<h4>Input method</h4>
-
-<ul>
-  <li>Google Keyboard unexpectedly falls back to the generic Google keyboard
-  when <b>Use system language</b>, but Google Keyboard doesn’t support any of
-  the languages selected in the system-language preferences. It should fall
-  back to American English.
-    <p>
-      You can work around this problem by adding at least one language that
-      Google Keyboard supports.
-    </p>
-  </li>
-</ul>
-
-<h4>Accessibility</h4>
-
-<ul>
-  <li>TalkBack exhibits issues with features including Notifications, Quick
-  Settings Tiles and Multi-window display that may cause system crashing or
-  lack of spoken feedback from TalkBack. Future releases of the preview will
-  address these issues.
-  </li>
-</ul>
-
-<h3 id="dp1-device-sp">Device-Specific Notes and Issues</h3>
-
-<h4>Nexus Player</h4>
-<ul>
-  <li>Video playback, app compatibility and stability issues are expected on
-  Nexus Player in this release of the Preview.
-  </li>
-</ul>
-
-<h4>Pixel C</h4>
-<ul>
-<li>Multi-window resizing may cause crashing.</li>
-</ul>
-
-<h4>Nexus 9</h4>
-<ul>
-<li>Nexus 9 devices may not start after receiving an over-the-air (OTA) update
-  via the Android Beta Program. To recover from this issue, you can try
-  to manually install the OTA image. For more information, see
-  <a href="{@docRoot}preview/download-ota.html">Applying a Device OTA Image</a>.
-</li>
-</ul>
-
diff --git a/docs/html/topic/arc/_book.yaml b/docs/html/topic/arc/_book.yaml
new file mode 100644
index 0000000..ad83ba9
--- /dev/null
+++ b/docs/html/topic/arc/_book.yaml
@@ -0,0 +1,9 @@
+toc:
+- title: Optimize Apps for Chromebooks
+  path: /topic/arc/index.html
+- title: Loading Apps on Chromebooks
+  path: /topic/arc/sideload.html
+- title: Chrome OS Device Support for Apps
+  path: /topic/arc/device-support.html
+- title: App Manifest Compatibility for Chromebooks
+  path: /topic/arc/manifest.html
\ No newline at end of file
diff --git a/docs/html/topic/libraries/data-binding/index.jd b/docs/html/topic/libraries/data-binding/index.jd
index ec6e58c..454bb59 100644
--- a/docs/html/topic/libraries/data-binding/index.jd
+++ b/docs/html/topic/libraries/data-binding/index.jd
@@ -246,21 +246,21 @@
 </pre>
 <p>
   Expressions within the layout are written in the attribute properties using
-  the “<code>&amp;commat;{}</code>” syntax. Here, the TextView’s text is set to
+  the "<code>&commat;{}</code>" syntax. Here, the TextView's text is set to
   the firstName property of user:
 </p>
 
 <pre>
 &lt;TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
-          android:text="&amp;commat;{user.firstName}"/&gt;
+          android:text="&commat;{user.firstName}"/&gt;
 </pre>
 <h3 id="data_object">
   Data Object
 </h3>
 
 <p>
-  Let’s assume for now that you have a plain-old Java object (POJO) for User:
+  Let's assume for now that you have a plain-old Java object (POJO) for User:
 </p>
 
 <pre>
@@ -296,8 +296,8 @@
 </pre>
 <p>
   From the perspective of data binding, these two classes are equivalent. The
-  expression <strong><code>&amp;commat;{user.firstName}</code></strong> used
-  for the TextView’s <strong><code>android:text</code></strong> attribute will
+  expression <strong><code>&commat;{user.firstName}</code></strong> used
+  for the TextView's <strong><code>android:text</code></strong> attribute will
   access the <strong><code>firstName</code></strong> field in the former class
   and the <code>getFirstName()</code> method in the latter class.
   Alternatively, it will also be resolved to <code>firstName()</code> if that
@@ -310,10 +310,10 @@
 
 <p>
   By default, a Binding class will be generated based on the name of the layout
-  file, converting it to Pascal case and suffixing “Binding” to it. The above
+  file, converting it to Pascal case and suffixing "Binding" to it. The above
   layout file was <code>main_activity.xml</code> so the generate class was
   <code>MainActivityBinding</code>. This class holds all the bindings from the
-  layout properties (e.g. the <code>user</code> variable) to the layout’s Views
+  layout properties (e.g. the <code>user</code> variable) to the layout's Views
   and knows how to assign values for the binding expressions.The easiest means
   for creating the bindings is to do it while inflating:
 </p>
@@ -328,7 +328,7 @@
 }
 </pre>
 <p>
-  You’re done! Run the application and you’ll see Test User in the UI.
+  You're done! Run the application and you'll see Test User in the UI.
   Alternatively, you can get the view via:
 </p>
 
@@ -434,15 +434,15 @@
 </pre>
   Then you can bind the click event to your class as follows:
 <pre>
-  &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-  &lt;layout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&gt;
+  &lt;?xml version="1.0" encoding="utf-8"?&gt;
+  &lt;layout xmlns:android="http://schemas.android.com/apk/res/android"&gt;
       &lt;data&gt;
-          &lt;variable name=&quot;task&quot; type=&quot;com.android.example.Task&quot; /&gt;
-          &lt;variable name=&quot;presenter&quot; type=&quot;com.android.example.Presenter&quot; /&gt;
+          &lt;variable name="task" type="com.android.example.Task" /&gt;
+          &lt;variable name="presenter" type="com.android.example.Presenter" /&gt;
       &lt;/data&gt;
-      &lt;LinearLayout android:layout_width=&quot;match_parent&quot; android:layout_height=&quot;match_parent&quot;&gt;
-          &lt;Button android:layout_width=&quot;wrap_content&quot; android:layout_height=&quot;wrap_content&quot;
-          android:onClick=&quot;@{() -&gt; presenter.onSaveClick(task)}&quot; /&gt;
+      &lt;LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"&gt;
+          &lt;Button android:layout_width="wrap_content" android:layout_height="wrap_content"
+          android:onClick="@{() -&gt; presenter.onSaveClick(task)}" /&gt;
       &lt;/LinearLayout&gt;
   &lt;/layout&gt;
 </pre>
@@ -465,7 +465,7 @@
   above could be written as:
 </p>
 <pre>
-  android:onClick=&quot;@{(view) -&gt; presenter.onSaveClick(task)}&quot;
+  android:onClick="@{(view) -&gt; presenter.onSaveClick(task)}"
 </pre>
 Or if you wanted to use the parameter in the expression, it could work as follows:
 <pre>
@@ -474,7 +474,7 @@
 }
 </pre>
 <pre>
-  android:onClick=&quot;@{(theView) -&gt; presenter.onSaveClick(theView, task)}&quot;
+  android:onClick="@{(theView) -&gt; presenter.onSaveClick(theView, task)}"
 </pre>
 You can use a lambda expression with more than one parameter:
 <pre>
@@ -483,8 +483,8 @@
 }
 </pre>
 <pre>
-  &lt;CheckBox android:layout_width=&quot;wrap_content&quot; android:layout_height=&quot;wrap_content&quot;
-        android:onCheckedChanged=&quot;@{(cb, isChecked) -&gt; presenter.completeChanged(task, isChecked)}&quot; /&gt;
+  &lt;CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:onCheckedChanged="@{(cb, isChecked) -&gt; presenter.completeChanged(task, isChecked)}" /&gt;
 </pre>
 <p>
   If the event you are listening to returns a value whose type is not {@code
@@ -498,7 +498,7 @@
 }
 </pre>
 <pre>
-  android:onLongClick=&quot;@{(theView) -&gt; presenter.onLongClick(theView, task)}&quot;
+  android:onLongClick="@{(theView) -&gt; presenter.onLongClick(theView, task)}"
 </pre>
 <p>
 If the expression cannot be evaluated due to {@code null} objects, Data Binding returns
@@ -510,7 +510,7 @@
 {@code void} as a symbol.
 </p>
 <pre>
-  android:onClick=&quot;@{(v) -&gt; v.isVisible() ? doSomething() : void}&quot;
+  android:onClick="@{(v) -&gt; v.isVisible() ? doSomething() : void}"
 </pre>
 
 <h5>Avoid Complex Listeners</h5>
@@ -580,7 +580,7 @@
 </pre>
 <p>
   When there are class name conflicts, one of the classes may be renamed to an
-  “alias:”
+  "alias:"
 </p>
 
 <pre>
@@ -601,7 +601,7 @@
     &lt;import type="com.example.User"/&gt;
     &lt;import type="java.util.List"/&gt;
     &lt;variable name="user" type="User"/&gt;
-    &lt;variable name="userList" type="List&amp;lt;User&gt;"/&gt;
+    &lt;variable name="userList" type="List&lt;User&gt;"/&gt;
 &lt;/data&gt;
 </pre>
 <p class="caution">
@@ -695,7 +695,7 @@
 <p>
   By default, a Binding class is generated based on the name of the layout
   file, starting it with upper-case, removing underscores ( _ ) and
-  capitalizing the following letter and then suffixing “Binding”. This class
+  capitalizing the following letter and then suffixing "Binding". This class
   will be placed in a databinding package under the module package. For
   example, the layout file <code>contact_item.xml</code> will generate
   <code>ContactItemBinding</code>. If the module package is
@@ -718,7 +718,7 @@
   This generates the binding class as <code>ContactItem</code> in the
   databinding package in the module package. If the class should be generated
   in a different package within the module package, it may be prefixed with
-  “.”:
+  ".":
 </p>
 
 <pre>
@@ -741,7 +741,7 @@
 </h3>
 
 <p>
-  Variables may be passed into an included layout&apos;s binding from the
+  Variables may be passed into an included layout's binding from the
   containing layout by using the application namespace and the variable name in
   an attribute:
 </p>
@@ -855,8 +855,8 @@
 
 <pre>
 android:text="&commat;{String.valueOf(index + 1)}"
-android:visibility="&commat;{age &amp;lt; 13 ? View.GONE : View.VISIBLE}"
-android:transitionName=&apos;&commat;{"image_" + id}&apos;
+android:visibility="&commat;{age &lt; 13 ? View.GONE : View.VISIBLE}"
+android:transitionName='&commat;{"image_" + id}'
 </pre>
 <h4 id="missing_operations">
   Missing Operations
@@ -945,9 +945,9 @@
     &lt;import type="android.util.SparseArray"/&gt;
     &lt;import type="java.util.Map"/&gt;
     &lt;import type="java.util.List"/&gt;
-    &lt;variable name="list" type="List&amp;lt;String&gt;"/&gt;
-    &lt;variable name="sparse" type="SparseArray&amp;lt;String&gt;"/&gt;
-    &lt;variable name="map" type="Map&amp;lt;String, String&gt;"/&gt;
+    &lt;variable name="list" type="List&lt;String&gt;"/&gt;
+    &lt;variable name="sparse" type="SparseArray&lt;String&gt;"/&gt;
+    &lt;variable name="map" type="Map&lt;String, String&gt;"/&gt;
     &lt;variable name="index" type="int"/&gt;
     &lt;variable name="key" type="String"/&gt;
 &lt;/data&gt;
@@ -969,17 +969,17 @@
 </p>
 
 <pre>
-android:text=&apos;&commat;{map["firstName"]}&apos;
+android:text='&commat;{map["firstName"]}'
 </pre>
 <p>
   It is also possible to use double quotes to surround the attribute value.
-  When doing so, String literals should either use the &amp;quot; or back quote
+  When doing so, String literals should either use the ' or back quote
   (`).
 </p>
 
 <pre>
 android:text="&commat;{map[`firstName`}"
-android:text="&commat;{map[&amp;quot;firstName&amp;quot;]}"
+android:text="&commat;{map['firstName']}"
 </pre>
 <h4 id="resources">
   Resources
@@ -1216,7 +1216,7 @@
 }
 </pre>
 <p>
-  That&apos;s it! To access the value, use the set and get accessor methods:
+  That's it! To access the value, use the set and get accessor methods:
 </p>
 
 <pre>
@@ -1247,15 +1247,15 @@
 <pre>
 &lt;data&gt;
     &lt;import type="android.databinding.ObservableMap"/&gt;
-    &lt;variable name="user" type="ObservableMap&amp;lt;String, Object&gt;"/&gt;
+    &lt;variable name="user" type="ObservableMap&lt;String, Object&gt;"/&gt;
 &lt;/data&gt;

 &lt;TextView
-   android:text=&apos;&commat;{user["lastName"]}&apos;
+   android:text='&commat;{user["lastName"]}'
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/&gt;
 &lt;TextView
-   android:text=&apos;&commat;{String.valueOf(1 + (Integer)user["age"])}&apos;
+   android:text='&commat;{String.valueOf(1 + (Integer)user["age"])}'
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/&gt;
 </pre>
@@ -1277,15 +1277,15 @@
 &lt;data&gt;
     &lt;import type="android.databinding.ObservableList"/&gt;
     &lt;import type="com.example.my.app.Fields"/&gt;
-    &lt;variable name="user" type="ObservableList&amp;lt;Object&gt;"/&gt;
+    &lt;variable name="user" type="ObservableList&lt;Object&gt;"/&gt;
 &lt;/data&gt;

 &lt;TextView
-   android:text=&apos;&commat;{user[Fields.LAST_NAME]}&apos;
+   android:text='&commat;{user[Fields.LAST_NAME]}'
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/&gt;
 &lt;TextView
-   android:text=&apos;&commat;{String.valueOf(1 + (Integer)user[Fields.AGE])}&apos;
+   android:text='&commat;{String.valueOf(1 + (Integer)user[Fields.AGE])}'
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/&gt;
 </pre>
@@ -1428,7 +1428,7 @@
 
 <p>
   When inflating another layout, a binding must be established for the new
-  layout. Therefore, the <code>ViewStubProxy</code> must listen to the <code>ViewStub</code>&apos;s
+  layout. Therefore, the <code>ViewStubProxy</code> must listen to the <code>ViewStub</code>'s
   {@link android.view.ViewStub.OnInflateListener} and establish the binding at that time. Since
   only one can exist, the <code>ViewStubProxy</code> allows the developer to set an
   <code>OnInflateListener</code> on it that it will call after establishing the binding.
@@ -1443,9 +1443,9 @@
 </h4>
 
 <p>
-  At times, the specific binding class won&apos;t be known. For example, a
+  At times, the specific binding class won't be known. For example, a
   {@link android.support.v7.widget.RecyclerView.Adapter} operating against arbitrary layouts
-  won&apos;t know the specific binding class. It still must assign the binding value during the
+  won't know the specific binding class. It still must assign the binding value during the
   {@link android.support.v7.widget.RecyclerView.Adapter#onBindViewHolder}.
 </p>
 
@@ -1499,13 +1499,13 @@
 For an attribute, data binding tries to find the method setAttribute. The
 namespace for the attribute does not matter, only the attribute name itself.
 <p>
-  For example, an expression associated with TextView&apos;s attribute
+  For example, an expression associated with TextView's attribute
   <strong><code>android:text</code></strong> will look for a setText(String).
   If the expression returns an int, data binding will search for a setText(int)
   method. Be careful to have the expression return the correct type, casting if
   necessary. Note that data binding will work even if no attribute exists with
   the given name. You can then easily "create" attributes for any setter by
-  using data binding. For example, support DrawerLayout doesn&apos;t have any
+  using data binding. For example, support DrawerLayout doesn't have any
   attributes, but plenty of setters. You can use the automatic setters to use
   one of these.
 </p>
@@ -1522,7 +1522,7 @@
 </h3>
 
 <p>
-  Some attributes have setters that don&apos;t match by name. For these
+  Some attributes have setters that don't match by name. For these
   methods, an attribute may be associated with the setter through
   {@link android.databinding.BindingMethods} annotation. This must be associated with
   a class and contains {@link android.databinding.BindingMethod} annotations, one for
@@ -1591,8 +1591,8 @@
 }
 </pre>
 <pre>
-&lt;ImageView app:imageUrl=“&commat;{venue.imageUrl}”
-app:error=“&commat;{&commat;drawable/venueError}”/&gt;
+&lt;ImageView app:imageUrl="&commat;{venue.imageUrl}"
+app:error="&commat;{&commat;drawable/venueError}"/&gt;
 </pre>
 
 <p>
@@ -1747,7 +1747,7 @@
 
 <pre>
 &lt;TextView
-   android:text=&apos;&commat;{userMap["lastName"]}&apos;
+   android:text='&commat;{userMap["lastName"]}'
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/&gt;
 </pre>
diff --git a/docs/html/topic/libraries/support-library/features.jd b/docs/html/topic/libraries/support-library/features.jd
index d648384..0f63bf6 100755
--- a/docs/html/topic/libraries/support-library/features.jd
+++ b/docs/html/topic/libraries/support-library/features.jd
@@ -141,19 +141,13 @@
   API reference.
 </p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v4/</code> directory. The library does not contain user
-interface resources. To include it in your application project, follow the instructions for
-<a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
-resources</a>.</p>
-
 <p class="caution"><strong>Caution:</strong> Using dynamic dependencies, especially for higher version
 numbers, can cause unexpected version updates and regression incompatibilities.</p>
 
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-v4:23.3.0
+com.android.support:support-v4:24.1.1
 </pre>
 
 
@@ -168,15 +162,6 @@
 </p>
 
 <p>
-  After you download the Android Support Libraries, this library is located in the
-  <code>&lt;sdk&gt;/extras/android/support/multidex/</code> directory. The library does not contain
-  user interface resources. To include it in your application project, follow the instructions
-  for
-  <a href= "{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
-  resources</a>.
-</p>
-
-<p>
   The Gradle build script dependency identifier for this library is as follows:
 </p>
 
@@ -228,16 +213,10 @@
   </li>
 </ul>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v7/appcompat/</code> directory. The library contains user
-interface resources. To include it in your application project, follow the instructions for
-<a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries with
-resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:appcompat-v7:23.3.0
+com.android.support:appcompat-v7:24.1.1
 </pre>
 
 
@@ -249,16 +228,10 @@
 on any app. These cards are useful for material design
 implementations, and are used extensively in layouts for TV apps.</p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v7/cardview/</code> directory. The library contains user interface
-resources. To include it in your application project, follow the instructions
-for <a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding
-libraries with resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:cardview-v7:23.3.0
+com.android.support:cardview-v7:24.1.1
 </pre>
 
 
@@ -271,16 +244,10 @@
 For detailed information about the v7 gridlayout library APIs, see the
 {@link android.support.v7.widget android.support.v7.widget} package in the API reference.</p>
 
-<p>This library is located in the <code>&lt;sdk&gt;/extras/android/support/v7/gridlayout/</code>
-  directory . The library contains user
-  interface resources. To include it in your application project, follow the instructions for
-  <a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries with
-  resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:gridlayout-v7:23.3.0
+com.android.support:gridlayout-v7:24.1.1
 </pre>
 
 
@@ -300,21 +267,10 @@
 {@link android.support.v7.media android.support.v7.media} package in the API
 reference.</p>
 
-<p>The v7 mediarouter library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v7/mediarouter/</code> directory after
-you download the Android Support Library. It's provided as a library project
-with a dependency on the v7 appcompat library, so you'll need to include both
-libraries in your build path when setting up your project. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>.</p>
-
-<p>The Gradle builder script dependency identifier is as follows:
-<code>com.android.support:support-v7-mediarouter:&lt;revision&gt;</code>,
-where "&lt;revision&gt;" is the minimum revision at which the library is available. For example:</p>
+<p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:mediarouter-v7:23.3.0
+com.android.support:mediarouter-v7:24.1.1
 </pre>
 
 <p class="caution">The v7 mediarouter library APIs introduced in Support Library
@@ -331,16 +287,10 @@
 from an album cover, and use those colors to build a color-coordinated song
 title card.</p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v7/palette/</code> directory. The library does not contain
-user interface resources. To include it in your application project, follow the instructions for
-<a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
-resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:palette-v7:23.3.0
+com.android.support:palette-v7:24.1.1
 </pre>
 
 
@@ -353,16 +303,10 @@
 widget, a view for efficiently displaying large data sets by providing a
 limited window of data items.</p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v7/recyclerview/</code> directory. The library contains
-user interface resources. To include it in your application project, follow the instructions
-for <a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding
-libraries with resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:recyclerview-v7:23.3.0
+com.android.support:recyclerview-v7:24.1.1
 </pre>
 
 
@@ -382,25 +326,12 @@
 {@link android.support.v7.preference.ListPreference}.  </p>
 
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v7/preference</code> directory. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. </p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-v7:23.3.0
+com.android.support:preference-v7:24.1.1
 </pre>
 
-
-
-
-
-
-
-
 <h2 id="v8">v8 Support Library</h2>
 
 <p>This library is designed to be used with Android 2.2 (API level 8) and higher.
@@ -446,16 +377,10 @@
   android.support.v13} package in the API reference.
 </p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v13/</code> directory. The library does not contain user
-interface resources. To include it in your application project, follow the instructions for
-<a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
-resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-v13:23.3.0
+com.android.support:support-v13:24.1.1
 </pre>
 
 
@@ -478,16 +403,10 @@
   package in the API reference.
 </p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v14/</code> directory. The library does not contain user
-interface resources. To include it in your application project, follow the instructions for
-<a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
-resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-v14:23.3.0
+com.android.support:preference-v14:24.1.1
 </pre>
 
 
@@ -507,16 +426,10 @@
   package in the API reference.
 </p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v17/</code> directory. The library does not contain user
-interface resources. To include it in your application project, follow the instructions for
-<a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
-resources</a>.</p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-leanback-v17:23.3.0
+com.android.support:preference-leanback-v17:24.1.1
 </pre>
 
 
@@ -549,16 +462,10 @@
     into a {@link android.support.v17.leanback.app.RowsFragment}.</li>
 </ul>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/v17/leanback</code> directory. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. </p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:leanback-v17:23.3.0
+com.android.support:leanback-v17:24.1.1
 </pre>
 
 
@@ -570,16 +477,10 @@
 
 <p></p>
 
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/annotations</code> directory. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. </p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-annotations:23.3.0
+com.android.support:support-annotations:24.1.1
 </pre>
 
 
@@ -594,17 +495,10 @@
 app developers to build upon, such as navigation drawers, floating action buttons (<i>FAB</i>),
 snackbars, and <a href="{@docRoot}design/building-blocks/tabs.html">tabs</a>.  </p>
 
-
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/design</code> directory. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. </p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:design:23.3.0
+com.android.support:design:24.1.1
 </pre>
 
 
@@ -622,17 +516,10 @@
 <a href="{@docRoot}reference/android/support/customtabs/CustomTabsCallback.html">Custom Tabs
 Callback</a>.  </p>
 
-
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/customtabs</code> directory. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. </p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:customtabs:23.3.0
+com.android.support:customtabs:24.1.1
 </pre>
 
 
@@ -653,17 +540,10 @@
 <a href="{@docRoot}reference/android/support/percent/PercentRelativeLayout.html">
 PercentRelativeLayout</a>.  </p>
 
-
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/percent</code> directory. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. </p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:percent:23.3.0
+com.android.support:percent:24.1.1
 </pre>
 
 
@@ -683,15 +563,8 @@
 <a href="{@docRoot}reference/android/support/app/recommendation/RecommendationExtender.html">
 RecommendationExtender</a>.  </p>
 
-
-<p>After you download the Android Support Libraries, this library is located in the
-<code>&lt;sdk&gt;/extras/android/support/recommendation</code> directory. For more information
-on how to set up your project, follow the instructions in <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. </p>
-
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:recommendation:23.3.0
+com.android.support:recommendation:24.1.1
 </pre>
diff --git a/docs/html/topic/libraries/support-library/setup.jd b/docs/html/topic/libraries/support-library/setup.jd
index 5e33851..0cb9389 100755
--- a/docs/html/topic/libraries/support-library/setup.jd
+++ b/docs/html/topic/libraries/support-library/setup.jd
@@ -10,18 +10,12 @@
     <ol>
       <li><a href="#download">Downloading the Support Library</a></li>
       <li><a href="#choosing">Choosing Support Libraries</a></li>
-      <li><a href="#add-library">Adding Support Libraries</a>
-        <ol>
-          <li><a href="#libs-without-res">Adding libraries without resources</a></li>
-          <li><a href="#libs-with-res">Adding libraries with resources</a></li>
-        </ol>
-      </li>
+      <li><a href="#add-library">Adding Support Libraries</a></li>
       <li><a href="#using-apis">Using Support Library APIs</a>
         <ol>
           <li><a href="#manifest">Manifest Declaration Changes</a></li>
         </ol>
       </li>
-      <li><a href="#samples">Code Samples</a></li>
     </ol>
 
     <h2>See also</h2>
@@ -45,8 +39,8 @@
 
 <h2 id="download">Downloading the Support Libraries</h2>
 
-<p>The Android Support Library package is provided as a supplemental download to the Android SDK
-  and is available through the Android
+<p>The Android Support Repository package is provided as a supplemental download
+ to the Android SDK and is available through the Android
   <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>. Follow the
   instructions below to obtain the Support Library files.
 </p>
@@ -57,22 +51,18 @@
   <li>Start the Android <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.</li>
   <li>In the SDK Manager window, scroll to the end of the <em>Packages</em> list,
     find the <em>Extras</em> folder and, if necessary, expand to show its contents.</li>
-  <li>Select the <strong>Android Support Library</strong> item.
-    <p class="note">
-      <strong>Note:</strong> If you're developing with Android Studio, select and install the
-      <strong>Android Support Repository</strong> item instead.
-    </p>
-  </li>
+  <li>Select the <strong>Android Support Repository</strong> item.</li>
   <li>Click the <strong>Install packages...</strong> button.</li>
 </ol>
 
 <img src="{@docRoot}images/tools/sdk-manager-support-libs.png" width="525" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The Android SDK Manager with the
-Android Support Library selected.</p>
+<p class="img-caption"><strong>Figure 1.</strong> The Android SDK Manager with
+Android Support Repository selected.</p>
 
 <p>After downloading, the tool installs the Support Library files to your existing Android SDK
   directory. The library files are located in the following subdirectory of your SDK:
-  {@code <sdk>/extras/android/support/} directory.</p>
+  <code>&lt;sdk&gt;/extras/android/m2repository/com/android/support/</code>
+  directory.</p>
 
 
 <h2 id="choosing">Choosing Support Libraries</h2>
@@ -89,20 +79,7 @@
   classpath dependencies within your development environment. You must perform this procedure for
   each Support Library you want to use.</p>
 
-<p>Some Support Libraries contain resources beyond compiled code classes, such as images or XML
-  files. For example, the <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
-  appcompat</a> and <a href="{@docRoot}tools/support-library/features.html#v7-gridlayout">v7
-  gridlayout</a> libraries include resources.</p>
-
-<p>If you are not sure if a library contains resources, check the
-  <a href="{@docRoot}tools/support-library/features.html">Support Library Features</a> page.
-  The following sections describe how to add a Support Library with or without resources to your
-  application project. </p>
-
-
-<h3 id="libs-without-res">Adding libraries without resources</h3>
-
-<p>To add a Support Library without resources to your application project:</p>
+<p>To add a Support Library to your application project:</p>
 
     <ol>
       <li>Make sure you have downloaded the <strong>Android Support Repository</strong>
@@ -113,37 +90,12 @@
 <pre>
 dependencies {
     ...
-    <b>compile "com.android.support:support-v4:18.0.+"</b>
+    <b>compile "com.android.support:support-v4:24.1.1"</b>
 }
 </pre>
       </li>
     </ol>
 
-
-<h3 id="libs-with-res">Adding libraries with resources</h3>
-
-<p>To add a Support Library with resources (such as
-  <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
-  appcompat</a> for action bar) to your application project:</p>
-
-    <ol>
-      <li>Make sure you have downloaded the <strong>Android Support Repository</strong>
-        using the <a href="#download">SDK Manager</a>.</li>
-      <li>Open the {@code build.gradle} file for your application.</li>
-      <li>Add the support library feature project identifier to the {@code dependencies} section.
-        For example, to include the {@code appcompat} project add
-        {@code compile "com.android.support:appcompat-v7:18.0.+"} to the dependencies section, as
-        shown in the following example:
-<pre>
-dependencies {
-    ...
-    <b>compile "com.android.support:appcompat-v7:18.0.+"</b>
-}
-</pre>
-      </li>
-    </ol>
-
-
 <h2 id="using-apis">Using Support Library APIs</h2>
 
 <p>Support Library classes that provide support for existing framework APIs typically have the
@@ -224,18 +176,3 @@
   <code>"4"</code>). The highest support library level you include in your application determines
   the lowest API version in which it can operate.
 </p>
-
-
-<h2 id="samples">Code Samples</h2>
-
-<p>Each Support Library includes code samples to help you get started using the support
-APIs. The code is included in the download from the SDK Manager and is placed inside the Android
-SDK installation directory, as listed below:</p>
-
-<ul>
-  <li>4v Samples: {@code <sdk>/extras/android/support/samples/Support4Demos/}</li>
-  <li>7v Samples: {@code <sdk>/extras/android/support/samples/Support7Demos/}</li>
-  <li>13v Samples: {@code <sdk>/extras/android/support/samples/Support13Demos/}</li>
-  <li>App Navigation: {@code <sdk>/extras/android/support/samples/SupportAppNavigation/}</li>
-</ul>
-
diff --git a/docs/html/topic/performance/_book.yaml b/docs/html/topic/performance/_book.yaml
index 94cfc57..e053a2c 100644
--- a/docs/html/topic/performance/_book.yaml
+++ b/docs/html/topic/performance/_book.yaml
@@ -26,6 +26,8 @@
   path: /topic/performance/threads.html
 - title: Optimizing View Hierarchies
   path: /topic/performance/optimizing-view-hierarchies.html
+- title: Background Optimization
+  path: /topic/performance/background-optimization.html
 - title: Intelligent Job-Scheduling
   path: /topic/performance/scheduling.html
 - title: Reducing APK Size
diff --git a/docs/html/preview/features/background-optimization.jd b/docs/html/topic/performance/background-optimization.jd
similarity index 98%
rename from docs/html/preview/features/background-optimization.jd
rename to docs/html/topic/performance/background-optimization.jd
index 326513b..3e4c041 100644
--- a/docs/html/preview/features/background-optimization.jd
+++ b/docs/html/topic/performance/background-optimization.jd
@@ -379,7 +379,7 @@
 
   <li style="list-style: none; display: inline">
 <pre class="no-pretty-print">
-{@code $ adb shell cmd appops set <package_name> RUN_IN_BACKGROUND ignore}
+{@code $ adb shell cmd appops set &lt;package_name&gt; RUN_IN_BACKGROUND ignore}
 </pre>
   </li>
 
@@ -389,7 +389,7 @@
 
   <li style="list-style: none; display: inline">
 <pre class="no-pretty-print">
-{@code $ adb shell cmd appops set <package_name> RUN_IN_BACKGROUND allow}
+{@code $ adb shell cmd appops set &lt;package_name&gt; RUN_IN_BACKGROUND allow}
 </pre>
   </li>
 </ul>
diff --git a/docs/html/topic/performance/performance_toc.cs b/docs/html/topic/performance/performance_toc.cs
index 49191bc..8c39523 100644
--- a/docs/html/topic/performance/performance_toc.cs
+++ b/docs/html/topic/performance/performance_toc.cs
@@ -656,7 +656,7 @@
              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."
-            >Syncing to the Cloud</a>
+            >Backing up App Data to the Cloud</a>
         </div>
         <ul>
           <li><a href="<?cs var:toroot ?>training/backup/autosyncapi.html">
diff --git a/docs/html/training/_book.yaml b/docs/html/training/_book.yaml
index 00f9295..891574f 100644
--- a/docs/html/training/_book.yaml
+++ b/docs/html/training/_book.yaml
@@ -420,6 +420,8 @@
       path: /training/basics/network-ops/connecting.html
     - title: Managing Network Usage
       path: /training/basics/network-ops/managing.html
+    - title: Optimizing Network Data Usage
+      path: /training/basics/network-ops/data-saver.html
     - title: Parsing XML Data
       path: /training/basics/network-ops/xml.html
   - title: Transferring Data Without Draining the Battery
@@ -436,7 +438,7 @@
       path: /training/efficient-downloads/redundant_redundant.html
     - title: Modifying Patterns Based on the Connectivity Type
       path: /training/efficient-downloads/connectivity_patterns.html
-  - title: Syncing to the Cloud
+  - title: Backing up App Data to the Cloud
     path: /training/backup/index.html
     path_attributes:
     - name: description
@@ -695,6 +697,8 @@
       path: /training/tv/playback/guided-step.html
     - title: Enabling Background Playback
       path: /training/tv/playback/options.html
+    - title: Adding Picture-in-picture
+      path: /training/tv/playback/picture-in-picture.html
   - title: Helping Users Find Content on TV
     path: /training/tv/discovery/index.html
     path_attributes:
@@ -724,6 +728,8 @@
       path: /training/tv/tif/channel.html
     - title: Managing User Interaction
       path: /training/tv/tif/ui.html
+    - title: Supporting Content Recording
+      path: /training/tv/tif/content-recording.html
   - title: TV Apps Checklist
     path: /training/tv/publishing/checklist.html
     path_attributes:
@@ -1363,6 +1369,11 @@
     path_attributes:
     - name: description
       value: How to ensure that your app is secure when performing network transactions.
+  - title: Network Security Configuration
+    path: /training/articles/security-config.html
+    path_attributes:
+    - name: description
+      value: Customize the behavior of your app's secure network connections safely.
   - title: Updating Your Security Provider to Protect Against SSL Exploits
     path: /training/articles/security-gms-provider.html
     path_attributes:
@@ -1373,11 +1384,31 @@
     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: Checking URLs with the Safe Browsing API
+    path: /training/safebrowsing/index.html
+    path_attributes:
+    - name: description
+      value: How to use the SafetyNet service to determine if a URL is designated as a known threat.
+  - title: Verifying Hardware-backed Key Pairs with Key Attestation
+    path: /training/articles/security-key-attestation.html
+    path_attributes:
+    - name: description
+      value: How to retrieve and verify the properties of a device's hardware-backed key pair.
   - title: Enhancing Security with Device Management Policies
     path: /work/device-management-policy.html
     path_attributes:
     - name: description
       value: How to create an application that enforces security policies on devices.
+  - title: Supporting Direct Boot
+    path: /training/articles/direct-boot.html
+    path_attributes:
+    - name: description
+      value: How use device encrypted storage during Direct Boot mode.
+  - title: Using Scoped Directory Access
+    path: /training/articles/scoped-directory-access.html
+    path_attributes:
+    - name: description
+      value: How to use scoped directory access to request access to external storage directories.
 
 - title: Best Practices for Permissions & Identifiers
   path: /training/best-permissions-ids.html
diff --git a/docs/html/preview/features/direct-boot.jd b/docs/html/training/articles/direct-boot.jd
similarity index 86%
rename from docs/html/preview/features/direct-boot.jd
rename to docs/html/training/articles/direct-boot.jd
index 60f6141..ea2686e 100644
--- a/docs/html/preview/features/direct-boot.jd
+++ b/docs/html/training/articles/direct-boot.jd
@@ -1,12 +1,10 @@
-page.title=Direct Boot
-page.keywords=preview,sdk,direct boot
-page.tags=androidn
-page.image=images/cards/card-nyc_2x.jpg
+page.title=Supporting Direct Boot
+page.keywords=direct boot
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>In this document</h2>
   <ol>
     <li><a href="#run">Requesting Access to Run During Direct Boot</a></li>
@@ -19,7 +17,7 @@
 </div>
 </div>
 
-<p>Android N runs in a secure, <i>Direct Boot</i> mode
+<p>Android 7.0 runs in a secure, <i>Direct Boot</i> mode
 when the device has been powered on but the user has not unlocked the
 device. To support this, the system provides two storage locations for data:</p>
 
@@ -63,21 +61,23 @@
 <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
+{@link android.content.Intent#ACTION_LOCKED_BOOT_COMPLETED
+ACTION_LOCKED_BOOT_COMPLETED} broadcast message from the
 system when the device has been restarted. At this point device encrypted
 storage is available, and your component can execute tasks that need to be
 run during Direct Boot mode, such as triggering a scheduled alarm.</p>
 
 <p>The following code snippet is an example of how to register a
 {@link android.content.BroadcastReceiver} as encryption aware, and add an
-intent filter for <code>LOCKED_BOOT_COMPLETED</code>, in the app manifest:</p>
+intent filter for {@link android.content.Intent#ACTION_LOCKED_BOOT_COMPLETED
+ACTION_LOCKED_BOOT_COMPLETED}, in the app manifest:</p>
 
 <pre>
 &lt;receiver
   android:directBootAware="true" &gt;
   ...
   &lt;intent-filter&gt;
-    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+    &lt;action android:name="android.intent.action.ACTION_LOCKED_BOOT_COMPLETED" /&gt;
   &lt;/intent-filter&gt;
 &lt;/receiver&gt;
 </pre>
@@ -89,7 +89,8 @@
 
 <p>To access device encrypted storage, create a second
 {@link android.content.Context} instance by calling
-<code>Context.createDeviceProtectedStorageContext()</code>. All storage API
+{@link android.content.Context#createDeviceProtectedStorageContext
+Context.createDeviceProtectedStorageContext()}. 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>
@@ -120,7 +121,8 @@
 </p>
 <ul>
 <li>If your app has foreground processes that need immediate notification,
-listen for the {@code ACTION_USER_UNLOCKED} message.</li>
+listen for the {@link android.content.Intent#ACTION_USER_UNLOCKED
+ACTION_USER_UNLOCKED} message.</li>
 <li>If your app only uses background processes that can act on a delayed
 notification, listen for the
 {@link android.content.Intent#ACTION_BOOT_COMPLETED ACTION_BOOT_COMPLETED}
@@ -128,14 +130,17 @@
 </ul>
 
 <p>If the user has unlocked the device, you can find out by calling
-<code>UserManager.isUserUnlocked()</code>.</p>
+{@link android.os.UserManager#isUserUnlocked UserManager.isUserUnlocked()}.
+</p>
 
 <h2 id="migrating">Migrating Existing Data</h2>
 
 <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.moveSharedPreferencesFrom()</code> and
-<code>Context.moveDatabaseFrom()</code> to migrate preference and database
+{@link android.content.Context#moveSharedPreferencesFrom
+Context.moveSharedPreferencesFrom()} and
+{@link android.content.Context#moveDatabaseFrom
+Context.moveDatabaseFrom()} 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
@@ -146,13 +151,13 @@
 
 <h2 id="testing">Testing Your Encryption Aware App</h2>
 
-<p>Test your encryption aware app using the new Direct Boot mode. There are
+<p>Test your encryption aware app with Direct Boot mode enabled. There are
 two ways to enable Direct Boot.</p>
 
 <p class="caution"><strong>Caution:</strong> Enabling Direct Boot
 wipes all user data on the device.</p>
 
-<p>On supported devices with Android N installed, enable
+<p>On supported devices with Android 7.0 installed, enable
 Direct Boot by doing one of the following:</p>
 
 <ul>
@@ -194,14 +199,14 @@
 {@link android.app.admin.DevicePolicyManager#getStorageEncryptionStatus
 DevicePolicyManager.getStorageEncryptionStatus()} to check the current
 encryption status of the device. If your app is targeting an API level
-lower than Android N,
+lower than 24.0 (Android 7.0),
 {@link android.app.admin.DevicePolicyManager#getStorageEncryptionStatus
 getStorageEncryptionStatus()} will return
 {@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE
 ENCRYPTION_STATUS_ACTIVE} if the device is either using full-disk encryption,
 or file-based encryption with Direct Boot. In both of these cases, data is
 always stored encrypted at rest. If your app is targeting an API level of
-Android N or higher,
+24.0 or higher,
 {@link android.app.admin.DevicePolicyManager#getStorageEncryptionStatus
 getStorageEncryptionStatus()} will return
 {@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE
@@ -212,7 +217,7 @@
 with Direct Boot.</p>
 
 <p>If you build a device administration app
-that targets Android N, make sure to check for both
+that targets Android 7.0, make sure to check for both
 {@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE
 ENCRYPTION_STATUS_ACTIVE} and
 {@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE_PER_USER
diff --git a/docs/html/preview/features/scoped-folder-access.jd b/docs/html/training/articles/scoped-directory-access.jd
similarity index 60%
rename from docs/html/preview/features/scoped-folder-access.jd
rename to docs/html/training/articles/scoped-directory-access.jd
index 06dd665..1e0bf39 100644
--- a/docs/html/preview/features/scoped-folder-access.jd
+++ b/docs/html/training/articles/scoped-directory-access.jd
@@ -1,11 +1,10 @@
-page.title=Scoped Directory Access
-page.keywords=preview,sdk,scoped directory access
-page.tags=androidn
+page.title=Using Scoped Directory Access
+page.keywords=scoped directory access
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
   <h2>In this document</h2>
   <ol>
     <li><a href="#accessing">Accessing an External Storage Directory</a></li>
@@ -32,29 +31,37 @@
 external directory.</li>
 </ul>
 
-<p>Android N provides a new simplified API to access
-common external storage directories. </p>
+<p>Android 7.0 provides a simplified API to access common external storage
+directories.</p>
 
 <h2 id="accessing">Accessing an External Storage Directory</h2>
 
-<p>Use the <code>StorageManager</code> class to get the appropriate
-<code>StorageVolume</code> instance. Then, create an intent by calling the
-<code>StorageVolume.createAccessIntent()</code> method of that instance.
+<p>Use the {@link android.os.storage.StorageManager} class to get the
+appropriate {@link android.os.storage.StorageVolume} instance. Then, create
+an intent by calling the
+{@link android.os.storage.StorageVolume#createAccessIntent
+StorageVolume.createAccessIntent()} method of that instance.
 Use this intent to access external storage directories. To get a list of
-all available volumes, including removable media volumes, use
-<code>StorageManager.getVolumesList()</code>.</p>
+all available volumes, including removable media
+volumes, use {@link android.os.storage.StorageManager#getStorageVolumes
+StorageManager.getStorageVolumes()}.</p>
 
 <p>If you have information about a specific file, use
-<code>StorageManager.getStorageVolume(File)</code> to get the
-<code>StorageVolume</code> that contains the file. Call
-<code>createAccessIntent()</code> on this <code>StorageVolume</code> to access
+{@link android.os.storage.StorageManager#getStorageVolume
+StorageManager.getStorageVolume(File)} to get the
+{@link android.os.storage.StorageVolume} that contains the file. Call
+{@link android.os.storage.StorageVolume#createAccessIntent
+createAccessIntent()} on this
+{@link android.os.storage.StorageVolume} to access
 the external storage directory for the file.</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
+{@link android.os.storage.StorageVolume#createAccessIntent
+createAccessIntent()} to request access to the entire
 volume, instead of a specific directory.
-<code>StorageVolume.createAccessIntent()</code> returns null if you pass in
+{@link android.os.storage.StorageVolume#createAccessIntent
+createAccessIntent()} returns null if you pass in
 null to the primary volume, or if you pass in an invalid directory name.
 </p>
 
@@ -63,7 +70,7 @@
 
 <pre>
 StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
-StorageVolume volume = sm.getPrimaryVolume();
+StorageVolume volume = sm.getPrimaryStorageVolume();
 Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
 startActivityForResult(intent, request_code);
 </pre>
@@ -71,25 +78,27 @@
 <p>The system attempts to grant access to the external directory, and if
 necessary confirms access with the user using a simplified 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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-framed.png"
+srcset="{@docRoot}images/android-7.0/scoped-directory-access-framed.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-access-framed_2x.png 2x" />
 <p class="img-caption"><strong>Figure 1.</strong> An application requesting
 access to the Pictures directory.</p>
 
 <p>If the user grants access, the system calls your
-<code>onActivityResult()</code> override with a result code of
-<code>Activity.RESULT_OK</code>, and intent data that contains the URI. Use
+{@link android.app.Activity#onActivityResult onActivityResult()} override
+with a result code of {@link android.app.Activity#RESULT_OK
+RESULT_OK}, and intent data that contains the URI. Use
 the provided URI to access directory information, similar to using URIs
 returned by the
 <a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
 Access Framework</a>.</p>
 
 <p>If the user doesn't grant access, the system calls your
-<code>onActivityResult()</code> override with a result code of
-<code>Activity.RESULT_CANCELED</code>, and null intent data.</p>
+{@link android.app.Activity#onActivityResult onActivityResult()} override
+with a result code of {@link android.app.Activity#RESULT_CANCELED
+RESULT_CANCELED}, and null intent data.</p>
 
-<p class="note"><b>Note</b>: Getting access to a specific external directory
+<p>Getting access to a specific external directory
 also gains access to subdirectories within that directory.</p>
 
 <h2 id="removable">Accessing a Directory on Removable Media</h2>
@@ -112,9 +121,9 @@
 
 <p>When the user mounts removable media, like an SD card, the system sends a
 {@link android.os.Environment#MEDIA_MOUNTED} notification. This notification
-provides a <code>StorageVolume</code> object in the intent data that you can
-use to access directories on the removable media. The following example
-accesses the <code>Pictures</code> directory on removable media:</p>
+provides a {@link android.os.storage.StorageVolume} object in the intent data
+that you can use to access directories on the removable media. The following
+example accesses the <code>Pictures</code> directory on removable media:</p>
 
 <pre>
 // BroadcastReceiver has already cached the MEDIA_MOUNTED
@@ -129,19 +138,22 @@
 
 <p>Where possible, persist the external directory access URI so you don't have
 to repeatedly ask the user for access. Once the user has granted access, call
-<code>getContentResolver().takePersistableUriPermssion()</code> with the
-directory access URI. The system will persist the URI and subsequent access
-requests will return <code>RESULT_OK</code> and not show confirmation UI to the
-user.</p>
+{@link android.content.Context#getContentResolver getContentResolver()} and
+with the returned {@link android.content.ContentResolver} call
+{@link android.content.ContentResolver#takePersistableUriPermission
+takePersistableUriPermission()} with the directory access URI. The system will
+persist the URI and subsequent access requests will return
+{@link android.app.Activity#RESULT_OK RESULT_OK} and not show confirmation
+UI to the user.</p>
 
 <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. 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" />
+<img src="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png"
+srcset="{@docRoot}images/android-7.0/scoped-directory-access-dont-ask.png 1x,
+{@docRoot}images/android-7.0/scoped-directory-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>
 
diff --git a/docs/html/preview/features/security-config.jd b/docs/html/training/articles/security-config.jd
similarity index 77%
rename from docs/html/preview/features/security-config.jd
rename to docs/html/training/articles/security-config.jd
index 2706ced..90a93fa 100644
--- a/docs/html/preview/features/security-config.jd
+++ b/docs/html/training/articles/security-config.jd
@@ -1,11 +1,12 @@
 page.title=Network Security Configuration
-page.keywords=androidn,security,network
+page.keywords=security,network,config
+page.metaDescription=Feature that allows app developers to customize network security settings in a safe configuration file.
 page.image=images/cards/card-nyc_2x.jpg
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>In this document</h2>
 <ol>
@@ -28,11 +29,10 @@
 
 
 <p>
-  Android N includes a Network Security Configuration
-  feature that lets apps customize their network security settings in a safe,
-  declarative configuration file without modifying app code. These settings can
-  be configured for specific domains and for a specific app. The key
-  capabilities of this feature are as follows:
+  The Network Security Configuration feature lets apps customize their network
+  security settings in a safe, declarative configuration file without modifying
+  app code. These settings can be configured for specific domains and for a
+  specific app. The key capabilities of this feature are as follows:
 </p>
 
 <ul>
@@ -49,7 +49,7 @@
   </li>
 
   <li>
-    <b>Cleartext traffic opt-out:</b> Protect apps from from
+    <b>Cleartext traffic opt-out:</b> Protect apps from
     accidental usage of cleartext traffic.
   </li>
 
@@ -72,10 +72,10 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?&gt;
 &lt;manifest ... &gt;
-  &lt;application android:networkSecurityConfig="@xml/network_security_config"
-               ... &gt;
-    ...
-  &lt;/application&gt;
+    &lt;application android:networkSecurityConfig="@xml/network_security_config"
+                    ... &gt;
+        ...
+    &lt;/application&gt;
 &lt;/manifest&gt;
 </pre>
 
@@ -87,12 +87,12 @@
 </p>
 
 <ul>
-  <li>Connecting to a host with a custom certificate authority(self-signed,
-  issued by an internal corporate CA, etc).
+  <li>Connecting to a host with a custom certificate authority, such as a
+  CA that is self-signed or is issued internally within a company.
   </li>
 
   <li>Limiting the set of CAs to only the CAs you trust instead of every
-  preinstalled CA.
+  pre-installed CA.
   </li>
 
   <li>Trusting additional CAs not included in the system.
@@ -100,12 +100,11 @@
 </ul>
 
 <p>
-  By default secure (e.g. TLS, HTTPS) connections from all apps trust
-  the pre-installed system CAs, and apps targeting API level 23
-  (Android M) and below also trust the user-added CA store by default. An
-  app can customize its own connections using {@code base-config} (for
-  app-wide customization) or {@code domain-config} (for per-domain
-  customization).
+  By default, secure connections (using protocols like TLS and HTTPS) from all
+  apps trust the pre-installed system CAs, and apps targeting Android 6.0 (API
+  level 23) and lower also trust the user-added CA store by default. An app can
+  customize its own connections using {@code base-config} (for app-wide
+  customization) or {@code domain-config} (for per-domain customization).
 </p>
 
 
@@ -147,8 +146,8 @@
 </p>
 
 <p>
-  The config to limit the set of trusted CAs is similar to <a href=
-  "#TrustingACustomCa">trusting a custom CA</a> for a specific domain except
+  The configuration to limit the set of trusted CAs is similar to <a href=
+  "#ConfigCustom">trusting a custom CA</a> for a specific domain except
   that multiple CAs are provided in the resource.
 </p>
 
@@ -207,14 +206,14 @@
 <h2 id="TrustingDebugCa">Configuring CAs for Debugging</h2>
 
 <p>
-  When debugging an app that connects over HTTPS you may want to
+  When debugging an app that connects over HTTPS, you may want to
   connect to a local development server, which does not have the SSL
   certificate for your production server. In order to support this without any
-  modification to your app's code you can specify debug-only CAs that
-  are <i>only</i> trusted when <a href=
+  modification to your app's code, you can specify debug-only CAs, which
+  are trusted <i>only</i> when <a href=
   "{@docRoot}guide/topics/manifest/application-element.html#debug">
 android:debuggable</a>
-  is {@code true} by using {@code debug-overrides}. Normally IDEs and build
+  is {@code true}, by using {@code debug-overrides}. Normally, IDEs and build
   tools set this flag automatically for non-release builds.
 </p>
 
@@ -243,7 +242,7 @@
 
 <p>
   Applications intending to connect to destinations using only secure
-  connections can opt-out of supporting cleartext (using unencrypted HTTP
+  connections can opt-out of supporting cleartext (using the unencrypted HTTP
   protocol instead of HTTPS) to those destinations. This option helps prevent
   accidental regressions in apps due to changes in URLs provided by external
   sources such as backend servers.
@@ -273,29 +272,30 @@
 <h2 id="CertificatePinning">Pinning Certificates</h2>
 
 <p>
-  Normally an app trusts all preinstalled CAs. If any of these CAs were
-  to issue a fradulent certificate the app would be at risk from a MiTM
-  attack. Some apps choose to limit the set of certificates they accept
-  by either limiting the set of CAs they trust or by certificate pinning.
+  Normally, an app trusts all pre-installed CAs. If any of these CAs were to
+  issue a fradulent certificate, the app would be at risk from a
+  man-in-the-middle attack. Some apps choose to limit the set of certificates
+  they accept by either limiting the set of CAs they trust or by certificate
+  pinning.
 </p>
 
 <p>
   Certificate pinning is done by providing a set of certificates by hash of the
-  public key (SubjectPublicKeyInfo of the X.509 certificate). A certificate
-  chain is then only valid if the certificate chain contains at least one of
-  the pinned public keys.
+  public key (<code>SubjectPublicKeyInfo</code> of the X.509 certificate). A
+  certificate chain is then valid only if the certificate chain contains at
+  least one of the pinned public keys.
 </p>
 
 <p>
-  Note that when using certificate pinning you should always include a backup
-  key so that if you are forced to switch to new keys, or change CAs (when
+  Note that, when using certificate pinning, you should always include a backup
+  key so that if you are forced to switch to new keys or change CAs (when
   pinning to a CA certificate or an intermediate of that CA), your
-  app's connectivity is unaffected. Otherwise you must to push out
+  app's connectivity is unaffected. Otherwise, you must push out
   an update to the app to restore connectivity.
 </p>
 
 <p>
-  Additionally it is possible to set an expiration time for pins after which
+  Additionally, it is possible to set an expiration time for pins after which
   pinning is not performed. This helps prevent connectivity issues in
   apps which have not been updated. However, setting an expiration time
   on pins may enable pinning bypass.
@@ -322,24 +322,24 @@
 <h2 id="ConfigInheritance">Configuration Inheritance Behavior</h2>
 
 <p>
-  Values not set in a specific config are inherited. This behavior allows more
-  complex configurations while keeping the configuration file readable.
+  Values not set in a specific configuration are inherited. This behavior allows
+  more complex configurations while keeping the configuration file readable.
 </p>
 
 <p>
-  If a value is not set in a specific entry then value from the next more
-  general entry is used. Values not set in a {@code domain-config} is
-  taken from the parent {@code domain-config}, if nested, or from the {@code
-  base-config} if not. Values not set in the {@code base-config} uses the
+  If a value is not set in a specific entry, then the value from the more
+  general entry is used. For example, values not set in a {@code domain-config}
+  are taken from the parent {@code domain-config}, if nested, or from the {@code
+  base-config} if not. Values not set in the {@code base-config} use the
   platform default values.
 </p>
 
 <p>
-  For example consider, where all connections to subdomains of {@code
-  example.com} must use a custom set of CAs. Additonally cleartext traffic to
+  For example, consider where all connections to subdomains of {@code
+  example.com} must use a custom set of CAs. Additonally, cleartext traffic to
   these domains is permitted <em>except</em> when connecting to {@code
   secure.example.com}. By nesting the configuration for {@code
-  secure.example.com} inside the configuration for {@code example.com} the
+  secure.example.com} inside the configuration for {@code example.com}, the
   {@code trust-anchors} does not need to be duplicated.
 </p>
 
@@ -458,7 +458,8 @@
 
 <p>
   Any values that are not set use the platform default values. The default
-  configuration for apps targeting above API level 24 and above:
+  configuration for apps targeting Android 7.0 (API level 24) and higher is as
+  follows:
 </p>
 
 <pre>
@@ -468,7 +469,8 @@
     &lt;/trust-anchors&gt;
 &lt;/base-config&gt;
 </pre>
-The default configuration for apps targeting API level 23 and below is:
+The default configuration for apps targeting Android 6.0 (API level 23) and
+lower is as follows:
 <pre>
 &lt;base-config cleartextTrafficPermitted="true"&gt;
     &lt;trust-anchors&gt;
@@ -499,13 +501,14 @@
 <br/>Any number of nested <code>&lt;domain-config&gt;</code></dd>
 
 <dt>Description</dt>
-<dd>Configuration used for connections to specific destinations as the defined by {@code domain} elements.
+<dd>Configuration used for connections to specific destinations, as defined by
+the {@code domain} elements.
 
-<p>Note that if multiple {@code domain-config} elements cover a destination the config with the most specific (longest)
-matching domain rule is used.</p></dd>
+<p>Note that if multiple {@code domain-config} elements cover a destination, the
+configuration with the most specific (longest) matching domain rule is
+used.</p></dd>
 </dl>
 
-
 <h3 id="domain">&lt;domain&gt;</h3>
 
 <dl class="xml">
@@ -530,8 +533,8 @@
       </dt>
 
       <dd>
-        If {@code "true"} then this domain rule matches the domain and all
-        subdomains, including subdomains of subdomains, otherwise the rule only
+        If {@code "true"}, then this domain rule matches the domain and all
+        subdomains, including subdomains of subdomains. Otherwise, the rule only
         applies to exact matches.
       </dd>
     </dl>
@@ -572,13 +575,13 @@
   <dd>
     Overrides to be applied when <a href=
     "{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
-    is {@code "true"} which is normally the case for non-release builds
+    is {@code "true"}, which is normally the case for non-release builds
     generated by IDEs and build tools. Trust anchors specified in {@code
-    debug-overrides} are added to all other configurations and certificate
+    debug-overrides} are added to all other configurations, and certificate
     pinning is not performed when the server's certificate chain uses one of
     these debug-only trust anchors. If <a href=
     "{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
-    is {@code "false"} then this section is completely ignored.
+    is {@code "false"}, then this section is completely ignored.
   </dd>
 </dl>
 
@@ -627,11 +630,11 @@
 <dd><dl class="attr">
 <dt>{@code src}</dt>
 <dd>
-The source of CA certificates, can be one of
+The source of CA certificates. Each certificate can be one of the following:
 <ul>
-  <li>a raw resource id pointing to a file containing X.509 certificates.
+  <li>a raw resource ID pointing to a file containing X.509 certificates.
   Certificates must be encoded in DER or PEM format. In the case of PEM
-  certificates the file <em>must not</em> contain extra non-PEM data such as
+  certificates, the file <em>must not</em> contain extra non-PEM data such as
   comments.
   </li>
 
@@ -647,9 +650,9 @@
 <dd>
   <p>
     Specifies if the CAs from this source bypass certificate pinning. If {@code
-    "true"} then certificate chains which chain through one of the CAs from this
-    source then pinning is not be performed. This can be useful for debug CAs
-    or to support letting the user MiTM your app's secure traffic.
+    "true"}, then pinning is not performed on certificate chains which are
+    signed by one of the CAs from this source. This can be useful for debugging
+    CAs or for testing man-in-the-middle attacks on your app's secure traffic.
   </p>
 
   <p>
@@ -705,13 +708,12 @@
       </dt>
 
       <dd>
-        The date, in {@code yyyy-MM-dd} format, at and after which the pins
-        expire, thus disabling pinning. If the attribute is not set then the
-        pins do not expire.
+        The date, in {@code yyyy-MM-dd} format, on which the pins expire, thus
+        disabling pinning. If the attribute is not set, then the pins do not
+        expire.
         <p>
-          Expiration helps prevent connectivity issues in apps which do
-          not get updates to their pin set, for example because the user
-          disabled app updates.
+          Expiration helps prevent connectivity issues in apps which do not get
+          updates to their pin set, such as when the user disables app updates.
         </p>
       </dd>
     </dl>
@@ -742,7 +744,7 @@
       </dt>
 
       <dd>
-        The digest algorithm used to generate the pin. Currently only
+        The digest algorithm used to generate the pin. Currently, only
         {@code "SHA-256"} is supported.
       </dd>
     </dl>
diff --git a/docs/html/preview/features/key-attestation.jd b/docs/html/training/articles/security-key-attestation.jd
similarity index 92%
rename from docs/html/preview/features/key-attestation.jd
rename to docs/html/training/articles/security-key-attestation.jd
index 5be6dfa..9145d30 100644
--- a/docs/html/preview/features/key-attestation.jd
+++ b/docs/html/training/articles/security-key-attestation.jd
@@ -1,11 +1,11 @@
 page.title=Key Attestation
-page.metaDescription=New support in Android N for verifying security properties of hardware-backed keys.
-page.keywords="android N", "security", "TEE", "hardware-backed", "keystore", "certificate", "key attestation"
+page.metaDescription=A tool for verifying security properties of hardware-backed key pairs.
+page.keywords="security", "TEE", "hardware-backed", "keystore", "certificate", "key attestation"
 
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+  <div id="tb">
     <h2>In this document</h2>
       <ol>
         <li><a href="#verifying">Retrieving and Verifying a Hardware-backed Key Pair</a></li>
@@ -22,14 +22,14 @@
 </p>
 
 <p class="note">
-  <strong>Note: </strong>Only a small number of devices running Android N
-  support hardware-level key attestation; all other devices running Android N
-  use software-level key attestation instead. Before you verify the properties
-  of a device's hardware-backed keys in a production-level environment, you
-  should make sure that the device supports hardware-level key attestation. To
-  do so, you should check that the attestation certificate chain contains a root
-  certificate that is signed by the Google attestation root key and that the
-  <code>attestationSecurityLevel</code> element within the <a
+  <strong>Note: </strong>Only a small number of devices running Android 7.0 (API
+  level 24) support hardware-level key attestation; all other devices running
+  Android 7.0 use software-level key attestation instead. Before you verify the
+  properties of a device's hardware-backed keys in a production-level
+  environment, you should make sure that the device supports hardware-level key
+  attestation. To do so, you should check that the attestation certificate chain
+  contains a root certificate that is signed by the Google attestation root key
+  and that the <code>attestationSecurityLevel</code> element within the <a
   href="#certificate_schema_keydescription">key description</a> data structure
   is set to the TrustedEnvironment security level.
 </p>
@@ -45,15 +45,17 @@
 </p>
 
 <p>
-  The root certificate within this chain is signed using an attestation key,
-  which the device manufacturer injects into the device’s hardware-backed
-  keystore at the factory.
+  If the device supports hardware-level key attestation, the root certificate
+  within this chain is signed using an attestation root key, which the device
+  manufacturer injects into the device’s hardware-backed keystore at the
+  factory.
 </p>
 
 <p class="note">
-  <strong>Note:</strong> On devices that ship with Android N and Google Play
-  services, the root certificate is issued by Google. You should verify that
-  this root certificate appears within Google’s list of root certificates.
+  <strong>Note:</strong> On devices that ship with hardware-level key
+  attestation, Android 7.0 (API level 24), and Google Play services, the root
+  certificate is signed by the Google attestation root key. You should verify
+  that this root certificate appears within Google’s list of root certificates.
 </p>
 
 <p>
@@ -231,7 +233,7 @@
   </dd>
 
   <dt>
-    <code>attestationSecurity</code>
+    <code>attestationSecurityLevel</code>
   </dt>
 
   <dd>
@@ -242,8 +244,8 @@
 
     <p class="caution">
       <strong>Warning:</strong> Although it is possible to attest keys that are
-      stored in the Android system&mdash;that is, if the
-      <code>attestationSecurity</code> value is set to Software&mdash;you
+      stored in the Android system&mdash;that is, if the value of
+      <code>attestationSecurityLevel</code> is set to Software&mdash;you
       cannot trust these attestations if the Android system becomes compromised.
     </p>
   </dd>
@@ -259,7 +261,7 @@
   </dd>
 
   <dt>
-    <code>keymasterSecurity</code>
+    <code>keymasterSecurityLevel</code>
   </dt>
 
   <dd>
@@ -357,7 +359,8 @@
 <p>
   Each field name corresponds to a similarly-named Keymaster tag. For example,
   the <code>keySize</code> field in an authorization list corresponds to the
-  <code>KM_TAG_KEY_SIZE</code> Keymaster tag.
+  <a href="https://source.android.com/security/keystore/implementer-ref.html#km_tag_key_size">
+  <code>KM_TAG_KEY_SIZE</code></a> Keymaster tag.
 </p>
 
 <p>
@@ -780,7 +783,7 @@
   <dd>
     The month and year associated with the security patch that is currently
     installed on the device, specified as a six-digit integer. For example, the
-    June 2016 patch is represented as 201606.
+    August 2016 patch is represented as 201608.
   </dd>
 </dl>
 
diff --git a/docs/html/training/backup/backupapi.jd b/docs/html/training/backup/backupapi.jd
index b115b8b..2f3e939 100644
--- a/docs/html/training/backup/backupapi.jd
+++ b/docs/html/training/backup/backupapi.jd
@@ -1,5 +1,5 @@
 page.title=Using the Backup API
-parent.title=Syncing to the Cloud
+parent.title=Backing up App Data to the Cloud
 parent.link=index.html
 
 trainingnavtop=true
diff --git a/docs/html/training/basics/activity-lifecycle/pausing.jd b/docs/html/training/basics/activity-lifecycle/pausing.jd
index 7ca97aa..64fa60b 100644
--- a/docs/html/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html/training/basics/activity-lifecycle/pausing.jd
@@ -32,25 +32,34 @@
   </div>
 </div>
 
-<p>During normal app use, the foreground activity is sometimes obstructed by other
-visual components that cause the activity to <em>pause</em>.  For example, when a semi-transparent
-activity opens (such as one in the style of a dialog), the previous activity pauses. As long as the
-activity is still partially visible but currently not the activity in focus, it remains paused.</p>
+<p>
+  During normal app use, the app sometimes loses focus, causing the activity to
+  <em>pause</em>. For example, when apps run in <a href=
+  "{@docRoot}guide/topics/ui/multi-window.html">multi-window mode</a>, only one
+  of the apps has the focus at any time; the system pauses all other apps. Similarly,
+  when a semi-transparent activity opens (such as one in the style of a
+  dialog), the previous activity pauses. As long as the activity is still
+  partially visible but currently not the activity in focus, it remains paused.
+</p>
 
 <p>However, once the activity is fully-obstructed and not visible, it <em>stops</em> (which is
 discussed in the next lesson).</p>
 
 <p>As your activity enters the paused state, the system calls the {@link
 android.app.Activity#onPause onPause()} method on your {@link android.app.Activity}, which allows
-you to stop ongoing actions that should not continue while paused (such as a video) or persist
+you to stop ongoing actions that should not continue while paused or persist
 any information that should be permanently saved in case the user continues to leave your app. If
 the user returns to your activity from the paused state, the system resumes it and calls the
 {@link android.app.Activity#onResume onResume()} method.</p>
 
-<p class="note"><strong>Note:</strong> When your activity receives a call to {@link
-android.app.Activity#onPause()}, it may be an indication that the activity will be paused for a
-moment and the user may return focus to your activity. However, it's usually the first indication
-that the user is leaving your activity.</p>
+<p class="note">
+  <strong>Note:</strong> When the system calls your activity's {@link
+  android.app.Activity#onPause()} method, the system may be signaling that the
+  activity will be paused for a moment and the user may return focus to your
+  activity, or that the app is running in multi-window mode. However, this
+  method call may also be the first indication that the user is leaving your
+  activity.
+</p>
 
 <img src="{@docRoot}images/training/basics/basic-lifecycle-paused.png" />
 <p class="img-caption"><strong>Figure 1.</strong> When a semi-transparent activity obscures
@@ -67,7 +76,11 @@
 the {@link android.app.Activity#onPause()} callback to:</p>
 
 <ul>
-  <li>Stop animations or other ongoing actions that could consume CPU.</li>
+  <li>Check if the activity is visible; if it is not, stop animations or other
+    ongoing actions that could consume CPU. Remember, beginning with Android
+    7.0, a paused app might be running in <a
+    href="{@docRoot}guide/topics/ui/multi-window.html">multi-window mode</a>.
+    In this case, you would not want to stop animations or video playback.</li>
   <li>Commit unsaved changes, but only if users expect such changes to be permanently saved when
 they leave (such as a draft email).</li>
   <li>Release system resources, such as broadcast receivers, handles to sensors (like
diff --git a/docs/html/preview/features/data-saver.jd b/docs/html/training/basics/network-ops/data-saver.jd
similarity index 87%
rename from docs/html/preview/features/data-saver.jd
rename to docs/html/training/basics/network-ops/data-saver.jd
index abc47ea..75b7264 100644
--- a/docs/html/preview/features/data-saver.jd
+++ b/docs/html/training/basics/network-ops/data-saver.jd
@@ -1,42 +1,39 @@
-page.title=Data Saver
-metaDescription=User-enabled data usage optimization.
-page.keywords="android N", "data usage", "metered network"
-page.image=images/cards/card-nyc_2x.jpg
+page.title=Optimizing Network Data Usage
+parent.title=Performing Network Operations
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Parsing XML Data
+next.link=xml.html
+
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>
-      In this document
-    </h2>
+<div id="tb-wrapper">
+<div id="tb">
 
-    <ol>
-      <li>
-        <a href="#status">Checking Data Saver Preferences</a>
-        <ol>
-          <li>
-            <a href="#request-whitelist">Requesting whitelist permissions</a>
-          </li>
-        </ol>
-      </li>
 
-      <li>
-        <a href="#monitor-changes">Monitoring Changes to Data Saver
-        Preferences</a>
-      </li>
 
-      <li>
-        <a href="#testing">Testing with Android Debug Bridge Commands</a>
-      </li>
-    </ol>
-  </div>
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#status">Check Data-Saver Preferences</a>
+  <ul>
+     <li><a href="#request-whitelist">Request whitelist permissions</a></li>
+  </ul>
+  </li>
+  <li><a href="#monitor-changes">Monitor Changes to Data Saver Preferences</a></li>
+  <li><a href="#testing">Test with Android Debug Bridge Commands</a></li>
+</ol>
+
+</div>
 </div>
 
 <p>
   Over the life of a smartphone, the cost of a cellular data plan can easily
-  exceed the cost of the device itself. In the N Developer Preview, users can
-  enable Data Saver on a device-wide basis in order to use less data, whether
-  roaming, near the end of the billing cycle, or on a small prepaid data pack.
+  exceed the cost of the device itself. From Android 7.0 (API level 24),
+  users users can enable Data Saver on a device-wide basis in order
+  optimize their device's data usage, and use less data. This ability
+  is especially useful when roaming, near the end of the billing cycle,
+  or for a small prepaid data pack.
 </p>
 
 <p>
@@ -253,4 +250,4 @@
     Sets wifi with the specified SSID as metered, allowing you to simulate a
     metered network on an unmetered network.
   </dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html/training/basics/network-ops/managing.jd b/docs/html/training/basics/network-ops/managing.jd
index 2609db5..a29e874 100644
--- a/docs/html/training/basics/network-ops/managing.jd
+++ b/docs/html/training/basics/network-ops/managing.jd
@@ -6,8 +6,8 @@
 
 previous.title=Connecting to the Network
 previous.link=connecting.html
-next.title=Parsing XML Data
-next.link=xml.html
+next.title=Optimizing Network Data Usage
+next.link=data-saver.html
 
 @jd:body
 
diff --git a/docs/html/training/gestures/index.jd b/docs/html/training/gestures/index.jd
index fad1afa..1b8f4c1 100644
--- a/docs/html/training/gestures/index.jd
+++ b/docs/html/training/gestures/index.jd
@@ -48,7 +48,7 @@
 provide users with a consistent, intuitive experience, your app should follow
 the accepted Android conventions for touch gestures. The <a
 href="http://developer.android.com/design/patterns/gestures.html">Gestures
-design guide</a><a href="{@docRoot}design/patterns/notifications.html"></a>
+design guide</a><a href="https://material.google.com/patterns/notifications.html"></a>
 shows you how to use common gestures in Android apps. Also see the Design Guide
 for <a href="{@docRoot}design/style/touch-feedback.html">Touch Feedback</a>.  </p>
 
diff --git a/docs/html/training/in-app-billing/preparing-iab-app.jd b/docs/html/training/in-app-billing/preparing-iab-app.jd
old mode 100755
new mode 100644
index 2c6e9a0..780f2f80
--- a/docs/html/training/in-app-billing/preparing-iab-app.jd
+++ b/docs/html/training/in-app-billing/preparing-iab-app.jd
@@ -31,23 +31,32 @@
 </div>
 
 <a class="notice-developers-video wide"
-href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o">
+href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o" class="external-link">
 <div>
     <h3>Video</h3>
     <p>Implementing Freemium</p>
   </div>
   </a>
 
-<p>Before you can start using the In-app Billing service, you'll need to add the library that contains the In-app Billing Version 3 API to your Android project. You also need to set the permissions for your application to communicate with Google Play. In addition, you'll need to establish a connection between your application and  Google Play. You should also verify that the In-app Billing API version that you are using in your application is supported by Google Play.</p>
+<p>Before you can start using the In-app Billing service, you need to add the library that
+ contains the In-app Billing Version 3 API to your Android project. You also need to set the
+ permissions for your application to communicate with Google Play. In addition, you need to
+ establish a connection between your application and  Google Play. You must also verify that
+ the In-app Billing API version that you are using in your application is supported
+ by Google Play.</p>
 
 <h2 id="GetSample">Download the Sample Application</h2>
-<p>In this training class, you will use a reference implementation for the In-app Billing Version 3 API called the {@code TrivialDrive} sample application. The sample includes convenience classes to quickly set up the In-app Billing service, marshal and unmarshal data types, and handle In-app Billing requests from the main thread of your application.</p>
-<p>To download the sample application:</p>
+<p>In this training class, you use a reference implementation for the In-app Billing
+ Version 3 API
+ called the {@code TrivialDrive} sample application. The sample includes convenience classes to
+ quickly set up the In-app Billing service, marshal and unmarshal data types, and handle In-app
+ Billing requests from the main thread of your application.</p>
+<p>To download the sample application, follow these steps:</p>
 <ol>
 <li>Open Android Studio and then close any open projects until you are
 presented with the welcome screen.</li>
-<li>Choose <strong>Import an Android code sample</strong> from the
-  <strong>Quick Start</strong> list on the right side the window.</li>
+<li>From the <strong>Quick Start</strong> list on the right side of the window, choose
+ <strong>Import an Android code sample</strong>.</li>
 <li>Type {@code Trivial Drive} into the search bar and select the
   <strong>Trivial Drive</strong> sample.</li>
 <li>Follow the rest of the instructions in the <strong>Import Sample</strong>
@@ -56,66 +65,121 @@
 </ol>
 
 <p>Alternatively, you can use {@code git} to manually clone
- the repository from <a
+ the repository from the <a
  href="https://github.com/googlesamples/android-play-billing"
- class="external-link">https://github.com/googlesamples/android-play-billing</a></p>
+ class="external-link">Google Samples</a> GitHub site.</p>
 
 <h2 id="AddToDevConsole">Add Your Application to the Developer Console</h2>
-<p>The Google Play Developer Console is where you publish your In-app Billing application and  manage the various digital goods that are available for purchase from your application. When you create a new application entry in the Developer Console, it automatically generates a public license key for your application. You will need this key to establish a trusted connection from your application to the Google Play servers. You only need to generate this key once per application, and don’t need to repeat these steps when you update the APK file for your application.</p>
-<p>To add your application to the Developer Console:</p>
+<p>The Google Play Developer Console is where you publish your In-app Billing application
+ and  manage the various digital products that are available for purchase from your
+ application.
+ When you create a new application entry in the Developer Console, it automatically generates
+ a public license key for your application. You need this key to establish a trusted connection
+ from your application to the Google Play servers. You need to generate this key only once
+ per application, and you don’t need to repeat these steps when you update the APK file for
+ your application.</p>
+<p>To add your application to the Developer Console, follow these steps:</p>
 <ol>
-<li>Go to the <a href="http://play.google.com/apps/publish">Google Play Developer Console</a> site and log in. You will need to register for a new developer account, if you have not registered previously. To sell in-app items, you also need to have a <a href="http://www.google.com/wallet/merchants.html">Google payments</a> merchant account.</li>
-<li>Click on <strong>Try the new design</strong> to access the preview version of the Developer Console, if you are not already logged on to that version. </li>
-<li>In the <strong>All Applications</strong> tab, add a new application entry.
+<li>Go to the <a href="http://play.google.com/apps/publish" class="external-link">
+Google Play Developer Console</a>
+ site and log in. If you have not registered previously, you need to register for a new
+ developer account. To sell in-app products, you also need a
+ <a href="http://www.google.com/wallet/merchants.html" class="external-link">
+ Google payments</a> merchant account.</li>
+
+<li>In the <strong>All Applications</strong> tab, complete these steps to add a new
+ application entry:
 <ol type="a">
 <li>Click <strong>Add new application</strong>.</li>
 <li>Enter a name for your new In-app Billing application.</li>
 <li>Click <strong>Prepare Store Listing</strong>.</li>
 </ol>
 </li>
-<li>In the <strong>Services & APIs</strong> tab, find and make a note of the public license key that Google Play generated for your application. This is a Base64 string that you will need to include in your application code later.</li>
+<li>In the <strong>Services & APIs</strong> tab, find and make a note of the public license key
+ that Google Play generated for your application. This is a Base64 string that you need to
+ include in your application code later.</li>
 </ol>
 <p>Your application should now appear in the list of applications in Developer Console.</p>
 
 <h2 id="AddLibrary">Add the In-app Billing Library</h2>
-<p>To use the In-app Billing Version 3 features, you must add the {@code IInAppBillingService.aidl} file to your Android project. This Android Interface Definition Language (AIDL) file defines the interface to the Google Play service.</p>
-<p>You can find the {@code IInAppBillingService.aidl} file in the provided sample app. Depending on whether you are creating a new application or modifying an existing application, follow the instructions below to add the In-app Billing Library to your project.</p>
-<h3>New Project</h3>
-<p>To add the In-app Billing Version 3 library to your new In-app Billing project:</p>
+<p>To use the In-app Billing Version 3 features, you must add the
+ {@code IInAppBillingService.aidl}
+ file to your Android project. This Android Interface Definition Language
+ (AIDL) file defines the
+ interface to the Google Play service.</p>
+<p>You can find the {@code IInAppBillingService.aidl} file in the provided sample app.
+ To add the
+ In-app Billing library to your project, follow the instructions below for a new or
+ existing project.</p>
+<h3>Adding in-app billing to a new project</h3>
+<p>To add the In-app Billing Version 3 library to a new project, follow these steps:</p>
 <ol>
 <li>Copy the {@code TrivialDrive} sample files into your Android project.</li>
-<li>Modify the package name in the files you copied to use the package name for your project. In Android Studio, you can use this shortcut: right-click the package name, then  select <strong>Refactor</strong> > <strong>Rename</strong>.</li>
-<li>Open the {@code AndroidManifest.xml} file and update the package attribute value to use the package name for your project.</li>
-<li>Fix import statements as needed so that your project compiles correctly.  In Android Studio, you can use this shortcut: press <strong>Ctrl+Shift+O</strong> in each file showing errors.</li>
-<li>Modify the sample to create your own application. Remember to copy the Base64 public license key for your application from the Developer Console over to your {@code MainActivity.java}.</li>
+<li>Modify the package name in the files that you copied to use the package name
+ for your project.
+ In Android Studio, you can right-click the package name and then
+ select <strong>Refactor</strong> > <strong>Rename</strong>.</li>
+<li>Open the {@code AndroidManifest.xml} file and update the package attribute value to
+ use the package name for your project.</li>
+<li>Fix import statements as needed so that your project compiles correctly.
+ In Android Studio, you can press <strong>Ctrl+Shift+O</strong>
+ in each file showing errors.</li>
+<li>Modify the sample to create your own application. Remember to copy the Base64
+ public license key for your application from the Developer Console to
+ your {@code MainActivity.java}.</li>
 </ol>
 
-<h3>Existing Project</h3>
-<p>To add the In-app Billing Version 3 library to your existing In-app Billing project:</p>
+<h3>Adding in-app billing to an existing project</h3>
+<p>To add the In-app Billing Version 3 library to an existing project, follow these steps:</p>
 <ol>
 <li>Copy the {@code IInAppBillingService.aidl} file to your Android project.
   <ul>
-  <li>In Android Studio: Create a directory named {@code aidl} under {@code src/main}, add a new
-  package {@code com.android.vending.billing} in this directory, and import the
+  <li>In Android Studio: Create a directory named {@code aidl} under {@code src/main},
+  add a new
+  package {@code com.android.vending.billing} in this directory, and then import the
   {@code IInAppBillingService.aidl} file into this package.</li>
-  <li>In other dev environments: Create the following directory {@code /src/com/android/vending/billing} and copy the {@code IInAppBillingService.aidl} file into this directory.</li>
+  <li>In other dev environments: Create the following directory
+  {@code /src/com/android/vending/billing} and copy the {@code IInAppBillingService.aidl}
+  file into this directory.</li>
   </ul>
 </li>
-<li>Build your application. You should see a generated file named {@code IInAppBillingService.java} in the {@code /gen} directory of your project.</li>
-<li>Add the helper classes from the {@code /util} directory of the {@code TrivialDrive} sample to your project.  Remember to change the package name declarations in those files accordingly so that your project compiles correctly.</li>
+<li>Build your application. You should see a generated file named
+ {@code IInAppBillingService.java}
+ in the {@code /gen} directory of your project.</li>
+<li>Add the helper classes from the {@code /util} directory of the {@code TrivialDrive}
+ sample to
+ your project.  Remember to change the package name declarations in those files
+ accordingly so
+ that your project compiles correctly.</li>
 </ol>
 <p>Your project should now contain the In-app Billing Version 3 library.</p>
 
 <h2 id="SetPermission">Set the Billing Permission</h2>
-<p>Your app needs to have permission to communicate request and response messages to the Google Play’s billing service. To give your app the necessary permission, add this line in your {@code AndroidManifest.xml} manifest file:</p>
+<p>Your app needs to have permission to communicate request and response messages to
+ the Google Play billing service. To give your app the necessary permission, add the following
+ line in your {@code AndroidManifest.xml} manifest file:</p>
 <pre>
 &lt;uses-permission android:name="com.android.vending.BILLING" /&gt;
 </pre>
 
 <h2 id="Connect">Initiate a Connection with Google Play</h2>
-<p>You must bind your Activity to Google Play’s In-app Billing service to send In-app Billing requests to Google Play from your application. The convenience classes provided in the sample handles the binding to the In-app Billing service, so you don’t have to manage the network connection directly.</p>
-<p>To set up synchronous communication with Google Play, create an {@code IabHelper} instance in your activity's {@code onCreate} method. In the constructor, pass in the {@code Context} for the activity, along with a string containing the public license key that was generated earlier by the Google Play Developer Console. </p>
-<p class="note"><strong>Security Recommendation:</strong> It is highly recommended that you do not hard-code the exact public license key string value as provided by Google Play. Instead, you can construct the whole public license key string at runtime from substrings, or retrieve it from an encrypted store, before passing it to the constructor. This approach makes it more difficult for malicious third-parties to modify the public license key string in your APK file.</p>
+<p>To send In-app
+ Billing requests to Google Play from your application, you must bind your Activity
+ to the Google Play In-app Billing service. The sample includes convenience classes
+ that handle the binding to the In-app Billing service, so you don’t have to
+ manage the network connection directly.</p>
+<p>To set up synchronous communication with Google Play, create an {@code IabHelper}
+ instance in your activity's {@code onCreate} method, as shown in the following example.
+ In the constructor, pass in the {@code Context} for the activity along with a string
+ containing the public license key that was generated earlier by the Google Play
+ Developer Console.
+</p>
+<p class="caution"><strong>Security Recommendation:</strong> Google highly recommends that
+ you do not hard-code the exact public license key string value as provided by Google Play.
+ Instead, construct the whole public license key string at runtime from substrings
+ or retrieve it from an encrypted store before passing it to the constructor.
+ This approach makes it more difficult for malicious third parties to modify the public
+ license key string in your APK file.</p>
 
 <pre>
 IabHelper mHelper;
@@ -130,13 +194,20 @@
 }
 </pre>
 
-<p>Next, perform the service binding by calling the {@code startSetup} method on the {@code IabHelper} instance that you created.  Pass the method an {@code OnIabSetupFinishedListener} instance, which is called once the {@code IabHelper} completes the asynchronous setup operation. As part of the setup process, the {@code IabHelper} also checks if the In-app Billing Version 3 API is supported by Google Play. If the API version is not supported, or if an error occured while establishing the service binding, the listener is notified and passed an {@code IabResult} object with the error message.</p>
+<p>Next, perform the service binding by calling the {@code startSetup} method on the
+ {@code IabHelper} instance that you created, as shown in the following example.
+ Pass the method an {@code OnIabSetupFinishedListener} instance, which is called once
+ the {@code IabHelper} completes the asynchronous setup operation. As part of the
+ setup process, the {@code IabHelper} also checks if the In-app Billing Version 3 API
+ is supported by Google Play. If the API version is not supported, or if an error occurs
+ while establishing the service binding, the listener is notified and passed an
+ {@code IabResult} object with the error message.</p>
 
 <pre>
 mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
    public void onIabSetupFinished(IabResult result) {
       if (!result.isSuccess()) {
-         // Oh noes, there was a problem.
+         // Oh no, there was a problem.
          Log.d(TAG, "Problem setting up In-app Billing: " + result);
       }
          // Hooray, IAB is fully set up!
@@ -144,9 +215,18 @@
 });
 </pre>
 
-<p>If the setup completed successfully, you can now use the {@code mHelper} reference to communicate with the Google Play service. When your application is launched, it is a good practice to query Google Play to find out what in-app items are owned by a user. This is covered further in the <a href="{@docRoot}training/in-app-billing/purchase-iab-products.html#QueryPurchases">Query Purchased Items</a> section.</p>
+<p>If the setup completed successfully, you can now use the {@code mHelper} reference
+ to communicate with the Google Play service. When your application is launched, it is
+ a good practice to query Google Play to find out what in-app items are owned by a user.
+ This is covered further in the
+ <a href="{@docRoot}training/in-app-billing/purchase-iab-products.html#QueryPurchases">
+ Query Purchased Items</a> section.</p>
 
-<p class="note"><strong>Important:</strong> Remember to unbind from the In-app Billing service when you are done with your activity. If you don’t unbind, the open service connection could cause your device’s performance to degrade. To unbind and free your system resources, call the {@code IabHelper}'s {@code dispose} method when your {@code Activity} is destroyed.</p>
+<p class="caution"><strong>Important:</strong> Remember to unbind from the In-app Billing service
+ when you are done with your activity. If you don’t unbind, the open service connection could
+ degrade device performance. To unbind and free your system resources, call the
+ {@code IabHelper}'s {@code dispose} method when your {@code Activity} is destroyed,
+ as shown in the following example.</p>
 
 <pre>
 &#64;Override
@@ -156,8 +236,3 @@
    mHelper = null;
 }
 </pre>
-
-
-
-
-
diff --git a/docs/html/training/monitoring-device-state/doze-standby.jd b/docs/html/training/monitoring-device-state/doze-standby.jd
index 9250288..7caef402 100644
--- a/docs/html/training/monitoring-device-state/doze-standby.jd
+++ b/docs/html/training/monitoring-device-state/doze-standby.jd
@@ -306,25 +306,22 @@
 </p>
 
 <p>
-  An app that is whitelisted can use the network and hold
-
-  <a href="{@docRoot}reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK">
-  partial wake locks</a> during Doze and
-  App Standby. However, <strong>other restrictions still apply</strong> to the
-  whitelisted app, just as they do to other apps. For example, the whitelisted
-  app’s jobs and syncs are deferred, and its regular {@link android.app.AlarmManager} alarms do not
-  fire. An app can check whether it is currently on the exemption whitelist by
-  calling {@link
+  An app that is whitelisted can use the network and hold <a href=
+  "{@docRoot}reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK">partial
+  wake locks</a> during Doze and App Standby. However, <strong>other
+  restrictions still apply</strong> to the whitelisted app, just as they do to
+  other apps. For example, the whitelisted app’s jobs and syncs are deferred
+  (on API level 23 and below), and its regular {@link android.app.AlarmManager}
+  alarms do not fire. An app can check whether it is currently on the exemption
+  whitelist by calling {@link
   android.os.PowerManager#isIgnoringBatteryOptimizations(java.lang.String)
   isIgnoringBatteryOptimizations()}.
-  </li>
 </p>
 
 <p>
   Users can manually configure the whitelist in <strong>Settings &gt; Battery
   &gt; Battery Optimization.</strong> Alternatively, the system provides
   ways for apps to ask users to whitelist them.
-
 </p>
 
 <ul>
diff --git a/docs/html/training/notify-user/build-notification.jd b/docs/html/training/notify-user/build-notification.jd
index dcc8685..7df2787 100644
--- a/docs/html/training/notify-user/build-notification.jd
+++ b/docs/html/training/notify-user/build-notification.jd
@@ -31,7 +31,7 @@
         </a>
     </li>
     <li>
-        <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design Guide
+        <a href="https://material.google.com/patterns/notifications.html">Notifications</a> Design Guide
     </li>
 </ul>
 
diff --git a/docs/html/training/notify-user/display-progress.jd b/docs/html/training/notify-user/display-progress.jd
index e2cf033..9018eb1 100644
--- a/docs/html/training/notify-user/display-progress.jd
+++ b/docs/html/training/notify-user/display-progress.jd
@@ -29,7 +29,7 @@
         </a>
     </li>
     <li>
-        <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design Guide
+        <a href="https://material.google.com/patterns/notifications.html">Notifications</a> Design Guide
     </li>
 </ul>
 
diff --git a/docs/html/training/notify-user/expanded.jd b/docs/html/training/notify-user/expanded.jd
index 23d85d4..60853ca 100644
--- a/docs/html/training/notify-user/expanded.jd
+++ b/docs/html/training/notify-user/expanded.jd
@@ -29,7 +29,7 @@
         </a>
     </li>
     <li>
-        <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design Guide
+        <a href="https://material.google.com/patterns/notifications.html">Notifications</a> Design Guide
     </li>
 </ul>
 
diff --git a/docs/html/training/notify-user/index.jd b/docs/html/training/notify-user/index.jd
index 57efd65..4d930e0 100644
--- a/docs/html/training/notify-user/index.jd
+++ b/docs/html/training/notify-user/index.jd
@@ -27,7 +27,7 @@
         </a>
     </li>
     <li>
-        <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design Guide
+        <a href="https://material.google.com/patterns/notifications.html">Notifications</a> Design Guide
     </li>
 </ul>
 
@@ -50,7 +50,7 @@
 </p>
 
 <p>
-    The <a href="{@docRoot}design/patterns/notifications.html">Notifications design guide</a> shows
+    The <a href="https://material.google.com/patterns/notifications.html">Notifications design guide</a> shows
     you how to design effective notifications and when to use them. This class shows you how to
     implement the most common notification designs.
 </p>
diff --git a/docs/html/training/notify-user/managing.jd b/docs/html/training/notify-user/managing.jd
index fc12cfb..c68d6f9 100644
--- a/docs/html/training/notify-user/managing.jd
+++ b/docs/html/training/notify-user/managing.jd
@@ -29,7 +29,7 @@
         </a>
     </li>
     <li>
-        <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design Guide
+        <a href="https://material.google.com/patterns/notifications.html">Notifications</a> Design Guide
     </li>
 </ul>
 
diff --git a/docs/html/training/notify-user/navigation.jd b/docs/html/training/notify-user/navigation.jd
index cdb7f3d..65f8d48b 100644
--- a/docs/html/training/notify-user/navigation.jd
+++ b/docs/html/training/notify-user/navigation.jd
@@ -29,7 +29,7 @@
         </a>
     </li>
     <li>
-        <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design Guide
+        <a href="https://material.google.com/patterns/notifications.html">Notifications</a> Design Guide
     </li>
 </ul>
 
diff --git a/docs/html/training/safebrowsing/index.jd b/docs/html/training/safebrowsing/index.jd
new file mode 100644
index 0000000..c6c72bf
--- /dev/null
+++ b/docs/html/training/safebrowsing/index.jd
@@ -0,0 +1,315 @@
+page.title=Checking URLs with the Safe Browsing API
+
+@jd:body
+
+
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>
+      In this document
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#tos">Terms of Service</a>
+      </li>
+
+      <li>
+        <a href="#api-key">Requesting and Registering an Android API Key</a>
+        <ol>
+          <li>
+            <a href="#manifest">Adding the Android API to your
+            AndroidManifest.xml</a>
+          </li>
+        </ol>
+      </li>
+
+      <li>
+        <a href="#connect-google-play">Connect to Google Play Services</a>
+      </li>
+
+      <li>
+        <a href="#url-check">Requesting a URL Check</a>
+        <ol>
+          <li>
+            <a href="#threat-types">Specifying threat types of interest</a>
+          </li>
+
+          <li>
+            <a href="#url-check-request">Send the URL check request</a>
+          </li>
+
+          <li>
+            <a href="#url-check-response">Read the URL check response</a>
+          </li>
+        </ol>
+      </li>
+
+      <li>
+        <a href="#warning-lang">Suggested Warning Language</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  SafetyNet provides services for determining whether a URL has been marked as
+  a known threat by Google.
+</p>
+
+<p>
+  The service provides an API your app can use to determine whether a
+  particular URL has been classified by Google as a known threat. Internally,
+  SafetyNet implements a client for the Safe Browsing Network Protocol v4
+  developed by Google. Both the client code and the v4 network protocol were
+  designed to preserve users' privacy, as well as keep battery and bandwidth
+  consumption to a minimum. This API allows you to take full advantage of
+  Google's Safe Browsing service on Android in the most resource-optimized way,
+  and without having to implement its network protocol.
+</p>
+
+<p>
+  This document shows you how to use SafetyNet for checking a URL for threat
+  types of interest.
+</p>
+
+<h2 id="tos">
+  Terms of Service
+</h2>
+
+<p>
+  By using the Safe Browsing API, you consent to be bound by the <a href=
+  "https://developers.google.com/safe-browsing/terms">Terms of Service</a>.
+  Please read and understand all applicable terms and policies before accessing
+  the Safe Browsing API.
+</p>
+
+<h2 id="api-key">
+  Requesting and Registering an Android API Key
+</h2>
+
+<p>
+  To create an API key, complete the following steps:
+</p>
+
+<ol>
+  <li>Go to the <a href="https://console.developers.google.com/project"
+    class="external-link">Google Developers Console</a>.
+  </li>
+
+  <li>On the upper toolbar, choose <strong>Select a project &gt;
+  <em>your-project-name</em></strong>.
+  </li>
+
+  <li>In the search box, enter <em>Safe Browsing APIs</em>; when the Safe
+  Browsing API name appears in the table, select it.
+  </li>
+
+  <li>After the page redisplays, select <strong>Enable</strong> then select
+  <strong>Go to Credentials</strong>.
+  </li>
+
+  <li>When the <em>Add credentials to your project</em> window appears, choose
+  your parameters then select <strong>What credentials do I need?</strong>.
+  </li>
+
+  <li>Enter a name for your API key then select <strong>Create API
+  key</strong>.
+  </li>
+
+  <li>
+    <p>
+      Your new API key appears; copy and paste this key for future use.
+    </p>
+
+    <p class="note">
+      <strong>Note:</strong> Your API key allows you to perform a URL check
+      10,000 times each day. The key, in this instance, should just be a
+      hexadecimal string, not part of a URL.
+    </p>
+  </li>
+
+  <li>Select <strong>Done</strong> to complete the process.
+  </li>
+</ol>
+
+<p>
+  If you need more help, check out the <a href=
+  "https://developers.google.com/console/help/new/">Google Developers Console
+  Help Center</a>.
+</p>
+
+<h3 id="manifest">
+  Adding the Android API key to your AndroidManifest.xml
+</h3>
+
+<p>
+  Once your key has been whitelisted, you need to add the key to the
+  <code>AndroidManifest.xml</code> file for your app:
+</p>
+
+<pre>
+&lt;application&gt;
+
+    ...
+
+   &lt;!-- SafetyNet API metadata --&gt;
+   &lt;meta-data android:name="com.google.android.safetynet.API_KEY"
+   android:value="<var>your-API-key</var>" /&gt;
+
+    ...
+
+&lt;/application&gt;
+</pre>
+<h2 id="connect-google-play">
+  Connect to Google Play Services
+</h2>
+
+<p>
+  The SafetyNet API is part of Google Play services. To connect to the API, you
+  need to create an instance of the Google Play services API client. For
+  details about using the client in your app, see <a href=
+  "https://developers.google.com/android/guides/api-client#Starting">Accessing
+  Google APIs</a>. Once you have established a connection to Google Play
+  services, you can use the Google API client classes to connect to the
+  SafetyNet API.
+</p>
+
+<p>
+  To connect to the API, in your activity's <code><a href=
+  "{@docRoot}reference/android/app/Activity.html#onCreate(android.os.Bundle)">onCreate()</a></code>
+  method, create an instance of Google API Client using <code><a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient.Builder">
+  GoogleApiClient.Builder</a></code>. Use the builder to add the SafetyNet API,
+  as shown in the following code example:
+</p>
+
+<pre>
+protected synchronized void buildGoogleApiClient() {
+    mGoogleApiClient = new GoogleApiClient.Builder(this)
+            .addApi(SafetyNet.API)
+            .addConnectionCallbacks(myMainActivity.this)
+            .build();
+}
+</pre>
+<p class="note">
+  <strong>Note:</strong> You can only call these methods after your app has
+  established a connection to Google Play services by receiving the <code>
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks#public-methods">
+  onConnected()</a></code> callback. For details about listening for a completed
+  client connection, see <a href=
+  "https://developers.google.com/android/guides/api-client#Starting">Accessing
+  Google APIs</a>.
+</p>
+
+<h2 id="url-check">
+  Requesting a URL Check
+</h2>
+
+<p>
+  A URL check allows your app to determine if a URL has been marked as a threat
+  of interest. Some threat types may not be of interest to your particular
+  app, and the API allows you to choose which threat types are important for
+  your needs. You can specify multiple threat types of interest.
+</p>
+
+<h3 id="threat-types">
+  Specifying threat types of interest
+</h3>
+
+<p>
+  The constants in the {@code SafeBrowsingThreat} class contain the
+  currently-supported threat types:
+</p>
+
+<pre>
+package com.google.android.gms.safetynet;
+
+public class SafeBrowsingThreat {
+
+  /**
+   * This threat type identifies URLs of pages that are flagged as containing potentially
+   * harmful applications.
+   */
+  public static final int TYPE_POTENTIALLY_HARMFUL_APPLICATION = 4;
+
+  /**
+   * This threat type identifies URLs of pages that are flagged as containing social
+   * engineering threats.
+   */
+  public static final int TYPE_SOCIAL_ENGINEERING = 5;
+}
+</pre>
+<p>
+  When using the API, you must use constants that are not marked as deprecated.
+  You add threat type constants as arguments to the API. You may add as many
+  threat type constants as is required for your app.
+</p>
+
+<h3 id="url-check-request">
+  Send the URL check request
+</h3>
+
+<p>
+  The API is agnostic to the scheme used, so you can pass the URL with or
+  without a scheme. For example, either
+</p>
+
+<pre>
+String url = "https://www.google.com";
+</pre>
+<p>
+  or
+</p>
+
+<pre>
+String url = "www.google.com";
+</pre>
+<p>
+  is valid.
+</p>
+
+<pre>
+SafetyNet.SafetyNetApi.lookupUri(mGoogleApiClient, url,
+       SafeBrowsingThreat.TYPE_POTENTIALLY_HARMFUL_APPLICATION,
+       SafeBrowsingThreat.TYPE_SOCIAL_ENGINEERING)
+               .setResultCallback(
+                       new ResultCallback&lt;SafetyNetApi.SafeBrowsingResult&gt;() {
+
+    &#64;Override
+    public void onResult(SafetyNetApi.SafeBrowsingResult result) {
+        Status status = result.getStatus();
+        if ((status != null) &amp;&amp; status.isSuccess()) {
+            // Indicates communication with the service was successful.
+            // Identify any detected threats.
+            if (result.getDetectedThreats().isEmpty()) {
+
+            }
+        } else {
+            // An error occurred. Let the user proceed without warning.
+        }
+    }
+});
+</pre>
+<h3 id="url-check-response">
+  Read the URL check response
+</h3>
+
+<p>
+  The result is provided as a list of {@code SafeBrowsingThreat} objects by
+  calling the {@code SafetyNetApi.SafeBrowsingResult.getDetectedThreats()}
+  method of the returned {@code SafetyNetApi.SafeBrowsingResult} object. If the
+  list is empty, no threats were detected; otherwise, calling {@code
+  SafeBrowsingThreat.getThreatType()} on each element in the list enumerates
+  the threats that were detected.
+</p>
+
+<h2 id="warning-lang">
+  Suggested Warning Language
+</h2>
+
+<p>
+  Please see the Safe Browsing API Developer's Guide for <a href=
+  "https://developers.google.com/safe-browsing/v4/usage-limits#suggested--warning-language">
+  suggested warning language</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index e2aa5f4..d0dccba 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -656,7 +656,7 @@
              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."
-            >Syncing to the Cloud</a>
+            >Backing up App Data to the Cloud</a>
         </div>
         <ul>
           <li><a href="<?cs var:toroot ?>training/backup/autosyncapi.html">
diff --git a/docs/html/preview/features/picture-in-picture.jd b/docs/html/training/tv/playback/picture-in-picture.jd
similarity index 87%
rename from docs/html/preview/features/picture-in-picture.jd
rename to docs/html/training/tv/playback/picture-in-picture.jd
index 03a1768..e48ae48 100644
--- a/docs/html/preview/features/picture-in-picture.jd
+++ b/docs/html/training/tv/playback/picture-in-picture.jd
@@ -1,11 +1,14 @@
-page.title=Picture-in-picture
+page.title=Adding Picture-in-picture
 page.keywords=preview,sdk,PIP,Picture-in-picture
 page.tags=androidn
+helpoutsWidget=true
+
+trainingnavtop=true
 
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>In this document</h2>
 <ol>
@@ -31,12 +34,12 @@
 </div>
 </div>
 
-<p>In Android N, Android TV users can now watch a video
-in a pinned window in a corner of the screen when navigating within
-apps. Picture-in-picture (PIP) mode lets apps run a video
+<p>In Android 7.0, Android TV users can now watch a video
+in a pinned window in a corner of the screen when navigating within or
+between apps. Picture-in-picture (PIP) mode lets apps run a video
 activity in the pinned window while another activity continues in the
-background. The PIP window lets users multitask while using your app, which
-helps users be more productive.</p>
+background. The PIP window lets users multitask while using Android TV,
+which helps users be more productive.</p>
 
 <p>Your app can decide when to trigger PIP mode. Here are some examples of
 when to enter PIP mode:</p>
@@ -57,14 +60,14 @@
 PIP menu that lets them toggle the PIP window to full-screen, or close the PIP
 window, by holding down the <b>Home</b> button on the remote. If another
 video starts playing on the main screen, the PIP window is automatically
-closed. Users can also close the PIP window through Recents.</p>
+closed.</p>
 
-<img src="{@docRoot}preview/images/pip-active.png" />
+<img src="{@docRoot}images/android-7.0/pip-active.png" />
 <p class="img-caption"><strong>Figure 1.</strong> A Picture-in-picture
 video visible in a corner of the screen while the user browses content
 on the main screen.</p>
 
-<p>PIP leverages the multi-window APIs available in Android N to
+<p>PIP leverages the multi-window APIs available in Android 7.0 to
 provide the pinned video overlay window. To add PIP to your app, you need to
 register your activities that support PIP, switch your activity to PIP mode as
 needed, and make sure UI elements are hidden and video playback continues when
@@ -99,7 +102,8 @@
 <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.enterPictureInPictureMode()</code>. The following example
+{@link android.app.Activity#enterPictureInPictureMode
+enterPictureInPictureMode()}. The following example
 switches to PIP mode when the user selects a dedicated PIP button on a media
 control bar:</p>
 
@@ -116,12 +120,13 @@
 <p>Adding a PIP button to your media control bar lets your user easily switch
 to PIP mode while controlling video playback.</p>
 
-<img src="{@docRoot}preview/images/pip-button.png" />
+<img src="{@docRoot}images/android-7.0/pip-button.png" />
 <p class="img-caption"><strong>Figure 1.</strong> A Picture-in-picture
 button on a media control bar.</p>
 
-<p>Android N includes a new
-<code>PlaybackControlsRow.PictureInPictureAction</code> class which defines
+<p>Android 7.0 includes a
+{@link android.support.v17.leanback.widget.PlaybackControlsRow.PictureInPictureAction
+PlaybackControlsRow.PictureInPictureAction} class which defines
 control bar PIP actions and uses the PIP icon.</p>
 
 <h2 id="handling_ui">Handling UI During Picture-in-picture</h2>
@@ -129,8 +134,10 @@
 <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.onPictureInPictureModeChanged()</code> or
-<code>Fragment.onPictureInPictureModeChanged()</code> and enable or
+Override {@link android.app.Activity#onPictureInPictureModeChanged
+Activity.onPictureInPictureModeChanged()} or
+{@link android.app.Fragment#onPictureInPictureModeChanged
+Fragment.onPictureInPictureModeChanged()} and enable or
 disable your UI elements as needed, for example:</p>
 
 <pre>
@@ -154,7 +161,7 @@
 onPause()} method. Video playback should not be paused and should continue
 playing if the activity is paused due to PIP mode.</p>
 
-<p>In Android N, you should pause and resume video playback when the system
+<p>In Android 7.0, you should pause and resume video playback when the system
 calls your activity's {@link android.app.Activity#onStop onStop()} and
 {@link android.app.Activity#onStart onStart()}. By doing this, you can avoid
 having to check if your app is in PIP mode in
@@ -204,7 +211,7 @@
 </pre>
 
 <p>In your activity, override {@link android.app.Activity#onNewIntent
-Activity.onNewIntent()} and handle the new video, stopping any existing video
+onNewIntent()} and handle the new video, stopping any existing video
 playback if needed.</p>
 
 <h2 id="best">Best Practices</h2>
diff --git a/docs/html/training/tv/tif/content-recording.jd b/docs/html/training/tv/tif/content-recording.jd
new file mode 100644
index 0000000..ffdd14c
--- /dev/null
+++ b/docs/html/training/tv/tif/content-recording.jd
@@ -0,0 +1,171 @@
+page.title=Supporting Content Recording
+page.keywords=tv,recording,channel,tif
+page.tags=tv, tif
+helpoutsWidget=true
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#supporting">Indicating Support for Recording</a></li>
+    <li><a href="#recording">Recording a Session</a></li>
+    <li><a href="#errors">Handling Recording Errors</a></li>
+    <li><a href="#sessions">Managing Recorded Sessions</a></li>
+    <li><a href="#best">Best Practices</a></li>
+  </ol>
+</div>
+</div>
+
+<p>TV input services let the user pause and resume channel playback via
+time-shifting APIs. Android 7.0 expands on time-shifting
+by letting the user save multiple recorded sessions.</p>
+
+<p>Users can schedule recordings in advance, or start a recording as they watch
+a program. Once the system has saved a recording, the user can browse, manage,
+and play back the recording using the system TV app.</p>
+
+<p>If you want to provide recording functionality for your TV input service,
+you must indicate to the system that your app supports recording, implement
+the ability to record programs, handle and communicate any errors that occur
+during recording, and manage your recorded sessions.</p>
+
+<p class="note"><strong>Note:</strong> The Live Channels app does not yet
+provide a way for users to create or access recordings. Until changes are
+made to the Live Channels app, it may be difficult to fully test the recording
+experience for your TV input service.</p>
+
+<h2 id="supporting">Indicating Support for Recording</h2>
+
+<p>To tell the system that your TV input service supports recording, set
+the <code>android:canRecord</code> attribute in your service metadata XML file
+to <code>true</code>:
+</p>
+
+<pre>
+&lt;tv-input xmlns:android="http://schemas.android.com/apk/res/android"
+  <b>android:canRecord="true"</b>
+  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" /&gt;
+</pre>
+
+<p>For more information on the service metadata file, see
+<a href="{@docRoot}training/tv/tif/tvinput.html#manifest">Declare Your TV Input
+Service in the Manifest</a>.
+</p>
+
+<p>Alternatively, you can indicate recording support in your code using
+these steps:</p>
+
+<ol>
+<li>In your TV input service {@link android.app.Service#onCreate onCreate()}
+method, create a new {@link android.media.tv.TvInputInfo} object using the
+{@link android.media.tv.TvInputInfo.Builder TvInputInfo.Builder} class.</li>
+<li>When creating the new {@link android.media.tv.TvInputInfo} object, call
+{@link android.media.tv.TvInputInfo.Builder#setCanRecord
+setCanRecord(true)} before calling
+{@link android.media.tv.TvInputInfo.Builder#build build()} to indicate your
+service supports recording.</li>
+<li>Register your {@link android.media.tv.TvInputInfo} object with the
+system by calling
+{@link android.media.tv.TvInputManager#updateTvInputInfo
+TvInputManager.updateTvInputInfo()}.</li>
+</ol>
+
+<h2 id="recording">Recording a Session</h2>
+
+<p>After your TV input service registers that it supports recording
+functionality, the system calls your
+{@link android.media.tv.TvInputService#onCreateRecordingSession
+TvInputService.onCreateRecordingSession()} method when it needs to access
+your app's recording implementation. Implement your own
+{@link android.media.tv.TvInputService.RecordingSession
+TvInputService.RecordingSession} subclass and return it
+when the {@link android.media.tv.TvInputService#onCreateRecordingSession
+onCreateRecordingSession()} callback fires. This subclass is responsible
+for switching to the correct channel data, recording the requested data,
+and communicating recording status and errors to the system.</p>
+
+<p>When the system calls
+{@link android.media.tv.TvInputService.RecordingSession#onTune
+RecordingSession.onTune()}, passing in a channel URI, tune to the channel
+that the URI specifies. Notify the system that your app has tuned to the
+desired channel by calling
+{@link android.media.tv.TvInputService.RecordingSession#notifyTuned
+notifyTuned()} or, if your app could not tune to the proper channel, call
+{@link android.media.tv.TvInputService.RecordingSession#notifyError
+notifyError()}.</p>
+
+<p>The system next invokes the
+{@link android.media.tv.TvInputService.RecordingSession#onStartRecording
+RecordingSession.onStartRecording()} callback. Your app must start recording
+immediately. When the system invokes this callback, it may provide a URI
+that contains information about the program that is about to be recorded.
+When the recording is done, you'll copy this data to the
+{@link android.media.tv.TvContract.RecordedPrograms RecordedPrograms}
+data table.</p>
+
+<p>Finally, the system calls
+{@link android.media.tv.TvInputService.RecordingSession#onStopRecording
+RecordingSession.onStopRecording()}. At this point, your app must stop
+recording immediately. You also need to create an entry in the
+{@link android.media.tv.TvContract.RecordedPrograms RecordedPrograms}
+table. This entry should include the recorded session data URI in the
+{@link android.media.tv.TvContract.RecordedPrograms#COLUMN_RECORDING_DATA_URI
+RecordedPrograms.COLUMN_RECORDING_DATA_URI} column, and any program
+information that the system provided in the initial call to
+{@link android.media.tv.TvInputService.RecordingSession#onStartRecording
+onStartRecording()}.</p>
+
+<p>For more details on how to access the
+{@link android.media.tv.TvContract.RecordedPrograms RecordedPrograms} table
+see <a href="#sessions">Managing Recorded Sessions</a>.</p>
+
+<h2 id="errors">Handling Recording Errors</h2>
+
+<p>If an error occurs during recording, resulting in unusable recorded data,
+notify the system by calling
+{@link android.media.tv.TvInputService.RecordingSession#notifyError
+notifyError()}. Similarly, you can call
+{@link android.media.tv.TvInputService.RecordingSession#notifyError
+notifyError()} after a recording session is created to let the system know
+that your app can no longer record sessions.</p>
+
+<p>If an error occurs during recording, but you'd like to provide a
+partial recording to users for playback, call
+{@link android.media.tv.TvInputService.RecordingSession#notifyRecordingStopped
+notifyRecordingStopped()} to enable the system to
+use the partial session.</p>
+
+<h2 id="sessions">Managing Recorded Sessions</h2>
+
+<p>The system maintains information for all recorded sessions from all
+recording-capable channel apps in the
+{@link android.media.tv.TvContract.RecordedPrograms RecordedPrograms}
+content provider table. This information is accessible via the
+{@link android.media.tv.TvContract.RecordedPrograms RecordedPrograms}
+content recording URIs. Use content provider APIs to
+read, add, and delete entries from this table.</p>
+
+<p>For more information on working with content provider data see
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Content Provider Basics</a>.</p>
+
+<h2 id="best">Best Practices</h2>
+
+<p>TV devices may have limited storage, so use your best judgment when
+allocating storage to save recorded sessions. Use
+{@link android.media.tv.TvRecordingClient.RecordingCallback#onError
+RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)} when
+there isn't enough space to save a recorded session.</p>
+
+<p>When the user initiates recording, you should start recording data as soon
+as possible. To facilitate this, complete any up-front time-consuming tasks,
+like accessing and allocating storage space, when the system invokes the
+{@link android.media.tv.TvInputService#onCreateRecordingSession
+onCreateRecordingSession()} callback. Doing so lets you start
+recording immediately when the
+{@link android.media.tv.TvInputService.RecordingSession#onStartRecording
+onStartRecording()} callback fires.</p>
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index 1fdc1f5..49721cf 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -1667,10 +1667,10 @@
      * and therefore is harmless.
      */
     public void prepareToDraw() {
-        // TODO: Consider having this start an async upload?
-        // With inPurgeable no-op'd there's currently no use for this
-        // method, but it could have interesting future uses.
         checkRecycled("Can't prepareToDraw on a recycled bitmap!");
+        // Kick off an update/upload of the bitmap outside of the normal
+        // draw path.
+        nativePrepareToDraw(mNativePtr);
     }
 
     /**
@@ -1741,4 +1741,5 @@
     private static native void nativeSetHasMipMap(long nativeBitmap, boolean hasMipMap);
     private static native boolean nativeSameAs(long nativeBitmap0, long nativeBitmap1);
     private static native long nativeRefPixelRef(long nativeBitmap);
+    private static native void nativePrepareToDraw(long nativeBitmap);
 }
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index cb6c92e..40b877d 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -788,7 +788,7 @@
      * @return     true if the resulting is non-empty
      */
     public boolean clipPath(@NonNull Path path, @NonNull Region.Op op) {
-        return native_clipPath(mNativeCanvasWrapper, path.ni(), op.nativeInt);
+        return native_clipPath(mNativeCanvasWrapper, path.readOnlyNI(), op.nativeInt);
     }
 
     /**
@@ -907,7 +907,7 @@
      *                    does not intersect with the canvas' clip
      */
     public boolean quickReject(@NonNull Path path, @NonNull EdgeType type) {
-        return native_quickReject(mNativeCanvasWrapper, path.ni());
+        return native_quickReject(mNativeCanvasWrapper, path.readOnlyNI());
     }
 
     /**
@@ -1259,7 +1259,7 @@
         if (path.isSimplePath && path.rects != null) {
             native_drawRegion(mNativeCanvasWrapper, path.rects.mNativeRegion, paint.getNativeInstance());
         } else {
-            native_drawPath(mNativeCanvasWrapper, path.ni(), paint.getNativeInstance());
+            native_drawPath(mNativeCanvasWrapper, path.readOnlyNI(), paint.getNativeInstance());
         }
     }
 
@@ -1895,7 +1895,7 @@
             throw new ArrayIndexOutOfBoundsException();
         }
         native_drawTextOnPath(mNativeCanvasWrapper, text, index, count,
-                path.ni(), hOffset, vOffset,
+                path.readOnlyNI(), hOffset, vOffset,
                 paint.mBidiFlags, paint.getNativeInstance(), paint.mNativeTypeface);
     }
 
@@ -1915,7 +1915,7 @@
     public void drawTextOnPath(@NonNull String text, @NonNull Path path, float hOffset,
             float vOffset, @NonNull Paint paint) {
         if (text.length() > 0) {
-            native_drawTextOnPath(mNativeCanvasWrapper, text, path.ni(), hOffset, vOffset,
+            native_drawTextOnPath(mNativeCanvasWrapper, text, path.readOnlyNI(), hOffset, vOffset,
                     paint.mBidiFlags, paint.getNativeInstance(), paint.mNativeTypeface);
         }
     }
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 054e29f..cfbe672 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -1021,7 +1021,7 @@
      *                 drawn with a hairline (width == 0)
      */
     public boolean getFillPath(Path src, Path dst) {
-        return nGetFillPath(mNativePaint, src.ni(), dst.ni());
+        return nGetFillPath(mNativePaint, src.readOnlyNI(), dst.mutateNI());
     }
 
     /**
@@ -2394,7 +2394,7 @@
             throw new ArrayIndexOutOfBoundsException();
         }
         nGetTextPath(mNativePaint, mNativeTypeface, mBidiFlags, text, index, count, x, y,
-                path.ni());
+                path.mutateNI());
     }
 
     /**
@@ -2416,7 +2416,7 @@
             throw new IndexOutOfBoundsException();
         }
         nGetTextPath(mNativePaint, mNativeTypeface, mBidiFlags, text, start, end, x, y,
-                path.ni());
+                path.mutateNI());
     }
 
     /**
diff --git a/graphics/java/android/graphics/Path.java b/graphics/java/android/graphics/Path.java
index de391af..be31bbe 100644
--- a/graphics/java/android/graphics/Path.java
+++ b/graphics/java/android/graphics/Path.java
@@ -775,7 +775,12 @@
         }
     }
 
-    final long ni() {
+    final long readOnlyNI() {
+        return mNativePath;
+    }
+
+    final long mutateNI() {
+        isSimplePath = false;
         return mNativePath;
     }
 
diff --git a/graphics/java/android/graphics/PathDashPathEffect.java b/graphics/java/android/graphics/PathDashPathEffect.java
index 4f43f68..2b6a6ed 100644
--- a/graphics/java/android/graphics/PathDashPathEffect.java
+++ b/graphics/java/android/graphics/PathDashPathEffect.java
@@ -41,7 +41,7 @@
      */
     public PathDashPathEffect(Path shape, float advance, float phase,
                               Style style) {
-        native_instance = nativeCreate(shape.ni(), advance, phase,
+        native_instance = nativeCreate(shape.readOnlyNI(), advance, phase,
                                        style.native_style);
     }
     
diff --git a/graphics/java/android/graphics/PathMeasure.java b/graphics/java/android/graphics/PathMeasure.java
index 2848949..78d892e 100644
--- a/graphics/java/android/graphics/PathMeasure.java
+++ b/graphics/java/android/graphics/PathMeasure.java
@@ -50,7 +50,7 @@
     public PathMeasure(Path path, boolean forceClosed) {
         // The native implementation does not copy the path, prevent it from being GC'd
         mPath = path;
-        native_instance = native_create(path != null ? path.ni() : 0,
+        native_instance = native_create(path != null ? path.readOnlyNI() : 0,
                                         forceClosed);
     }
 
@@ -60,7 +60,7 @@
     public void setPath(Path path, boolean forceClosed) {
         mPath = path;
         native_setPath(native_instance,
-                       path != null ? path.ni() : 0,
+                       path != null ? path.readOnlyNI() : 0,
                        forceClosed);
     }
 
@@ -134,8 +134,7 @@
             return false;
         }
 
-        dst.isSimplePath = false;
-        return native_getSegment(native_instance, startD, stopD, dst.ni(), startWithMoveTo);
+        return native_getSegment(native_instance, startD, stopD, dst.mutateNI(), startWithMoveTo);
     }
 
     /**
diff --git a/graphics/java/android/graphics/Region.java b/graphics/java/android/graphics/Region.java
index de89ad0..dca6d9e 100644
--- a/graphics/java/android/graphics/Region.java
+++ b/graphics/java/android/graphics/Region.java
@@ -110,7 +110,7 @@
      * (with no antialiasing).
      */
     public boolean setPath(Path path, Region clip) {
-        return nativeSetPath(mNativeRegion, path.ni(), clip.mNativeRegion);
+        return nativeSetPath(mNativeRegion, path.readOnlyNI(), clip.mNativeRegion);
     }
 
     /**
@@ -155,7 +155,7 @@
      */
     public Path getBoundaryPath() {
         Path path = new Path();
-        nativeGetBoundaryPath(mNativeRegion, path.ni());
+        nativeGetBoundaryPath(mNativeRegion, path.mutateNI());
         return path;
     }
 
@@ -164,7 +164,7 @@
      * path will also be empty.
      */
     public boolean getBoundaryPath(Path path) {
-        return nativeGetBoundaryPath(mNativeRegion, path.ni());
+        return nativeGetBoundaryPath(mNativeRegion, path.mutateNI());
     }
         
     /**
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java
index d5143da..cc7f5c7 100644
--- a/graphics/java/android/graphics/drawable/DrawableContainer.java
+++ b/graphics/java/android/graphics/drawable/DrawableContainer.java
@@ -851,8 +851,8 @@
 
         private Drawable prepareDrawable(Drawable child) {
             child.setLayoutDirection(mLayoutDirection);
-            child.setCallback(mOwner);
             child = child.mutate();
+            child.setCallback(mOwner);
             return child;
         }
 
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index c9d4af6..366ef71 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -113,6 +113,10 @@
     -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\" \
     -Wall -Wno-unused-parameter -Wunreachable-code -Werror
 
+ifeq ($(TARGET_USES_HWC2),true)
+    hwui_cflags += -DUSE_HWC2
+endif
+
 # GCC false-positives on this warning, and since we -Werror that's
 # a problem
 hwui_cflags += -Wno-free-nonheap-object
diff --git a/libs/hwui/AnimationContext.h b/libs/hwui/AnimationContext.h
index 801fd87..11d305c 100644
--- a/libs/hwui/AnimationContext.h
+++ b/libs/hwui/AnimationContext.h
@@ -100,7 +100,7 @@
 
     ANDROID_API virtual void destroy();
 
-    ANDROID_API virtual void detachAnimators() {}
+    ANDROID_API virtual void pauseAnimators() {}
 
 private:
     friend class AnimationHandle;
diff --git a/libs/hwui/FrameInfo.cpp b/libs/hwui/FrameInfo.cpp
index 41e2233..826f0bb 100644
--- a/libs/hwui/FrameInfo.cpp
+++ b/libs/hwui/FrameInfo.cpp
@@ -35,8 +35,17 @@
     "IssueDrawCommandsStart",
     "SwapBuffers",
     "FrameCompleted",
+    "DequeueBufferDuration",
+    "QueueBufferDuration",
 };
 
+static_assert((sizeof(FrameInfoNames)/sizeof(FrameInfoNames[0]))
+        == static_cast<int>(FrameInfoIndex::NumIndexes),
+        "size mismatch: FrameInfoNames doesn't match the enum!");
+
+static_assert(static_cast<int>(FrameInfoIndex::NumIndexes) == 16,
+        "Must update value in FrameMetrics.java#FRAME_STATS_COUNT (and here)");
+
 void FrameInfo::importUiThreadInfo(int64_t* info) {
     memcpy(mFrameInfo, info, UI_THREAD_FRAME_INFO_SIZE * sizeof(int64_t));
 }
diff --git a/libs/hwui/FrameInfo.h b/libs/hwui/FrameInfo.h
index 0baca39..45b57de 100644
--- a/libs/hwui/FrameInfo.h
+++ b/libs/hwui/FrameInfo.h
@@ -48,7 +48,11 @@
     SwapBuffers,
     FrameCompleted,
 
+    DequeueBufferDuration,
+    QueueBufferDuration,
+
     // Must be the last value!
+    // Also must be kept in sync with FrameMetrics.java#FRAME_STATS_COUNT
     NumIndexes
 };
 
diff --git a/libs/hwui/JankTracker.cpp b/libs/hwui/JankTracker.cpp
index ebe9c42..ed6b211 100644
--- a/libs/hwui/JankTracker.cpp
+++ b/libs/hwui/JankTracker.cpp
@@ -16,6 +16,7 @@
 #include "JankTracker.h"
 
 #include "Properties.h"
+#include "utils/TimeUtils.h"
 
 #include <algorithm>
 #include <cutils/ashmem.h>
@@ -119,11 +120,27 @@
     return index;
 }
 
-JankTracker::JankTracker(nsecs_t frameIntervalNanos) {
+JankTracker::JankTracker(const DisplayInfo& displayInfo) {
     // By default this will use malloc memory. It may be moved later to ashmem
     // if there is shared space for it and a request comes in to do that.
     mData = new ProfileData;
     reset();
+    nsecs_t frameIntervalNanos = static_cast<nsecs_t>(1_s / displayInfo.fps);
+#if USE_HWC2
+    nsecs_t sfOffset = frameIntervalNanos - (displayInfo.presentationDeadline - 1_ms);
+    nsecs_t offsetDelta = sfOffset - displayInfo.appVsyncOffset;
+    // There are two different offset cases. If the offsetDelta is positive
+    // and small, then the intention is to give apps extra time by leveraging
+    // pipelining between the UI & RT threads. If the offsetDelta is large or
+    // negative, the intention is to subtract time from the total duration
+    // in which case we can't afford to wait for dequeueBuffer blockage.
+    if (offsetDelta <= 4_ms && offsetDelta >= 0) {
+        // SF will begin composition at VSYNC-app + offsetDelta. If we are triple
+        // buffered, this is the expected time at which dequeueBuffer will
+        // return due to the staggering of VSYNC-app & VSYNC-sf.
+        mDequeueTimeForgiveness = offsetDelta + 4_ms;
+    }
+#endif
     setFrameInterval(frameIntervalNanos);
 }
 
@@ -213,6 +230,19 @@
     mData->totalFrameCount++;
     // Fast-path for jank-free frames
     int64_t totalDuration = frame.duration(sFrameStart, FrameInfoIndex::FrameCompleted);
+    if (mDequeueTimeForgiveness
+            && frame[FrameInfoIndex::DequeueBufferDuration] > 500_us) {
+        nsecs_t expectedDequeueDuration =
+                mDequeueTimeForgiveness + frame[FrameInfoIndex::Vsync]
+                - frame[FrameInfoIndex::IssueDrawCommandsStart];
+        if (expectedDequeueDuration > 0) {
+            // Forgive only up to the expected amount, but not more than
+            // the actual time spent blocked.
+            nsecs_t forgiveAmount = std::min(expectedDequeueDuration,
+                    frame[FrameInfoIndex::DequeueBufferDuration]);
+            totalDuration -= forgiveAmount;
+        }
+    }
     uint32_t framebucket = frameCountIndexForFrameTime(totalDuration);
     // Keep the fast path as fast as possible.
     if (CC_LIKELY(totalDuration < mFrameInterval)) {
diff --git a/libs/hwui/JankTracker.h b/libs/hwui/JankTracker.h
index 84b8c3f..126025c 100644
--- a/libs/hwui/JankTracker.h
+++ b/libs/hwui/JankTracker.h
@@ -21,6 +21,7 @@
 #include "utils/RingBuffer.h"
 
 #include <cutils/compiler.h>
+#include <ui/DisplayInfo.h>
 
 #include <array>
 #include <memory>
@@ -56,7 +57,7 @@
 // TODO: Replace DrawProfiler with this
 class JankTracker {
 public:
-    JankTracker(nsecs_t frameIntervalNanos);
+    JankTracker(const DisplayInfo& displayInfo);
     ~JankTracker();
 
     void addFrame(const FrameInfo& frame);
@@ -79,6 +80,14 @@
 
     std::array<int64_t, NUM_BUCKETS> mThresholds;
     int64_t mFrameInterval;
+    // The amount of time we will erase from the total duration to account
+    // for SF vsync offsets with HWC2 blocking dequeueBuffers.
+    // (Vsync + mDequeueBlockTolerance) is the point at which we expect
+    // SF to have released the buffer normally, so we will forgive up to that
+    // point in time by comparing to (IssueDrawCommandsStart + DequeueDuration)
+    // This is only used if we are in pipelined mode and are using HWC2,
+    // otherwise it's 0.
+    nsecs_t mDequeueTimeForgiveness = 0;
     ProfileData* mData;
     bool mIsMapped = false;
 };
diff --git a/libs/hwui/RecordingCanvas.cpp b/libs/hwui/RecordingCanvas.cpp
index cbefccb..1802fd4 100644
--- a/libs/hwui/RecordingCanvas.cpp
+++ b/libs/hwui/RecordingCanvas.cpp
@@ -268,7 +268,7 @@
 
 // Geometry
 void RecordingCanvas::drawPoints(const float* points, int floatCount, const SkPaint& paint) {
-    if (floatCount < 2) return;
+    if (CC_UNLIKELY(floatCount < 2 || PaintUtils::paintWillNotDraw(paint))) return;
     floatCount &= ~0x1; // round down to nearest two
 
     addOp(alloc().create_trivial<PointsOp>(
@@ -279,7 +279,7 @@
 }
 
 void RecordingCanvas::drawLines(const float* points, int floatCount, const SkPaint& paint) {
-    if (floatCount < 4) return;
+    if (CC_UNLIKELY(floatCount < 4 || PaintUtils::paintWillNotDraw(paint))) return;
     floatCount &= ~0x3; // round down to nearest four
 
     addOp(alloc().create_trivial<LinesOp>(
@@ -290,6 +290,8 @@
 }
 
 void RecordingCanvas::drawRect(float left, float top, float right, float bottom, const SkPaint& paint) {
+    if (CC_UNLIKELY(PaintUtils::paintWillNotDraw(paint))) return;
+
     addOp(alloc().create_trivial<RectOp>(
             Rect(left, top, right, bottom),
             *(mState.currentSnapshot()->transform),
@@ -331,6 +333,8 @@
 }
 
 void RecordingCanvas::drawRegion(const SkRegion& region, const SkPaint& paint) {
+    if (CC_UNLIKELY(PaintUtils::paintWillNotDraw(paint))) return;
+
     if (paint.getStyle() == SkPaint::kFill_Style
             && (!paint.isAntiAlias() || mState.currentTransform()->isSimple())) {
         int count = 0;
@@ -355,8 +359,11 @@
         }
     }
 }
+
 void RecordingCanvas::drawRoundRect(float left, float top, float right, float bottom,
             float rx, float ry, const SkPaint& paint) {
+    if (CC_UNLIKELY(PaintUtils::paintWillNotDraw(paint))) return;
+
     if (CC_LIKELY(MathUtils::isPositive(rx) || MathUtils::isPositive(ry))) {
         addOp(alloc().create_trivial<RoundRectOp>(
                 Rect(left, top, right, bottom),
@@ -391,7 +398,8 @@
 
 void RecordingCanvas::drawCircle(float x, float y, float radius, const SkPaint& paint) {
     // TODO: move to Canvas.h
-    if (radius <= 0) return;
+    if (CC_UNLIKELY(radius <= 0 || PaintUtils::paintWillNotDraw(paint))) return;
+
     drawOval(x - radius, y - radius, x + radius, y + radius, paint);
 }
 
@@ -411,6 +419,8 @@
 }
 
 void RecordingCanvas::drawOval(float left, float top, float right, float bottom, const SkPaint& paint) {
+    if (CC_UNLIKELY(PaintUtils::paintWillNotDraw(paint))) return;
+
     addOp(alloc().create_trivial<OvalOp>(
             Rect(left, top, right, bottom),
             *(mState.currentSnapshot()->transform),
@@ -420,6 +430,8 @@
 
 void RecordingCanvas::drawArc(float left, float top, float right, float bottom,
         float startAngle, float sweepAngle, bool useCenter, const SkPaint& paint) {
+    if (CC_UNLIKELY(PaintUtils::paintWillNotDraw(paint))) return;
+
     if (fabs(sweepAngle) >= 360.0f) {
         drawOval(left, top, right, bottom, paint);
     } else {
@@ -433,6 +445,8 @@
 }
 
 void RecordingCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+    if (CC_UNLIKELY(PaintUtils::paintWillNotDraw(paint))) return;
+
     addOp(alloc().create_trivial<PathOp>(
             Rect(path.getBounds()),
             *(mState.currentSnapshot()->transform),
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 6facf20..bdcad79 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -422,7 +422,6 @@
         pushStagingDisplayListChanges(info);
     }
     prepareSubTree(info, childFunctorsNeedLayer, mDisplayList);
-    pushLayerUpdate(info);
 
     if (mDisplayList) {
         for (auto& vectorDrawable : mDisplayList->getVectorDrawables()) {
@@ -433,6 +432,7 @@
             vectorDrawable->setPropertyChangeWillBeConsumed(true);
         }
     }
+    pushLayerUpdate(info);
 
     info.damageAccumulator->popTransform();
 }
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp
index ade8600a..523924a 100644
--- a/libs/hwui/TextureCache.cpp
+++ b/libs/hwui/TextureCache.cpp
@@ -167,6 +167,10 @@
     return texture;
 }
 
+bool TextureCache::prefetch(const SkBitmap* bitmap) {
+    return getCachedTexture(bitmap, AtlasUsageType::Use);
+}
+
 Texture* TextureCache::get(const SkBitmap* bitmap, AtlasUsageType atlasUsageType) {
     Texture* texture = getCachedTexture(bitmap, atlasUsageType);
 
diff --git a/libs/hwui/TextureCache.h b/libs/hwui/TextureCache.h
index a4317ce..0a61b6b 100644
--- a/libs/hwui/TextureCache.h
+++ b/libs/hwui/TextureCache.h
@@ -78,6 +78,13 @@
     bool prefetchAndMarkInUse(void* ownerToken, const SkBitmap* bitmap);
 
     /**
+     * Attempts to precache the SkBitmap. Returns true if a Texture was successfully
+     * acquired for the bitmap, false otherwise. Does not mark the Texture
+     * as in use and won't update currently in-use Textures.
+     */
+    bool prefetch(const SkBitmap* bitmap);
+
+    /**
      * Returns the texture associated with the specified bitmap from either within the cache, or
      * the AssetAtlas. If the texture cannot be found in the cache, a new texture is generated.
      */
diff --git a/libs/hwui/VectorDrawable.h b/libs/hwui/VectorDrawable.h
index e67dfdd..a0c3d9d 100644
--- a/libs/hwui/VectorDrawable.h
+++ b/libs/hwui/VectorDrawable.h
@@ -678,6 +678,7 @@
     TreeProperties* mutateProperties() { return &mProperties; }
 
     // This should always be called from RT.
+    void markDirty() { mCache.dirty = true; }
     bool isDirty() const { return mCache.dirty; }
     bool getPropertyChangeWillBeConsumed() const { return mWillBeConsumed; }
     void setPropertyChangeWillBeConsumed(bool willBeConsumed) { mWillBeConsumed = willBeConsumed; }
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 4b9d7d5..dafe1d1 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -67,7 +67,7 @@
         , mEglManager(thread.eglManager())
         , mOpaque(!translucent)
         , mAnimationContext(contextFactory->createAnimationContext(mRenderThread.timeLord()))
-        , mJankTracker(thread.timeLord().frameIntervalNanos())
+        , mJankTracker(thread.mainDisplayInfo())
         , mProfiler(mFrames)
         , mContentDrawBounds(0, 0, 0, 0) {
     mRenderNodes.emplace_back(rootRenderNode);
@@ -199,6 +199,8 @@
 }
 
 bool CanvasContext::isSwapChainStuffed() {
+    static const auto SLOW_THRESHOLD = 6_ms;
+
     if (mSwapHistory.size() != mSwapHistory.capacity()) {
         // We want at least 3 frames of history before attempting to
         // guess if the queue is stuffed
@@ -209,8 +211,8 @@
 
     // Was there a happy queue & dequeue time? If so, don't
     // consider it stuffed
-    if (swapA.dequeueDuration < 3_ms
-            && swapA.queueDuration < 3_ms) {
+    if (swapA.dequeueDuration < SLOW_THRESHOLD
+            && swapA.queueDuration < SLOW_THRESHOLD) {
         return false;
     }
 
@@ -225,8 +227,8 @@
 
         // Was there a happy queue & dequeue time? If so, don't
         // consider it stuffed
-        if (swapB.dequeueDuration < 3_ms
-                && swapB.queueDuration < 3_ms) {
+        if (swapB.dequeueDuration < SLOW_THRESHOLD
+                && swapB.queueDuration < SLOW_THRESHOLD) {
             return false;
         }
 
@@ -284,11 +286,6 @@
     if (CC_LIKELY(mSwapHistory.size())) {
         nsecs_t latestVsync = mRenderThread.timeLord().latestVsync();
         SwapHistory& lastSwap = mSwapHistory.back();
-        int durationUs;
-        mNativeSurface->query(NATIVE_WINDOW_LAST_DEQUEUE_DURATION, &durationUs);
-        lastSwap.dequeueDuration = us2ns(durationUs);
-        mNativeSurface->query(NATIVE_WINDOW_LAST_QUEUE_DURATION, &durationUs);
-        lastSwap.queueDuration = us2ns(durationUs);
         nsecs_t vsyncDelta = std::abs(lastSwap.vsyncTime - latestVsync);
         // The slight fudge-factor is to deal with cases where
         // the vsync was estimated due to being slow handling the signal.
@@ -329,7 +326,7 @@
 
 void CanvasContext::stopDrawing() {
     mRenderThread.removeFrameCallback(this);
-    mAnimationContext->detachAnimators();
+    mAnimationContext->pauseAnimators();
 }
 
 void CanvasContext::notifyFramePending() {
@@ -565,6 +562,20 @@
         swap.damage = screenDirty;
         swap.swapCompletedTime = systemTime(CLOCK_MONOTONIC);
         swap.vsyncTime = mRenderThread.timeLord().latestVsync();
+        if (mNativeSurface.get()) {
+            int durationUs;
+            mNativeSurface->query(NATIVE_WINDOW_LAST_DEQUEUE_DURATION, &durationUs);
+            swap.dequeueDuration = us2ns(durationUs);
+            mNativeSurface->query(NATIVE_WINDOW_LAST_QUEUE_DURATION, &durationUs);
+            swap.queueDuration = us2ns(durationUs);
+        } else {
+            swap.dequeueDuration = 0;
+            swap.queueDuration = 0;
+        }
+        mCurrentFrameInfo->set(FrameInfoIndex::DequeueBufferDuration)
+                = swap.dequeueDuration;
+        mCurrentFrameInfo->set(FrameInfoIndex::QueueBufferDuration)
+                = swap.queueDuration;
         mHaveNewSurface = false;
         mFrameNumber = -1;
     }
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 06a24b2..fb1c896 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -22,9 +22,11 @@
 #include "Readback.h"
 #include "Rect.h"
 #include "renderthread/CanvasContext.h"
+#include "renderthread/EglManager.h"
 #include "renderthread/RenderTask.h"
 #include "renderthread/RenderThread.h"
 #include "utils/Macros.h"
+#include "utils/TimeUtils.h"
 
 namespace android {
 namespace uirenderer {
@@ -44,6 +46,8 @@
     typedef struct { \
         a1; a2; a3; a4; a5; a6; a7; a8; \
     } ARGS(name); \
+    static_assert(std::is_trivially_destructible<ARGS(name)>::value, \
+            "Error, ARGS must be trivially destructible!"); \
     static void* Bridge_ ## name(ARGS(name)* args)
 
 #define SETUP_TASK(method) \
@@ -636,6 +640,41 @@
             reinterpret_cast<intptr_t>( staticPostAndWait(task) ));
 }
 
+CREATE_BRIDGE2(prepareToDraw, RenderThread* thread, SkBitmap* bitmap) {
+    if (Caches::hasInstance() && args->thread->eglManager().hasEglContext()) {
+        ATRACE_NAME("Bitmap#prepareToDraw task");
+        Caches::getInstance().textureCache.prefetch(args->bitmap);
+    }
+    delete args->bitmap;
+    args->bitmap = nullptr;
+    return nullptr;
+}
+
+void RenderProxy::prepareToDraw(const SkBitmap& bitmap) {
+    // If we haven't spun up a hardware accelerated window yet, there's no
+    // point in precaching these bitmaps as it can't impact jank.
+    // We also don't know if we even will spin up a hardware-accelerated
+    // window or not.
+    if (!RenderThread::hasInstance()) return;
+    RenderThread* renderThread = &RenderThread::getInstance();
+    SETUP_TASK(prepareToDraw);
+    args->thread = renderThread;
+    args->bitmap = new SkBitmap(bitmap);
+    nsecs_t lastVsync = renderThread->timeLord().latestVsync();
+    nsecs_t estimatedNextVsync = lastVsync + renderThread->timeLord().frameIntervalNanos();
+    nsecs_t timeToNextVsync = estimatedNextVsync - systemTime(CLOCK_MONOTONIC);
+    // We expect the UI thread to take 4ms and for RT to be active from VSYNC+4ms to
+    // VSYNC+12ms or so, so aim for the gap during which RT is expected to
+    // be idle
+    // TODO: Make this concept a first-class supported thing? RT could use
+    // knowledge of pending draws to better schedule this task
+    if (timeToNextVsync > -6_ms && timeToNextVsync < 1_ms) {
+        renderThread->queueAt(task, estimatedNextVsync + 8_ms);
+    } else {
+        renderThread->queue(task);
+    }
+}
+
 void RenderProxy::post(RenderTask* task) {
     mRenderThread.queue(task);
 }
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index e31062c8..bb111bd 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -129,6 +129,7 @@
     ANDROID_API long getDroppedFrameReportCount();
 
     ANDROID_API static int copySurfaceInto(sp<Surface>& surface, SkBitmap* bitmap);
+    ANDROID_API static void prepareToDraw(const SkBitmap& bitmap);
 
 private:
     RenderThread& mRenderThread;
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index 9fb30c9..f4b4416 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -190,7 +190,7 @@
     initializeDisplayEventReceiver();
     mEglManager = new EglManager(*this);
     mRenderState = new RenderState(*this);
-    mJankTracker = new JankTracker(frameIntervalNanos);
+    mJankTracker = new JankTracker(mDisplayInfo);
 }
 
 int RenderThread::displayEventReceiverCallback(int fd, int events, void* data) {
diff --git a/libs/hwui/tests/unit/FrameBuilderTests.cpp b/libs/hwui/tests/unit/FrameBuilderTests.cpp
index af54e07..53dbede 100644
--- a/libs/hwui/tests/unit/FrameBuilderTests.cpp
+++ b/libs/hwui/tests/unit/FrameBuilderTests.cpp
@@ -1459,7 +1459,8 @@
 
 static void drawOrderedRect(RecordingCanvas* canvas, uint8_t expectedDrawOrder) {
     SkPaint paint;
-    paint.setColor(SkColorSetARGB(256, 0, 0, expectedDrawOrder)); // order put in blue channel
+    // order put in blue channel, transparent so overlapped content doesn't get rejected
+    paint.setColor(SkColorSetARGB(1, 0, 0, expectedDrawOrder));
     canvas->drawRect(0, 0, 100, 100, paint);
 }
 static void drawOrderedNode(RecordingCanvas* canvas, uint8_t expectedDrawOrder, float z) {
diff --git a/libs/hwui/tests/unit/RecordingCanvasTests.cpp b/libs/hwui/tests/unit/RecordingCanvasTests.cpp
index 9cd504e..28b375f 100644
--- a/libs/hwui/tests/unit/RecordingCanvasTests.cpp
+++ b/libs/hwui/tests/unit/RecordingCanvasTests.cpp
@@ -81,6 +81,27 @@
     ASSERT_EQ(0u, dl->getOps().size()) << "Must be zero ops. Rect should be rejected.";
 }
 
+TEST(RecordingCanvas, emptyPaintRejection) {
+    auto dl = TestUtils::createDisplayList<RecordingCanvas>(200, 200, [](RecordingCanvas& canvas) {
+        SkPaint emptyPaint;
+        emptyPaint.setColor(Color::Transparent);
+
+        float points[] = {0, 0, 200, 200};
+        canvas.drawPoints(points, 4, emptyPaint);
+        canvas.drawLines(points, 4, emptyPaint);
+        canvas.drawRect(0, 0, 200, 200, emptyPaint);
+        canvas.drawRegion(SkRegion(SkIRect::MakeWH(200, 200)), emptyPaint);
+        canvas.drawRoundRect(0, 0, 200, 200, 10, 10, emptyPaint);
+        canvas.drawCircle(100, 100, 100, emptyPaint);
+        canvas.drawOval(0, 0, 200, 200, emptyPaint);
+        canvas.drawArc(0, 0, 200, 200, 0, 360, true, emptyPaint);
+        SkPath path;
+        path.addRect(0, 0, 200, 200);
+        canvas.drawPath(path, emptyPaint);
+    });
+    EXPECT_EQ(0u, dl->getOps().size()) << "Op should be rejected";
+}
+
 TEST(RecordingCanvas, drawArc) {
     auto dl = TestUtils::createDisplayList<RecordingCanvas>(200, 200, [](RecordingCanvas& canvas) {
         canvas.drawArc(0, 0, 200, 200, 0, 180, true, SkPaint());
diff --git a/libs/hwui/utils/TimeUtils.h b/libs/hwui/utils/TimeUtils.h
index 8d42d7e..ce181b7 100644
--- a/libs/hwui/utils/TimeUtils.h
+++ b/libs/hwui/utils/TimeUtils.h
@@ -21,10 +21,18 @@
 namespace android {
 namespace uirenderer {
 
+constexpr nsecs_t operator"" _s (unsigned long long s) {
+    return seconds_to_nanoseconds(s);
+}
+
 constexpr nsecs_t operator"" _ms (unsigned long long ms) {
     return milliseconds_to_nanoseconds(ms);
 }
 
+constexpr nsecs_t operator"" _us (unsigned long long us) {
+    return microseconds_to_nanoseconds(us);
+}
+
 } /* namespace uirenderer */
 } /* namespace android */
 
diff --git a/media/java/android/media/AudioRecordingConfiguration.java b/media/java/android/media/AudioRecordingConfiguration.java
index 354339c..50dbd03 100644
--- a/media/java/android/media/AudioRecordingConfiguration.java
+++ b/media/java/android/media/AudioRecordingConfiguration.java
@@ -57,12 +57,12 @@
     /**
      * @hide
      */
-    public AudioRecordingConfiguration(int session, int source, AudioFormat devFormat,
-            AudioFormat clientFormat, int patchHandle) {
+    public AudioRecordingConfiguration(int session, int source, AudioFormat clientFormat,
+            AudioFormat devFormat, int patchHandle) {
         mSessionId = session;
         mClientSource = source;
-        mDeviceFormat = devFormat;
         mClientFormat = clientFormat;
+        mDeviceFormat = devFormat;
         mPatchHandle = patchHandle;
     }
 
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 73485af..94e894f 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -746,6 +746,27 @@
     }
 
     /**
+     * Sets the video encoding profile for recording. Call this method before prepare().
+     * Prepare() may perform additional checks on the parameter to make sure whether the
+     * specified profile and level are applicable, and sometimes the passed profile or
+     * level will be discarded due to codec capablity or to ensure the video recording
+     * can proceed smoothly based on the capabilities of the platform.
+     * @hide
+     * @param profile declared in {@link MediaCodecInfo.CodecProfileLevel}.
+     * @param level declared in {@link MediaCodecInfo.CodecProfileLevel}.
+     */
+    public void setVideoEncodingProfileLevel(int profile, int level) {
+        if (profile <= 0)  {
+            throw new IllegalArgumentException("Video encoding profile is not positive");
+        }
+        if (level <= 0)  {
+            throw new IllegalArgumentException("Video encoding level is not positive");
+        }
+        setParameter("video-param-encoder-profile=" + profile);
+        setParameter("video-param-encoder-level=" + level);
+    }
+
+    /**
      * Currently not implemented. It does nothing.
      * @deprecated Time lapse mode video recording using camera still image capture
      * is not desirable, and will not be supported.
diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
index 6fb8b51..b58c87a 100644
--- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
+++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
@@ -96,7 +96,7 @@
         // Exit app if Network disappears.
         final NetworkCapabilities networkCapabilities = mCm.getNetworkCapabilities(mNetwork);
         if (networkCapabilities == null) {
-            finish();
+            finishAndRemoveTask();
             return;
         }
         mNetworkCallback = new NetworkCallback() {
@@ -163,7 +163,7 @@
                 mCaptivePortal.useNetwork();
                 break;
         }
-        finish();
+        finishAndRemoveTask();
     }
 
     @Override
diff --git a/packages/DocumentsUI/res/values-ja/strings.xml b/packages/DocumentsUI/res/values-ja/strings.xml
index 121a896..e1b2c50 100644
--- a/packages/DocumentsUI/res/values-ja/strings.xml
+++ b/packages/DocumentsUI/res/values-ja/strings.xml
@@ -110,9 +110,9 @@
     <string name="menu_rename" msgid="7678802479104285353">"名前を変更"</string>
     <string name="rename_error" msgid="4203041674883412606">"ドキュメントの名前を変更できませんでした"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"一部のファイルが変換されました"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"「<xliff:g id="STORAGE"><i>^3</i></xliff:g>」の「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」ディレクトリに「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」へのアクセスを許可しますか?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」アプリに「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」ディレクトリへのアクセスを許可しますか?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g>の写真や動画などのデータへのアクセスを「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」に許可しますか?"</string>
+    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> の <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ディレクトリに <xliff:g id="APPNAME"><b>^1</b></xliff:g> へのアクセスを許可しますか?"</string>
+    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> アプリに <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ディレクトリへのアクセスを許可しますか?"</string>
+    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g>の写真や動画などのデータへのアクセスを <xliff:g id="APPNAME"><b>^1</b></xliff:g> に許可しますか?"</string>
     <string name="never_ask_again" msgid="4295278542972859268">"今後表示しない"</string>
     <string name="allow" msgid="7225948811296386551">"許可"</string>
     <string name="deny" msgid="2081879885755434506">"拒否"</string>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 47df940..b7c0a9c 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -664,10 +664,10 @@
                     return true;
 
                 case R.id.menu_copy_to:
-                    transferDocuments(selection, FileOperationService.OPERATION_COPY);
                     // TODO: Only finish selection mode if copy-to is not canceled.
                     // Need to plum down into handling the way we do with deleteDocuments.
                     mode.finish();
+                    transferDocuments(selection, FileOperationService.OPERATION_COPY);
                     return true;
 
                 case R.id.menu_move_to:
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index dec1fd2..1b83ccd 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -50,6 +50,7 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.SystemClock;
+import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
@@ -259,10 +260,14 @@
                     handleFinishedGoingToSleep(msg.arg1);
                     break;
                 case MSG_STARTED_WAKING_UP:
+                    Trace.beginSection("KeyguardUpdateMonitor#handler MSG_STARTED_WAKING_UP");
                     handleStartedWakingUp();
+                    Trace.endSection();
                     break;
                 case MSG_FACE_UNLOCK_STATE_CHANGED:
+                    Trace.beginSection("KeyguardUpdateMonitor#handler MSG_FACE_UNLOCK_STATE_CHANGED");
                     handleFaceUnlockStateChanged(msg.arg1 != 0, msg.arg2);
+                    Trace.endSection();
                     break;
                 case MSG_SIM_SUBSCRIPTION_INFO_CHANGED:
                     handleSimSubscriptionInfoChanged();
@@ -277,7 +282,9 @@
                     handleScreenTurnedOn();
                     break;
                 case MSG_SCREEN_TURNED_OFF:
+                    Trace.beginSection("KeyguardUpdateMonitor#handler MSG_SCREEN_TURNED_ON");
                     handleScreenTurnedOff();
+                    Trace.endSection();
                     break;
             }
         }
@@ -399,6 +406,7 @@
     }
 
     private void onFingerprintAuthenticated(int userId) {
+        Trace.beginSection("KeyGuardUpdateMonitor#onFingerPrintAuthenticated");
         mUserFingerprintAuthenticated.put(userId, true);
 
         // If fingerprint unlocking is allowed, this event will lead to a Keyguard dismiss or to a
@@ -411,6 +419,7 @@
                 cb.onFingerprintAuthenticated(userId);
             }
         }
+        Trace.endSection();
     }
 
     private void handleFingerprintAuthFailed() {
@@ -436,6 +445,7 @@
     }
 
     private void handleFingerprintAuthenticated() {
+        Trace.beginSection("KeyGuardUpdateMonitor#handlerFingerPrintAuthenticated");
         try {
             final int userId;
             try {
@@ -452,6 +462,7 @@
         } finally {
             setFingerprintRunningState(FINGERPRINT_STATE_STOPPED);
         }
+        Trace.endSection();
     }
 
     private void handleFingerprintHelp(int msgId, String helpString) {
@@ -690,8 +701,10 @@
                 mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_INFO_CHANGED,
                         intent.getIntExtra(Intent.EXTRA_USER_HANDLE, getSendingUserId()), 0));
             } else if (ACTION_FACE_UNLOCK_STARTED.equals(action)) {
+                Trace.beginSection("KeyguardUpdateMonitor.mBroadcastAllReceiver#onReceive ACTION_FACE_UNLOCK_STARTED");
                 mHandler.sendMessage(mHandler.obtainMessage(MSG_FACE_UNLOCK_STATE_CHANGED, 1,
                         getSendingUserId()));
+                Trace.endSection();
             } else if (ACTION_FACE_UNLOCK_STOPPED.equals(action)) {
                 mHandler.sendMessage(mHandler.obtainMessage(MSG_FACE_UNLOCK_STATE_CHANGED, 0,
                         getSendingUserId()));
@@ -731,7 +744,9 @@
 
         @Override
         public void onAuthenticationSucceeded(AuthenticationResult result) {
+            Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
             handleFingerprintAuthenticated();
+            Trace.endSection();
         }
 
         @Override
@@ -906,6 +921,7 @@
     }
 
     protected void handleStartedWakingUp() {
+        Trace.beginSection("KeyguardUpdateMonitor#handleStartedWakingUp");
         updateFingerprintListeningState();
         final int count = mCallbacks.size();
         for (int i = 0; i < count; i++) {
@@ -914,6 +930,7 @@
                 cb.onStartedWakingUp();
             }
         }
+        Trace.endSection();
     }
 
     protected void handleStartedGoingToSleep(int arg1) {
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/AddPrinterActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/AddPrinterActivity.java
index 2f58de5..c06e849 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/AddPrinterActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/AddPrinterActivity.java
@@ -737,9 +737,11 @@
         public void updateInstalledServices(List<PrintServiceInfo> services) {
             mInstalledServices.clear();
 
-            final int numServices = services.size();
-            for (int i = 0; i < numServices; i++) {
-                mInstalledServices.add(services.get(i).getComponentName().getPackageName());
+            if (services != null) {
+                final int numServices = services.size();
+                for (int i = 0; i < numServices; i++) {
+                    mInstalledServices.add(services.get(i).getComponentName().getPackageName());
+                }
             }
 
             filterRecommendations();
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index 3e262d0..3b25edb 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -244,6 +244,8 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        setTitle(R.string.print_dialog);
+
         Bundle extras = getIntent().getExtras();
 
         mPrintJob = extras.getParcelable(PrintManager.EXTRA_PRINT_JOB);
@@ -298,7 +300,6 @@
         // Now that we are bound to the local print spooler service
         // and the printer registry loaded the historical printers
         // we can show the UI without flickering.
-        setTitle(R.string.print_dialog);
         setContentView(R.layout.print_activity);
 
         try {
diff --git a/packages/SettingsLib/res/layout/usage_view.xml b/packages/SettingsLib/res/layout/usage_view.xml
index aa1a046..1d56668 100644
--- a/packages/SettingsLib/res/layout/usage_view.xml
+++ b/packages/SettingsLib/res/layout/usage_view.xml
@@ -71,9 +71,11 @@
         android:id="@+id/bottom_label_group"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingStart="@dimen/usage_graph_labels_width"
         android:orientation="horizontal">
-
+        <Space
+            android:id="@+id/bottom_label_space"
+            android:layout_width="@dimen/usage_graph_labels_width"
+            android:layout_height="wrap_content"/>
         <include android:id="@+id/label_start"
             layout="@layout/usage_side_label" />
 
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index fb7180a..99850a5 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -111,7 +111,7 @@
     <string name="tts_play_example_summary" msgid="8029071615047894486">"Reprodueix una breu demostració de síntesi de veu"</string>
     <string name="tts_install_data_title" msgid="4264378440508149986">"Instal·la dades de veu"</string>
     <string name="tts_install_data_summary" msgid="5742135732511822589">"Instal·la les dades de veu necessàries per a la síntesi de veu"</string>
-    <string name="tts_engine_security_warning" msgid="8786238102020223650">"Pot ser que aquest motor de síntesi de la parla pugui recopilar tot el text que es dirà en veu alta, incloses les dades personals, com ara les contrasenyes i els números de les targetes de crèdit. Ve del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Voleu activar l\'ús d\'aquest motor de síntesi de la parla?"</string>
+    <string name="tts_engine_security_warning" msgid="8786238102020223650">"Pot ser que aquest motor de síntesi de la parla pugui recopilar tot el text que es dirà en veu alta, incloses les dades personals, com ara les contrasenyes i els números de les targetes de crèdit. Ve del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Vols activar l\'ús d\'aquest motor de síntesi de la parla?"</string>
     <string name="tts_engine_network_required" msgid="1190837151485314743">"Aquest idioma requereix una connexió de xarxa activa per a la sortida de síntesi de veu."</string>
     <string name="tts_default_sample_string" msgid="4040835213373086322">"Això és un exemple de síntesi de veu"</string>
     <string name="tts_status_title" msgid="7268566550242584413">"Estat de l\'idioma predeterminat"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index 16bfc56..a22a051 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -749,6 +749,7 @@
         static final int MSG_LOAD_ICONS = 3;
         static final int MSG_LOAD_SIZES = 4;
         static final int MSG_LOAD_LAUNCHER = 5;
+        static final int MSG_LOAD_HOME_APP = 6;
 
         boolean mRunning;
 
@@ -817,13 +818,33 @@
                         if (!mMainHandler.hasMessages(MainHandler.MSG_LOAD_ENTRIES_COMPLETE)) {
                             mMainHandler.sendEmptyMessage(MainHandler.MSG_LOAD_ENTRIES_COMPLETE);
                         }
-                        sendEmptyMessage(MSG_LOAD_LAUNCHER);
+                        sendEmptyMessage(MSG_LOAD_HOME_APP);
                     }
                 } break;
+                case MSG_LOAD_HOME_APP: {
+                    final List<ResolveInfo> homeActivities = new ArrayList<>();
+                    mPm.getHomeActivities(homeActivities);
+                    synchronized (mEntriesMap) {
+                        final int entryCount = mEntriesMap.size();
+                        for (int i = 0; i < entryCount; i++) {
+                            if (DEBUG_LOCKING) Log.v(TAG, "MSG_LOAD_HOME_APP acquired lock");
+                            final HashMap<String, AppEntry> userEntries = mEntriesMap.valueAt(i);
+                            for (ResolveInfo activity : homeActivities) {
+                                String packageName = activity.activityInfo.packageName;
+                                AppEntry entry = userEntries.get(packageName);
+                                if (entry != null) {
+                                    entry.isHomeApp = true;
+                                }
+                            }
+                            if (DEBUG_LOCKING) Log.v(TAG, "MSG_LOAD_HOME_APP releasing lock");
+                        }
+                    }
+                    sendEmptyMessage(MSG_LOAD_LAUNCHER);
+                }
+                break;
                 case MSG_LOAD_LAUNCHER: {
                     Intent launchIntent = new Intent(Intent.ACTION_MAIN, null)
                             .addCategory(Intent.CATEGORY_LAUNCHER);
-
                     for (int i = 0; i < mEntriesMap.size(); i++) {
                         int userId = mEntriesMap.keyAt(i);
                         // If we do not specify MATCH_DIRECT_BOOT_AWARE or
@@ -1119,6 +1140,11 @@
          */
         public boolean hasLauncherEntry;
 
+        /**
+         * Whether or not it's a Home app.
+         */
+        public boolean isHomeApp;
+
         public String getNormalizedLabel() {
             if (normalizedLabel != null) {
                 return normalizedLabel;
@@ -1310,6 +1336,8 @@
                 return true;
             } else if (entry.hasLauncherEntry) {
                 return true;
+            } else if ((entry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0 && entry.isHomeApp) {
+                return true;
             }
             return false;
         }
diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/UsageView.java b/packages/SettingsLib/src/com/android/settingslib/graph/UsageView.java
index ee1821d..c6a45bc 100644
--- a/packages/SettingsLib/src/com/android/settingslib/graph/UsageView.java
+++ b/packages/SettingsLib/src/com/android/settingslib/graph/UsageView.java
@@ -71,10 +71,11 @@
                 layout.addView(labels);
                 // Set gravity.
                 labels.setGravity(Gravity.END);
-                // Swap the bottom label padding
+                // Swap the bottom space order.
                 LinearLayout bottomLabels = (LinearLayout) findViewById(R.id.bottom_label_group);
-                bottomLabels.setPadding(bottomLabels.getPaddingRight(), bottomLabels.getPaddingTop(),
-                        bottomLabels.getPaddingLeft(), bottomLabels.getPaddingBottom());
+                View bottomSpace = bottomLabels.findViewById(R.id.bottom_label_space);
+                bottomLabels.removeView(bottomSpace);
+                bottomLabels.addView(bottomSpace);
             } else if (gravity != Gravity.START) {
                 throw new IllegalArgumentException("Unsupported gravity " + gravity);
             }
diff --git a/packages/Shell/res/values-pl/strings.xml b/packages/Shell/res/values-pl/strings.xml
index 73cd181..9734b2e 100644
--- a/packages/Shell/res/values-pl/strings.xml
+++ b/packages/Shell/res/values-pl/strings.xml
@@ -21,7 +21,7 @@
     <string name="bugreport_finished_title" msgid="4429132808670114081">"Raport o błędzie <xliff:g id="ID">#%d</xliff:g> został zapisany"</string>
     <string name="bugreport_updating_title" msgid="4423539949559634214">"Dodaję szczegóły do raportu o błędzie"</string>
     <string name="bugreport_updating_wait" msgid="3322151947853929470">"Czekaj..."</string>
-    <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"Raport o błędzie będzie się pojawiał na telefonie przez chwilę"</string>
+    <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"Raport o błędzie będzie pojawiał się na telefonie przez chwilę"</string>
     <string name="bugreport_finished_text" product="default" msgid="8353769438382138847">"Kliknij, by udostępnić raport o błędzie"</string>
     <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"Kliknij, by udostępnić raport o błędzie bez zrzutu ekranu, lub poczekaj, aż zostanie on wygenerowany"</string>
     <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"Kliknij, by udostępnić raport o błędzie bez zrzutu ekranu, lub poczekaj, aż zostanie on wygenerowany"</string>
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index f04df4b..5a75f40 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -60,6 +60,8 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.res.Configuration;
+import android.graphics.Bitmap;
+import android.hardware.display.DisplayManagerGlobal;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -78,6 +80,8 @@
 import android.util.Log;
 import android.util.Patterns;
 import android.util.SparseArray;
+import android.view.Display;
+import android.view.KeyEvent;
 import android.view.View;
 import android.view.WindowManager;
 import android.view.View.OnFocusChangeListener;
@@ -771,7 +775,6 @@
             }
             msg = mContext.getString(R.string.bugreport_screenshot_taken);
         } else {
-            // TODO: try again using Framework APIs instead of relying on screencap.
             msg = mContext.getString(R.string.bugreport_screenshot_failed);
             Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
         }
@@ -1350,22 +1353,24 @@
     /**
      * Takes a screenshot and save it to the given location.
      */
-    private static boolean takeScreenshot(Context context, String screenshotFile) {
-        final ProcessBuilder screencap = new ProcessBuilder()
-                .command("/system/bin/screencap", "-p", screenshotFile);
-        Log.d(TAG, "Taking screenshot using " + screencap.command());
-        try {
-            final int exitValue = screencap.start().waitFor();
-            if (exitValue == 0) {
+    private static boolean takeScreenshot(Context context, String path) {
+        final Bitmap bitmap = Screenshooter.takeScreenshot();
+        if (bitmap == null) {
+            return false;
+        }
+        boolean status;
+        try (final FileOutputStream fos = new FileOutputStream(path)) {
+            if (bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)) {
                 ((Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE)).vibrate(150);
                 return true;
+            } else {
+                Log.e(TAG, "Failed to save screenshot on " + path);
             }
-            Log.e(TAG, "screencap (" + screencap.command() + ") failed: " + exitValue);
-        } catch (IOException e) {
-            Log.e(TAG, "screencap (" + screencap.command() + ") failed", e);
-        } catch (InterruptedException e) {
-            Log.w(TAG, "Thread interrupted while screencap still running");
-            Thread.currentThread().interrupt();
+        } catch (IOException e ) {
+            Log.e(TAG, "Failed to save screenshot on " + path, e);
+            return false;
+        } finally {
+            bitmap.recycle();
         }
         return false;
     }
diff --git a/packages/Shell/src/com/android/shell/Screenshooter.java b/packages/Shell/src/com/android/shell/Screenshooter.java
new file mode 100644
index 0000000..3f4895b
--- /dev/null
+++ b/packages/Shell/src/com/android/shell/Screenshooter.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2015 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.shell;
+
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Point;
+import android.hardware.display.DisplayManagerGlobal;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.Display;
+import android.view.Surface;
+import android.view.SurfaceControl;
+
+/**
+ * Helper class used to take screenshots.
+ *
+ * TODO: logic below was copied and pasted from UiAutomation; it should be refactored into a common
+ * component that could be used by both (Shell and UiAutomation).
+ */
+final class Screenshooter {
+
+    private static final String TAG = "Screenshooter";
+
+    /** Rotation constant: Freeze rotation to 0 degrees (natural orientation) */
+    public static final int ROTATION_FREEZE_0 = Surface.ROTATION_0;
+
+    /** Rotation constant: Freeze rotation to 90 degrees . */
+    public static final int ROTATION_FREEZE_90 = Surface.ROTATION_90;
+
+    /** Rotation constant: Freeze rotation to 180 degrees . */
+    public static final int ROTATION_FREEZE_180 = Surface.ROTATION_180;
+
+    /** Rotation constant: Freeze rotation to 270 degrees . */
+    public static final int ROTATION_FREEZE_270 = Surface.ROTATION_270;
+
+    /**
+     * Takes a screenshot.
+     *
+     * @return The screenshot bitmap on success, null otherwise.
+     */
+    static Bitmap takeScreenshot() {
+        Display display = DisplayManagerGlobal.getInstance()
+                .getRealDisplay(Display.DEFAULT_DISPLAY);
+        Point displaySize = new Point();
+        display.getRealSize(displaySize);
+        final int displayWidth = displaySize.x;
+        final int displayHeight = displaySize.y;
+
+        final float screenshotWidth;
+        final float screenshotHeight;
+
+        final int rotation = display.getRotation();
+        switch (rotation) {
+            case ROTATION_FREEZE_0: {
+                screenshotWidth = displayWidth;
+                screenshotHeight = displayHeight;
+            } break;
+            case ROTATION_FREEZE_90: {
+                screenshotWidth = displayHeight;
+                screenshotHeight = displayWidth;
+            } break;
+            case ROTATION_FREEZE_180: {
+                screenshotWidth = displayWidth;
+                screenshotHeight = displayHeight;
+            } break;
+            case ROTATION_FREEZE_270: {
+                screenshotWidth = displayHeight;
+                screenshotHeight = displayWidth;
+            } break;
+            default: {
+                throw new IllegalArgumentException("Invalid rotation: "
+                        + rotation);
+            }
+        }
+
+        Log.d(TAG, "Taking screenshot of dimensions " + displayWidth + " x " + displayHeight);
+        // Take the screenshot
+        Bitmap screenShot =
+                SurfaceControl.screenshot((int) screenshotWidth, (int) screenshotHeight);
+        if (screenShot == null) {
+            Log.e(TAG, "Failed to take screenshot of dimensions " + screenshotWidth + " x "
+                    + screenshotHeight);
+            return null;
+        }
+
+        // Rotate the screenshot to the current orientation
+        if (rotation != ROTATION_FREEZE_0) {
+            Bitmap unrotatedScreenShot = Bitmap.createBitmap(displayWidth, displayHeight,
+                    Bitmap.Config.ARGB_8888);
+            Canvas canvas = new Canvas(unrotatedScreenShot);
+            canvas.translate(unrotatedScreenShot.getWidth() / 2,
+                    unrotatedScreenShot.getHeight() / 2);
+            canvas.rotate(getDegreesForRotation(rotation));
+            canvas.translate(- screenshotWidth / 2, - screenshotHeight / 2);
+            canvas.drawBitmap(screenShot, 0, 0, null);
+            canvas.setBitmap(null);
+            screenShot.recycle();
+            screenShot = unrotatedScreenShot;
+        }
+
+        // Optimization
+        screenShot.setHasAlpha(false);
+
+        return screenShot;
+    }
+
+    private static float getDegreesForRotation(int value) {
+        switch (value) {
+            case Surface.ROTATION_90: {
+                return 360f - 90f;
+            }
+            case Surface.ROTATION_180: {
+                return 360f - 180f;
+            }
+            case Surface.ROTATION_270: {
+                return 360f - 270f;
+            } default: {
+                return 0;
+            }
+        }
+    }
+
+}
diff --git a/packages/SystemUI/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml b/packages/SystemUI/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml
index 67e6a01..e207cb3 100644
--- a/packages/SystemUI/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml
+++ b/packages/SystemUI/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml
@@ -98,11 +98,11 @@
             <path
                 android:name="path_2"
                 android:pathData="M 1.35900878906,6.76104736328 c 0.0,0.0 -2.69998168945,0.0 -2.69998168945,0.0 c 0.0,0.0 0.0,-2.69995117188 0.0,-2.69995117188 c 0.0,0.0 2.69998168945,0.0 2.69998168945,0.0 c 0.0,0.0 0.0,2.69995117188 0.0,2.69995117188 Z"
-                android:fillColor="#FFF2501D" />
+                android:fillColor="@*android:color/system_error" />
             <path
                 android:name="path_1"
                 android:pathData="M 1.35363769531,1.36633300781 c 0.0,0.0 -2.69998168945,0.0 -2.69998168945,0.0 c 0.0,0.0 0.0,-8.09997558594 0.0,-8.09997558594 c 0.0,0.0 2.69998168945,0.0 2.69998168945,0.0 c 0.0,0.0 0.0,8.09997558594 0.0,8.09997558594 Z"
-                android:fillColor="#FFF2501D" />
+                android:fillColor="@*android:color/system_error" />
         </group>
     </group>
     <group
@@ -117,7 +117,7 @@
             <path
                 android:name="path_3"
                 android:pathData="M 0.0101470947266,10.8087768555 c -5.96701049805,0.0 -10.8000183105,-4.8330078125 -10.8000183105,-10.8000488281 c 0.0,-5.96691894531 4.8330078125,-10.7999267578 10.8000183105,-10.7999267578 c 5.96697998047,0.0 10.799987793,4.8330078125 10.799987793,10.7999267578 c 0.0,5.96704101562 -4.8330078125,10.8000488281 -10.799987793,10.8000488281 Z"
-                android:strokeColor="#FFF2501D"
+                android:strokeColor="@*android:color/system_error"
                 android:strokeWidth="2"
                 android:trimPathStart="0"
                 android:trimPathEnd="1" />
diff --git a/packages/SystemUI/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml b/packages/SystemUI/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml
index bbadec1..2b4babc 100644
--- a/packages/SystemUI/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml
+++ b/packages/SystemUI/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml
@@ -96,7 +96,7 @@
                 <path
                     android:name="ridge_5_path_0"
                     android:pathData="M -25.3591003418,-24.4138946533 c -0.569000244141,0.106399536133 -1.12660217285,0.140594482422 -1.45460510254,0.140594482422 c -1.29689025879,0.0 -2.53239440918,-0.343307495117 -3.62019348145,-1.12400817871 c -1.67700195312,-1.20349121094 -2.76950073242,-3.17008972168 -2.76950073242,-5.39189147949"
-                    android:strokeColor="#FFF2501D"
+                    android:strokeColor="@*android:color/system_error"
                     android:strokeWidth="1.45"
                     android:strokeLineCap="round"
                     android:trimPathEnd="0" />
@@ -106,7 +106,7 @@
                 <path
                     android:name="ridge_7_path_0"
                     android:pathData="M -36.1409912109,-21.7843475342 c -1.00540161133,-1.19300842285 -1.57499694824,-1.9181060791 -2.36520385742,-3.50170898438 c -0.827560424805,-1.65869140625 -1.31352233887,-3.49159240723 -1.31352233887,-5.48489379883 c 0.0,-3.66279602051 2.96932983398,-6.63220214844 6.63221740723,-6.63220214844 c 3.6628112793,0.0 6.63220214844,2.96940612793 6.63220214844,6.63220214844"
-                    android:strokeColor="#FFF2501D"
+                    android:strokeColor="@*android:color/system_error"
                     android:strokeWidth="1.45"
                     android:strokeLineCap="round"
                     android:trimPathEnd="0" />
@@ -116,7 +116,7 @@
                 <path
                     android:name="ridge_6_path_0"
                     android:pathData="M -42.1907958984,-25.6756896973 c -0.758117675781,-2.14370727539 -0.896545410156,-3.86891174316 -0.896545410156,-5.12921142578 c 0.0,-1.46069335938 0.249176025391,-2.84799194336 0.814682006836,-4.09748840332 c 1.56153869629,-3.45030212402 5.03434753418,-5.85076904297 9.0679473877,-5.85076904297 c 5.49430847168,0.0 9.94830322266,4.4539642334 9.94830322266,9.94825744629 c 0.0,1.83151245117 -1.48460388184,3.31610107422 -3.31610107422,3.31610107422 c -1.83149719238,0.0 -3.31610107422,-1.48469543457 -3.31610107422,-3.31610107422 c 0.0,-1.83139038086 -1.48458862305,-3.31610107422 -3.31610107422,-3.31610107422 c -1.83149719238,0.0 -3.31610107422,1.48471069336 -3.31610107422,3.31610107422 c 0.0,2.57020568848 0.989517211914,4.88710021973 2.60510253906,6.5865020752 c 1.22210693359,1.28550720215 2.43139648438,2.09950256348 4.47590637207,2.69030761719"
-                    android:strokeColor="#FFF2501D"
+                    android:strokeColor="@*android:color/system_error"
                     android:strokeWidth="1.45"
                     android:strokeLineCap="round"
                     android:trimPathEnd="0" />
@@ -126,7 +126,7 @@
                 <path
                     android:name="ridge_2_path_0"
                     android:pathData="M -44.0646514893,-38.1672973633 c 1.19026184082,-1.77430725098 2.67503356934,-3.24531555176 4.55902099609,-4.27278137207 c 1.88395690918,-1.0274810791 4.04466247559,-1.61137390137 6.34175109863,-1.61137390137 c 2.28761291504,0.0 4.43991088867,0.579071044922 6.31831359863,1.59861755371 c 1.8784942627,1.01954650879 3.36059570312,2.4796295166 4.55279541016,4.24153137207"
-                    android:strokeColor="#FFF2501D"
+                    android:strokeColor="@*android:color/system_error"
                     android:strokeWidth="1.45"
                     android:strokeLineCap="round"
                     android:trimPathStart="1" />
@@ -138,7 +138,7 @@
                 <path
                     android:name="ridge_1_path_0"
                     android:pathData="M 71.7812347412,97.0507202148 c -2.27149963379,-1.31344604492 -4.71360778809,-2.07006835938 -7.56221008301,-2.07006835938 c -2.84869384766,0.0 -5.23320007324,0.779556274414 -7.34411621094,2.07006835938"
-                    android:strokeColor="#FFF2501D"
+                    android:strokeColor="@*android:color/system_error"
                     android:strokeWidth="1.45"
                     android:strokeLineCap="round"
                     android:trimPathEnd="0" />
@@ -157,11 +157,11 @@
             <path
                 android:name="path_2"
                 android:pathData="M -1.3705291748,4.06730651855 c 0.0,0.0 0.036376953125,-0.0102386474609 0.036376953125,-0.0102386474609 c 0.0,0.0 -0.00682067871094,0.0040283203125 -0.00682067871093,0.0040283203125 c 0.0,0.0 -0.0161437988281,0.00479125976562 -0.0161437988281,0.00479125976563 c 0.0,0.0 -0.0134124755859,0.00141906738281 -0.0134124755859,0.00141906738281 Z"
-                android:fillColor="#FFF2501D" />
+                android:fillColor="@*android:color/system_error" />
             <path
                 android:name="path_1"
                 android:pathData="M -1.3737487793,-6.77532958984 c 0.0,0.0 0.00604248046875,0.0166625976562 0.00604248046876,0.0166625976562 c 0.0,0.0 0.0213623046875,0.0250244140625 0.0213623046875,0.0250244140625 c 0.0,0.0 -0.00604248046875,-0.0166625976562 -0.00604248046876,-0.0166625976562 c 0.0,0.0 -0.0213623046875,-0.0250244140625 -0.0213623046875,-0.0250244140625 Z"
-                android:fillColor="#FFF2501D" />
+                android:fillColor="@*android:color/system_error" />
         </group>
     </group>
     <group
@@ -176,7 +176,7 @@
             <path
                 android:name="path_3"
                 android:pathData="M 0.0101470947266,10.8087768555 c -5.96701049805,0.0 -10.8000183105,-4.8330078125 -10.8000183105,-10.8000488281 c 0.0,-5.96691894531 4.8330078125,-10.7999267578 10.8000183105,-10.7999267578 c 5.96697998047,0.0 10.799987793,4.8330078125 10.799987793,10.7999267578 c 0.0,5.96704101562 -4.8330078125,10.8000488281 -10.799987793,10.8000488281 Z"
-                android:strokeColor="#FFF2501D"
+                android:strokeColor="@*android:color/system_error"
                 android:strokeWidth="2"
                 android:trimPathStart="1" />
         </group>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index fa30f49..c2897cd 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -126,6 +126,9 @@
     <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
     <bool name="config_show4GForLTE">true</bool>
 
+    <!-- Should "LTE"/"4G" be shown instead of "LTE+"/"4G+" when on NETWORK_TYPE_LTE_CA? -->
+    <bool name="config_hideLtePlus">false</bool>
+
     <!-- milliseconds before the heads up notification auto-dismisses. -->
     <integer name="heads_up_notification_decay">5000</integer>
 
@@ -247,7 +250,7 @@
     <integer name="doze_pulse_duration_in">900</integer>
 
     <!-- Doze: pulse parameter - how long does it take to fade in after a pickup? -->
-    <integer name="doze_pulse_duration_in_pickup">300</integer>
+    <integer name="doze_pulse_duration_in_pickup">130</integer>
 
     <!-- Doze: pulse parameter - once faded in, how long does it stay visible? -->
     <integer name="doze_pulse_duration_visible">3000</integer>
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java b/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java
index 85a9bee..4c64711 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java
@@ -16,6 +16,8 @@
 
 package com.android.systemui.classifier;
 
+import android.os.SystemClock;
+
 import java.util.ArrayList;
 
 /**
@@ -31,7 +33,7 @@
     private long mLastUpdate;
 
     public HistoryEvaluator() {
-        mLastUpdate = System.currentTimeMillis();
+        mLastUpdate = SystemClock.elapsedRealtime();
     }
 
     public void addStroke(float evaluation) {
@@ -69,15 +71,18 @@
     }
 
     private void decayValue() {
-        long currentTimeMillis = System.currentTimeMillis();
+        long time = SystemClock.elapsedRealtime();
+
+        if (time <= mLastUpdate) {
+            return;
+        }
 
         // All weights are multiplied by HISTORY_FACTOR after each INTERVAL milliseconds.
-        float factor = (float) Math.pow(HISTORY_FACTOR,
-                (float) (currentTimeMillis - mLastUpdate) / INTERVAL);
+        float factor = (float) Math.pow(HISTORY_FACTOR, (time - mLastUpdate) / INTERVAL);
 
         decayValue(mStrokes, factor);
         decayValue(mGestureWeights, factor);
-        mLastUpdate = currentTimeMillis;
+        mLastUpdate = time;
     }
 
     private void decayValue(ArrayList<Data> list, float factor) {
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index 9eb768c..7c8d0f6 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -57,8 +57,9 @@
     private static SummaryStats sEmergencyCallStats;
     private static SummaryStats[][] sProxStats; // [reason][near/far]
 
-    public static void tracePickupPulse(boolean withinVibrationThreshold) {
+    public static void tracePickupPulse(Context context, boolean withinVibrationThreshold) {
         if (!ENABLED) return;
+        init(context);
         log("pickupPulse withinVibrationThreshold=" + withinVibrationThreshold);
         (withinVibrationThreshold ? sPickupPulseNearVibrationStats
                 : sPickupPulseNotNearVibrationStats).append();
@@ -76,8 +77,9 @@
         log("pulseFinish");
     }
 
-    public static void traceNotificationPulse(long instance) {
+    public static void traceNotificationPulse(Context context, long instance) {
         if (!ENABLED) return;
+        init(context);
         log("notificationPulse instance=" + instance);
         sNotificationPulseStats.append();
     }
@@ -153,9 +155,9 @@
     public static void traceProximityResult(Context context, boolean near, long millis,
             int pulseReason) {
         if (!ENABLED) return;
+        init(context);
         log("proximityResult reason=" + pulseReasonToString(pulseReason) + " near=" + near
                 + " millis=" + millis);
-        init(context);
         sProxStats[pulseReason][near ? 0 : 1].append();
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 661b347..fc0d8bb 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -373,7 +373,7 @@
         if (DEBUG) Log.d(mTag, "mScheduleResetsRemaining = " + mScheduleResetsRemaining);
         mNotificationPulseTime = notificationTimeMs;
         if (pulseImmediately) {
-            DozeLog.traceNotificationPulse(0);
+            DozeLog.traceNotificationPulse(mContext, 0);
             requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         }
         // schedule the rest of the pulses
@@ -442,7 +442,7 @@
             if (NOTIFICATION_PULSE_ACTION.equals(intent.getAction())) {
                 final long instance = intent.getLongExtra(EXTRA_INSTANCE, -1);
                 if (DEBUG) Log.d(mTag, "Received notification pulse intent instance=" + instance);
-                DozeLog.traceNotificationPulse(instance);
+                DozeLog.traceNotificationPulse(mContext, instance);
                 requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
                 rescheduleNotificationPulse(mNotificationLightOn);
             }
@@ -576,7 +576,7 @@
                     resetNotificationResets();
                 }
                 if (mSensor.getType() == Sensor.TYPE_PICK_UP_GESTURE) {
-                    DozeLog.tracePickupPulse(withinVibrationThreshold);
+                    DozeLog.tracePickupPulse(mContext, withinVibrationThreshold);
                 }
             } finally {
                 mWakeLock.release();
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
index 84d3599..b354a4c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
@@ -23,6 +23,7 @@
 import android.os.Debug;
 import android.os.IBinder;
 import android.os.Process;
+import android.os.Trace;
 import android.util.Log;
 
 import com.android.internal.policy.IKeyguardDrawnCallback;
@@ -73,21 +74,27 @@
 
         @Override // Binder interface
         public void verifyUnlock(IKeyguardExitCallback callback) {
+            Trace.beginSection("KeyguardService.mBinder#verifyUnlock");
             checkPermission();
             mKeyguardViewMediator.verifyUnlock(callback);
+            Trace.endSection();
         }
 
         @Override // Binder interface
         public void keyguardDone(boolean authenticated, boolean wakeup) {
+            Trace.beginSection("KeyguardService.mBinder#keyguardDone");
             checkPermission();
             // TODO: Remove wakeup
             mKeyguardViewMediator.keyguardDone(authenticated);
+            Trace.endSection();
         }
 
         @Override // Binder interface
         public void setOccluded(boolean isOccluded) {
+            Trace.beginSection("KeyguardService.mBinder#setOccluded");
             checkPermission();
             mKeyguardViewMediator.setOccluded(isOccluded);
+            Trace.endSection();
         }
 
         @Override // Binder interface
@@ -122,20 +129,26 @@
 
         @Override // Binder interface
         public void onStartedWakingUp() {
+            Trace.beginSection("KeyguardService.mBinder#onStartedWakingUp");
             checkPermission();
             mKeyguardViewMediator.onStartedWakingUp();
+            Trace.endSection();
         }
 
         @Override // Binder interface
         public void onScreenTurningOn(IKeyguardDrawnCallback callback) {
+            Trace.beginSection("KeyguardService.mBinder#onScreenTurningOn");
             checkPermission();
             mKeyguardViewMediator.onScreenTurningOn(callback);
+            Trace.endSection();
         }
 
         @Override // Binder interface
         public void onScreenTurnedOn() {
+            Trace.beginSection("KeyguardService.mBinder#onScreenTurningOn");
             checkPermission();
             mKeyguardViewMediator.onScreenTurnedOn();
+            Trace.endSection();
         }
 
         @Override // Binder interface
@@ -152,8 +165,10 @@
 
         @Override // Binder interface
         public void onSystemReady() {
+            Trace.beginSection("KeyguardService.mBinder#onSystemReady");
             checkPermission();
             mKeyguardViewMediator.onSystemReady();
+            Trace.endSection();
         }
 
         @Override // Binder interface
@@ -176,8 +191,10 @@
 
         @Override
         public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
+            Trace.beginSection("KeyguardService.mBinder#startKeyguardExitAnimation");
             checkPermission();
             mKeyguardViewMediator.startKeyguardExitAnimation(startTime, fadeoutDuration);
+            Trace.endSection();
         }
 
         @Override
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 42a9ed5..cfa4661 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -42,6 +42,7 @@
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.SystemProperties;
+import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.os.storage.StorageManager;
@@ -520,7 +521,9 @@
 
         @Override
         public void keyguardDoneDrawing() {
+            Trace.beginSection("KeyguardViewMediator.mViewMediatorCallback#keyguardDoneDrawing");
             mHandler.sendEmptyMessage(KEYGUARD_DONE_DRAWING);
+            Trace.endSection();
         }
 
         @Override
@@ -530,6 +533,7 @@
 
         @Override
         public void keyguardDonePending(boolean strongAuth) {
+            Trace.beginSection("KeyguardViewMediator.mViewMediatorCallback#keyguardDonePending");
             mKeyguardDonePending = true;
             mHideAnimationRun = true;
             mStatusBarKeyguardViewManager.startPreHideAnimation(null /* finishRunnable */);
@@ -538,20 +542,25 @@
             if (strongAuth) {
                 mUpdateMonitor.reportSuccessfulStrongAuthUnlockAttempt();
             }
+            Trace.endSection();
         }
 
         @Override
         public void keyguardGone() {
+            Trace.beginSection("KeyguardViewMediator.mViewMediatorCallback#keyguardGone");
             mKeyguardDisplayManager.hide();
+            Trace.endSection();
         }
 
         @Override
         public void readyForKeyguardDone() {
+            Trace.beginSection("KeyguardViewMediator.mViewMediatorCallback#readyForKeyguardDone");
             if (mKeyguardDonePending) {
                 // Somebody has called keyguardDonePending before, which means that we are
                 // authenticated
                 KeyguardViewMediator.this.keyguardDone(true /* authenticated */);
             }
+            Trace.endSection();
         }
 
         @Override
@@ -892,6 +901,7 @@
      * Let's us know when the device is waking up.
      */
     public void onStartedWakingUp() {
+        Trace.beginSection("KeyguardViewMediator#onStartedWakingUp");
 
         // TODO: Rename all screen off/on references to interactive/sleeping
         synchronized (this) {
@@ -903,15 +913,20 @@
         }
         KeyguardUpdateMonitor.getInstance(mContext).dispatchStartedWakingUp();
         maybeSendUserPresentBroadcast();
+        Trace.endSection();
     }
 
     public void onScreenTurningOn(IKeyguardDrawnCallback callback) {
+        Trace.beginSection("KeyguardViewMediator#onScreenTurningOn");
         notifyScreenOn(callback);
+        Trace.endSection();
     }
 
     public void onScreenTurnedOn() {
+        Trace.beginSection("KeyguardViewMediator#onScreenTurnedOn");
         notifyScreenTurnedOn();
         mUpdateMonitor.dispatchScreenTurnedOn();
+        Trace.endSection();
     }
 
     public void onScreenTurnedOff() {
@@ -1025,6 +1040,7 @@
      * @see android.app.KeyguardManager#exitKeyguardSecurely
      */
     public void verifyUnlock(IKeyguardExitCallback callback) {
+        Trace.beginSection("KeyguardViewMediator#verifyUnlock");
         synchronized (this) {
             if (DEBUG) Log.d(TAG, "verifyUnlock");
             if (shouldWaitForProvisioning()) {
@@ -1075,6 +1091,7 @@
                 }
             }
         }
+        Trace.endSection();
     }
 
     /**
@@ -1088,16 +1105,19 @@
      * Notify us when the keyguard is occluded by another window
      */
     public void setOccluded(boolean isOccluded) {
+        Trace.beginSection("KeyguardViewMediator#setOccluded");
         if (DEBUG) Log.d(TAG, "setOccluded " + isOccluded);
         mHandler.removeMessages(SET_OCCLUDED);
         Message msg = mHandler.obtainMessage(SET_OCCLUDED, (isOccluded ? 1 : 0), 0);
         mHandler.sendMessage(msg);
+        Trace.endSection();
     }
 
     /**
      * Handles SET_OCCLUDED message sent by setOccluded()
      */
     private void handleSetOccluded(boolean isOccluded) {
+        Trace.beginSection("KeyguardViewMediator#handleSetOccluded");
         synchronized (KeyguardViewMediator.this) {
             if (mHiding && isOccluded) {
                 // We're in the process of going away but WindowManager wants to show a
@@ -1112,6 +1132,7 @@
                 adjustStatusBarLocked();
             }
         }
+        Trace.endSection();
     }
 
     /**
@@ -1300,11 +1321,13 @@
      * @see #handleShow
      */
     private void showLocked(Bundle options) {
+        Trace.beginSection("KeyguardViewMediator#showLocked aqcuiring mShowKeyguardWakeLock");
         if (DEBUG) Log.d(TAG, "showLocked");
         // ensure we stay awake until we are finished displaying the keyguard
         mShowKeyguardWakeLock.acquire();
         Message msg = mHandler.obtainMessage(SHOW, options);
         mHandler.sendMessage(msg);
+        Trace.endSection();
     }
 
     /**
@@ -1312,9 +1335,11 @@
      * @see #handleHide()
      */
     private void hideLocked() {
+        Trace.beginSection("KeyguardViewMediator#hideLocked");
         if (DEBUG) Log.d(TAG, "hideLocked");
         Message msg = mHandler.obtainMessage(HIDE);
         mHandler.sendMessage(msg);
+        Trace.endSection();
     }
 
     public boolean isSecure() {
@@ -1359,10 +1384,12 @@
     };
 
     public void keyguardDone(boolean authenticated) {
+        Trace.beginSection("KeyguardViewMediator#keyguardDone");
         if (DEBUG) Log.d(TAG, "keyguardDone(" + authenticated +")");
         EventLog.writeEvent(70000, 2);
         Message msg = mHandler.obtainMessage(KEYGUARD_DONE, authenticated ? 1 : 0);
         mHandler.sendMessage(msg);
+        Trace.endSection();
     }
 
     /**
@@ -1386,7 +1413,9 @@
                     handleReset();
                     break;
                 case VERIFY_UNLOCK:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage VERIFY_UNLOCK");
                     handleVerifyUnlock();
+                    Trace.endSection();
                     break;
                 case NOTIFY_STARTED_GOING_TO_SLEEP:
                     handleNotifyStartedGoingToSleep();
@@ -1395,25 +1424,37 @@
                     handleNotifyFinishedGoingToSleep();
                     break;
                 case NOTIFY_SCREEN_TURNING_ON:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage NOTIFY_SCREEN_TURNING_ON");
                     handleNotifyScreenTurningOn((IKeyguardDrawnCallback) msg.obj);
+                    Trace.endSection();
                     break;
                 case NOTIFY_SCREEN_TURNED_ON:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage NOTIFY_SCREEN_TURNED_ON");
                     handleNotifyScreenTurnedOn();
+                    Trace.endSection();
                     break;
                 case NOTIFY_SCREEN_TURNED_OFF:
                     handleNotifyScreenTurnedOff();
                     break;
                 case NOTIFY_STARTED_WAKING_UP:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage NOTIFY_STARTED_WAKING_UP");
                     handleNotifyStartedWakingUp();
+                    Trace.endSection();
                     break;
                 case KEYGUARD_DONE:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage KEYGUARD_DONE");
                     handleKeyguardDone(msg.arg1 != 0);
+                    Trace.endSection();
                     break;
                 case KEYGUARD_DONE_DRAWING:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage KEYGUARD_DONE_DRAWING");
                     handleKeyguardDoneDrawing();
+                    Trace.endSection();
                     break;
                 case SET_OCCLUDED:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage SET_OCCLUDED");
                     handleSetOccluded(msg.arg1 != 0);
+                    Trace.endSection();
                     break;
                 case KEYGUARD_TIMEOUT:
                     synchronized (KeyguardViewMediator.this) {
@@ -1424,12 +1465,16 @@
                     handleDismiss();
                     break;
                 case START_KEYGUARD_EXIT_ANIM:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage START_KEYGUARD_EXIT_ANIM");
                     StartKeyguardExitAnimParams params = (StartKeyguardExitAnimParams) msg.obj;
                     handleStartKeyguardExitAnimation(params.startTime, params.fadeoutDuration);
                     FalsingManager.getInstance(mContext).onSucccessfulUnlock();
+                    Trace.endSection();
                     break;
                 case KEYGUARD_DONE_PENDING_TIMEOUT:
+                    Trace.beginSection("KeyguardViewMediator#handleMessage KEYGUARD_DONE_PENDING_TIMEOUT");
                     Log.w(TAG, "Timeout while waiting for activity drawn!");
+                    Trace.endSection();
                     // Fall through.
                 case ON_ACTIVITY_DRAWN:
                     handleOnActivityDrawn();
@@ -1443,6 +1488,7 @@
      * @see #KEYGUARD_DONE
      */
     private void handleKeyguardDone(boolean authenticated) {
+        Trace.beginSection("KeyguardViewMediator#handleKeyguardDone");
         final int currentUser = KeyguardUpdateMonitor.getCurrentUser();
         if (mLockPatternUtils.isSecure(currentUser)) {
             mLockPatternUtils.getDevicePolicyManager().reportKeyguardDismissed(currentUser);
@@ -1480,6 +1526,7 @@
         }
 
         handleHide();
+        Trace.endSection();
     }
 
     private void sendUserPresentBroadcast() {
@@ -1504,6 +1551,7 @@
      * @see #KEYGUARD_DONE_DRAWING
      */
     private void handleKeyguardDoneDrawing() {
+        Trace.beginSection("KeyguardViewMediator#handleKeyguardDoneDrawing");
         synchronized(this) {
             if (DEBUG) Log.d(TAG, "handleKeyguardDoneDrawing");
             if (mWaitingUntilKeyguardVisible) {
@@ -1517,6 +1565,7 @@
                 mHandler.removeMessages(KEYGUARD_DONE_DRAWING);
             }
         }
+        Trace.endSection();
     }
 
     private void playSounds(boolean locked) {
@@ -1548,10 +1597,12 @@
     }
 
     private void updateActivityLockScreenState() {
+        Trace.beginSection("KeyguardViewMediator#updateActivityLockScreenState");
         try {
             ActivityManagerNative.getDefault().setLockScreenShown(mShowing, mOccluded);
         } catch (RemoteException e) {
         }
+        Trace.endSection();
     }
 
     /**
@@ -1559,6 +1610,7 @@
      * @see #SHOW
      */
     private void handleShow(Bundle options) {
+        Trace.beginSection("KeyguardViewMediator#handleShow");
         final int currentUser = KeyguardUpdateMonitor.getCurrentUser();
         if (mLockPatternUtils.isSecure(currentUser)) {
             mLockPatternUtils.getDevicePolicyManager().reportKeyguardSecured(currentUser);
@@ -1584,11 +1636,13 @@
             mShowKeyguardWakeLock.release();
         }
         mKeyguardDisplayManager.show();
+        Trace.endSection();
     }
 
     private final Runnable mKeyguardGoingAwayRunnable = new Runnable() {
         @Override
         public void run() {
+            Trace.beginSection("KeyguardViewMediator.mKeyGuardGoingAwayRunnable");
             try {
                 mStatusBarKeyguardViewManager.keyguardGoingAway();
 
@@ -1611,6 +1665,7 @@
             } catch (RemoteException e) {
                 Log.e(TAG, "Error while calling WindowManager", e);
             }
+            Trace.endSection();
         }
     };
 
@@ -1619,6 +1674,7 @@
      * @see #HIDE
      */
     private void handleHide() {
+        Trace.beginSection("KeyguardViewMediator#handleHide");
         synchronized (KeyguardViewMediator.this) {
             if (DEBUG) Log.d(TAG, "handleHide");
 
@@ -1646,6 +1702,7 @@
                         mHideAnimation.getDuration());
             }
         }
+        Trace.endSection();
     }
 
     private void handleOnActivityDrawn() {
@@ -1656,6 +1713,7 @@
     }
 
     private void handleStartKeyguardExitAnimation(long startTime, long fadeoutDuration) {
+        Trace.beginSection("KeyguardViewMediator#handleStartKeyguardExitAnimation");
         synchronized (KeyguardViewMediator.this) {
 
             if (!mHiding) {
@@ -1686,6 +1744,7 @@
             adjustStatusBarLocked();
             sendUserPresentBroadcast();
         }
+        Trace.endSection();
     }
 
     private void adjustStatusBarLocked() {
@@ -1737,12 +1796,14 @@
      * @see #VERIFY_UNLOCK
      */
     private void handleVerifyUnlock() {
+        Trace.beginSection("KeyguardViewMediator#handleVerifyUnlock");
         synchronized (KeyguardViewMediator.this) {
             if (DEBUG) Log.d(TAG, "handleVerifyUnlock");
             setShowingLocked(true);
             mStatusBarKeyguardViewManager.verifyUnlock();
             updateActivityLockScreenState();
         }
+        Trace.endSection();
     }
 
     private void handleNotifyStartedGoingToSleep() {
@@ -1764,13 +1825,16 @@
     }
 
     private void handleNotifyStartedWakingUp() {
+        Trace.beginSection("KeyguardViewMediator#handleMotifyStartedWakingUp");
         synchronized (KeyguardViewMediator.this) {
             if (DEBUG) Log.d(TAG, "handleNotifyWakingUp");
             mStatusBarKeyguardViewManager.onStartedWakingUp();
         }
+        Trace.endSection();
     }
 
     private void handleNotifyScreenTurningOn(IKeyguardDrawnCallback callback) {
+        Trace.beginSection("KeyguardViewMediator#handleNotifyScreenTurningOn");
         synchronized (KeyguardViewMediator.this) {
             if (DEBUG) Log.d(TAG, "handleNotifyScreenTurningOn");
             mStatusBarKeyguardViewManager.onScreenTurningOn();
@@ -1782,13 +1846,16 @@
                 }
             }
         }
+        Trace.endSection();
     }
 
     private void handleNotifyScreenTurnedOn() {
+        Trace.beginSection("KeyguardViewMediator#handleNotifyScreenTurnedOn");
         synchronized (this) {
             if (DEBUG) Log.d(TAG, "handleNotifyScreenTurnedOn");
             mStatusBarKeyguardViewManager.onScreenTurnedOn();
         }
+        Trace.endSection();
     }
 
     private void handleNotifyScreenTurnedOff() {
@@ -1800,11 +1867,13 @@
     }
 
     private void notifyDrawn(final IKeyguardDrawnCallback callback) {
+        Trace.beginSection("KeyguardViewMediator#notifyDrawn");
         try {
             callback.onDrawn();
         } catch (RemoteException e) {
             Slog.w(TAG, "Exception calling onDrawn():", e);
         }
+        Trace.endSection();
     }
 
     private void resetKeyguardDonePendingLocked() {
@@ -1824,8 +1893,10 @@
     }
 
     public void onWakeAndUnlocking() {
+        Trace.beginSection("KeyguardViewMediator#onWakeAndUnlocking");
         mWakeAndUnlocking = true;
         keyguardDone(true /* authenticated */);
+        Trace.endSection();
     }
 
     public StatusBarKeyguardViewManager registerStatusBar(PhoneStatusBar phoneStatusBar,
@@ -1838,9 +1909,11 @@
     }
 
     public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
+        Trace.beginSection("KeyguardViewMediator#startKeyguardExitAnimation");
         Message msg = mHandler.obtainMessage(START_KEYGUARD_EXIT_ANIM,
                 new StartKeyguardExitAnimParams(startTime, fadeoutDuration));
         mHandler.sendMessage(msg);
+        Trace.endSection();
     }
 
     public void onActivityDrawn() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
index 2d1f753..9415b27 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.qs.tiles;
 
+import android.app.ActivityManager;
 import android.content.Intent;
 import android.provider.Settings;
 import android.widget.Switch;
@@ -29,11 +30,12 @@
 public class NightDisplayTile extends QSTile<QSTile.BooleanState>
         implements NightDisplayController.Callback {
 
-    private final NightDisplayController mController;
+    private NightDisplayController mController;
+    private boolean mIsListening;
 
     public NightDisplayTile(Host host) {
         super(host);
-        mController = new NightDisplayController(mContext);
+        mController = new NightDisplayController(mContext, ActivityManager.getCurrentUser());
     }
 
     @Override
@@ -54,6 +56,22 @@
     }
 
     @Override
+    protected void handleUserSwitch(int newUserId) {
+        // Stop listening to the old controller.
+        if (mIsListening) {
+            mController.setListener(null);
+        }
+
+        // Make a new controller for the new user.
+        mController = new NightDisplayController(mContext, newUserId);
+        if (mIsListening) {
+            mController.setListener(this);
+        }
+
+        super.handleUserSwitch(newUserId);
+    }
+
+    @Override
     protected void handleUpdateState(BooleanState state, Object arg) {
         final boolean isActivated = mController.isActivated();
         state.value = isActivated;
@@ -79,6 +97,7 @@
 
     @Override
     protected void setListening(boolean listening) {
+        mIsListening = listening;
         if (listening) {
             mController.setListener(this);
             refreshState();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
index ca59831..ba31e3e 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java
@@ -200,6 +200,10 @@
 
                             if (cachedThumbnailData.thumbnail == null) {
                                 cachedThumbnailData.thumbnail = mDefaultThumbnail;
+                            } else {
+                                // Kick off an early upload of the bitmap to GL so
+                                // that this won't jank the first frame it's drawn in.
+                                cachedThumbnailData.thumbnail.prepareToDraw();
                             }
 
                             // When svelte, we trim the memory to just the visible thumbnails when
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewThumbnail.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewThumbnail.java
index 3193759..c46adf1 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewThumbnail.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewThumbnail.java
@@ -164,6 +164,7 @@
     /** Sets the thumbnail to a given bitmap. */
     void setThumbnail(Bitmap bm, ActivityManager.TaskThumbnailInfo thumbnailInfo) {
         if (bm != null) {
+            bm.prepareToDraw();
             mBitmapShader = new BitmapShader(bm, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
             mDrawPaint.setShader(mBitmapShader);
             mThumbnailRect.set(0, 0, bm.getWidth(), bm.getHeight());
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
index 998f50f..cb77d7b 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
@@ -31,6 +31,7 @@
 import android.hardware.display.DisplayManager;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Message;
 import android.util.AttributeSet;
 import android.view.Display;
 import android.view.DisplayInfo;
@@ -106,6 +107,11 @@
     private static final Interpolator IME_ADJUST_INTERPOLATOR =
             new PathInterpolator(0.2f, 0f, 0.1f, 1f);
 
+    private static final long ONE_MS_IN_NS = 1000000;
+    private static final long ONE_S_IN_NS = ONE_MS_IN_NS * 1000;
+
+    private static final int MSG_RESIZE_STACK = 0;
+
     private DividerHandleView mHandle;
     private View mBackground;
     private MinimizedDockShadow mMinimizedShadow;
@@ -150,7 +156,25 @@
     private boolean mDockedStackMinimized;
     private boolean mAdjustedForIme;
     private DividerState mState;
-    private final Handler mHandler = new Handler();
+
+    /**
+     * The offset between vsync-app and vsync-surfaceflinger. See
+     * {@link #calculateAppSurfaceFlingerVsyncOffsetMs} why this is necessary.
+     */
+    private long mSurfaceFlingerOffsetMs;
+
+    private final Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_RESIZE_STACK:
+                    resizeStack(msg.arg1, msg.arg2, (SnapTarget) msg.obj);
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    };
 
     private final AccessibilityDelegate mHandleDelegate = new AccessibilityDelegate() {
         @Override
@@ -290,6 +314,7 @@
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
         EventBus.getDefault().register(this);
+        mSurfaceFlingerOffsetMs = calculateAppSurfaceFlingerVsyncOffsetMs();
     }
 
     @Override
@@ -298,6 +323,25 @@
         EventBus.getDefault().unregister(this);
     }
 
+    /**
+     * This method calculates the offset between vsync-surfaceflinger and vsync-app. If vsync-app
+     * is a couple of milliseconds before vsync-sf, a touch or animation event that causes the
+     * stacks to be resized are sometimes processed before the vsync-sf tick, and sometimes after,
+     * which leads to jank. Figure out this difference here and then post all the touch/animation
+     * events to start being processed at vsync-sf.
+     *
+     * @return The offset between vsync-app and vsync-sf, or 0 if vsync app happens after vsync-sf.
+     */
+    private long calculateAppSurfaceFlingerVsyncOffsetMs() {
+        Display display = getDisplay();
+
+        // Calculate vsync offset from SurfaceFlinger.
+        // See frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp:getDisplayConfigs
+        long vsyncPeriod = (long) (ONE_S_IN_NS / display.getRefreshRate());
+        long sfVsyncOffset = vsyncPeriod - (display.getPresentationDeadlineNanos() - ONE_MS_IN_NS);
+        return Math.max(0, (sfVsyncOffset - display.getAppVsyncOffsetNanos()) / ONE_MS_IN_NS);
+    }
+
     @Override
     public WindowInsets onApplyWindowInsets(WindowInsets insets) {
         if (mStableInsets.left != insets.getStableInsetLeft()
@@ -453,7 +497,7 @@
                 if (mMoving && mDockSide != WindowManager.DOCKED_INVALID) {
                     SnapTarget snapTarget = mSnapAlgorithm.calculateSnapTarget(
                             mStartPosition, 0 /* velocity */, false /* hardDismiss */);
-                    resizeStack(calculatePosition(x, y), mStartPosition, snapTarget);
+                    resizeStackDelayed(calculatePosition(x, y), mStartPosition, snapTarget);
                 }
                 break;
             case MotionEvent.ACTION_UP:
@@ -532,10 +576,11 @@
             final long endDelay) {
         final boolean taskPositionSameAtEnd = snapTarget.flag == SnapTarget.FLAG_NONE;
         ValueAnimator anim = ValueAnimator.ofInt(position, snapTarget.position);
-        anim.addUpdateListener(animation -> resizeStack((Integer) animation.getAnimatedValue(),
+        anim.addUpdateListener(animation -> resizeStackDelayed((int) animation.getAnimatedValue(),
                 taskPositionSameAtEnd && animation.getAnimatedFraction() == 1f
                         ? TASK_POSITION_SAME
-                        : snapTarget.taskPosition, snapTarget));
+                        : snapTarget.taskPosition,
+                snapTarget));
         Runnable endAction = () -> {
             commitSnapFlags(snapTarget);
             mWindowManagerProxy.setResizing(false);
@@ -551,15 +596,24 @@
 
             @Override
             public void onAnimationCancel(Animator animation) {
+                mHandler.removeMessages(MSG_RESIZE_STACK);
                 mCancelled = true;
             }
 
             @Override
             public void onAnimationEnd(Animator animation) {
-                if (endDelay == 0 || mCancelled) {
+                long delay = 0;
+                if (endDelay != 0) {
+                    delay = endDelay;
+                } else if (mCancelled) {
+                    delay = 0;
+                } else if (mSurfaceFlingerOffsetMs != 0) {
+                    delay = mSurfaceFlingerOffsetMs;
+                }
+                if (delay == 0) {
                     endAction.run();
                 } else {
-                    mHandler.postDelayed(endAction, endDelay);
+                    mHandler.postDelayed(endAction, delay);
                 }
             }
         });
@@ -793,6 +847,17 @@
                 mDisplayHeight, mDividerSize);
     }
 
+    public void resizeStackDelayed(int position, int taskPosition, SnapTarget taskSnapTarget) {
+        if (mSurfaceFlingerOffsetMs != 0) {
+            Message message = mHandler.obtainMessage(MSG_RESIZE_STACK, position, taskPosition,
+                    taskSnapTarget);
+            message.setAsynchronous(true);
+            mHandler.sendMessageDelayed(message, mSurfaceFlingerOffsetMs);
+        } else {
+            resizeStack(position, taskPosition, taskSnapTarget);
+        }
+    }
+
     public void resizeStack(int position, int taskPosition, SnapTarget taskSnapTarget) {
         calculateBoundsForPosition(position, mDockSide, mDockedRect);
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 628cfd5..c575417 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -961,7 +961,6 @@
                 mNotificationGutsExposed = entry.row.getGuts();
                 bindGuts(entry.row);
             }
-            entry.cacheContentViews(mContext, null /* updatedNotification */);
             inflateViews(entry, mStackScroller);
         }
     }
@@ -1585,7 +1584,12 @@
                 entry.notification.getUser().getIdentifier());
 
         final StatusBarNotification sbn = entry.notification;
-        entry.cacheContentViews(mContext, null);
+        try {
+            entry.cacheContentViews(mContext, null);
+        } catch (RuntimeException e) {
+            Log.e(TAG, "Unable to get notification remote views", e);
+            return false;
+        }
 
         final RemoteViews contentView = entry.cachedContentView;
         final RemoteViews bigContentView = entry.cachedBigContentView;
@@ -2354,7 +2358,13 @@
         Notification n = notification.getNotification();
         mNotificationData.updateRanking(ranking);
 
-        boolean applyInPlace = entry.cacheContentViews(mContext, notification.getNotification());
+        boolean applyInPlace;
+        try {
+            applyInPlace = entry.cacheContentViews(mContext, notification.getNotification());
+        } catch (RuntimeException e) {
+            Log.e(TAG, "Unable to get notification remote views", e);
+            applyInPlace = false;
+        }
         boolean shouldPeek = shouldPeek(entry, notification);
         boolean alertAgain = alertAgain(entry, n);
         if (DEBUG) {
@@ -2406,7 +2416,10 @@
                     StatusBarIconView.contentDescForNotification(mContext, n));
             entry.icon.setNotification(n);
             entry.icon.set(ic);
-            inflateViews(entry, mStackScroller);
+            if (!inflateViews(entry, mStackScroller)) {
+                handleNotificationError(notification, "Couldn't update remote views for: "
+                        + notification);
+            }
         }
         updateHeadsUp(key, entry, shouldPeek, alertAgain);
         updateNotifications();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index bd485dd..6d73ccb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.statusbar;
 
+import android.app.ActivityManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -30,6 +31,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.text.TextUtils;
 import android.text.format.Formatter;
 import android.util.Log;
@@ -57,6 +59,7 @@
 
     private final Context mContext;
     private final KeyguardIndicationTextView mTextView;
+    private final UserManager mUserManager;
     private final IBatteryStats mBatteryInfo;
 
     private final int mSlowThreshold;
@@ -85,9 +88,10 @@
         mSlowThreshold = res.getInteger(R.integer.config_chargingSlowlyThreshold);
         mFastThreshold = res.getInteger(R.integer.config_chargingFastThreshold);
 
-
+        mUserManager = context.getSystemService(UserManager.class);
         mBatteryInfo = IBatteryStats.Stub.asInterface(
                 ServiceManager.getService(BatteryStats.SERVICE_NAME));
+
         KeyguardUpdateMonitor.getInstance(context).registerCallback(mUpdateMonitor);
         context.registerReceiverAsUser(mReceiver, UserHandle.SYSTEM,
                 new IntentFilter(Intent.ACTION_TIME_TICK), null, null);
@@ -155,30 +159,29 @@
 
     private void updateIndication() {
         if (mVisible) {
-            mTextView.switchIndication(computeIndication());
-            mTextView.setTextColor(computeColor());
-        }
-    }
+            // Walk down a precedence-ordered list of what should indication
+            // should be shown based on user or device state
+            if (!mUserManager.isUserUnlocked(ActivityManager.getCurrentUser())) {
+                mTextView.switchIndication(com.android.internal.R.string.lockscreen_storage_locked);
+                mTextView.setTextColor(Color.WHITE);
 
-    private int computeColor() {
-        if (!TextUtils.isEmpty(mTransientIndication)) {
-            return mTransientTextColor;
-        }
-        return Color.WHITE;
-    }
+            } else if (!TextUtils.isEmpty(mTransientIndication)) {
+                mTextView.switchIndication(mTransientIndication);
+                mTextView.setTextColor(mTransientTextColor);
 
-    private String computeIndication() {
-        if (!TextUtils.isEmpty(mTransientIndication)) {
-            return mTransientIndication;
-        }
-        if (mPowerPluggedIn) {
-            String indication = computePowerIndication();
-            if (DEBUG_CHARGING_SPEED) {
-                indication += ",  " + (mChargingWattage / 1000) + " mW";
+            } else if (mPowerPluggedIn) {
+                String indication = computePowerIndication();
+                if (DEBUG_CHARGING_SPEED) {
+                    indication += ",  " + (mChargingWattage / 1000) + " mW";
+                }
+                mTextView.switchIndication(indication);
+                mTextView.setTextColor(Color.WHITE);
+
+            } else {
+                mTextView.switchIndication(mRestingIndication);
+                mTextView.setTextColor(Color.WHITE);
             }
-            return indication;
         }
-        return mRestingIndication;
     }
 
     private String computePowerIndication() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
index 63f726b..95cb672 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
@@ -176,8 +176,18 @@
         mCurrentView = currentView.findViewById(mId);
     }
 
+    public void setCarMode(boolean carMode) {
+        final int N = mViews.size();
+        for (int i = 0; i < N; i++) {
+            final View view = mViews.get(i);
+            if (view instanceof ButtonInterface) {
+                ((ButtonInterface) view).setCarMode(carMode);
+            }
+        }
+    }
+
     /**
-     * Interface for ImageView button actions.
+     * Interface for button actions.
      */
     public interface ButtonInterface {
         void setImageResource(@DrawableRes int resId);
@@ -187,5 +197,7 @@
         void abortCurrentGesture();
 
         void setLandscape(boolean landscape);
+
+        void setCarMode(boolean carMode);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
index 1c9d937..2c3e805 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
@@ -20,6 +20,7 @@
 import android.os.Handler;
 import android.os.PowerManager;
 import android.os.SystemClock;
+import android.os.Trace;
 import android.util.Log;
 
 import com.android.keyguard.KeyguardConstants;
@@ -140,11 +141,14 @@
 
     @Override
     public void onFingerprintAcquired() {
+        Trace.beginSection("FingerprintUnlockController#onFingerprintAcquired");
         releaseFingerprintWakeLock();
         if (!mUpdateMonitor.isDeviceInteractive()) {
             mWakeLock = mPowerManager.newWakeLock(
                     PowerManager.PARTIAL_WAKE_LOCK, FINGERPRINT_WAKE_LOCK_NAME);
+            Trace.beginSection("acquiring wake-and-unlock");
             mWakeLock.acquire();
+            Trace.endSection();
             if (DEBUG_FP_WAKELOCK) {
                 Log.i(TAG, "fingerprint acquired, grabbing fp wakelock");
             }
@@ -159,12 +163,15 @@
                 mStatusBarWindowManager.setForceDozeBrightness(true);
             }
         }
+        Trace.endSection();
     }
 
     @Override
     public void onFingerprintAuthenticated(int userId) {
+        Trace.beginSection("FingerprintUnlockController#onFingerprintAuthenticated");
         if (mUpdateMonitor.isGoingToSleep()) {
             mPendingAuthenticatedUserId = userId;
+            Trace.endSection();
             return;
         }
         boolean wasDeviceInteractive = mUpdateMonitor.isDeviceInteractive();
@@ -175,25 +182,34 @@
             }
             mPowerManager.wakeUp(SystemClock.uptimeMillis(), "android.policy:FINGERPRINT");
         }
+        Trace.beginSection("release wake-and-unlock");
         releaseFingerprintWakeLock();
+        Trace.endSection();
         switch (mMode) {
             case MODE_DISMISS_BOUNCER:
+                Trace.beginSection("MODE_DISMISS");
                 mStatusBarKeyguardViewManager.notifyKeyguardAuthenticated(
                         false /* strongAuth */);
+                Trace.endSection();
                 break;
             case MODE_UNLOCK:
             case MODE_SHOW_BOUNCER:
+                Trace.beginSection("MODE_UNLOCK or MODE_SHOW_BOUNCER");
                 if (!wasDeviceInteractive) {
                     mStatusBarKeyguardViewManager.notifyDeviceWakeUpRequested();
                 }
                 mStatusBarKeyguardViewManager.animateCollapsePanels(
                         FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR);
+                Trace.endSection();
                 break;
             case MODE_WAKE_AND_UNLOCK_PULSING:
+                Trace.beginSection("MODE_WAKE_AND_UNLOCK_PULSING");
                 mPhoneStatusBar.updateMediaMetaData(false /* metaDataChanged */, 
                         true /* allowEnterAnimation */);
                 // Fall through.
+                Trace.endSection();
             case MODE_WAKE_AND_UNLOCK:
+                Trace.beginSection("MODE_WAKE_AND_UNLOCK");
                 mStatusBarWindowManager.setStatusBarFocusable(false);
                 mDozeScrimController.abortPulsing();
                 mKeyguardViewMediator.onWakeAndUnlocking();
@@ -201,6 +217,7 @@
                 if (mPhoneStatusBar.getNavigationBarView() != null) {
                     mPhoneStatusBar.getNavigationBarView().setWakeAndUnlocking(true);
                 }
+                Trace.endSection();
                 break;
             case MODE_ONLY_WAKE:
             case MODE_NONE:
@@ -210,6 +227,7 @@
             mStatusBarWindowManager.setForceDozeBrightness(false);
         }
         mPhoneStatusBar.notifyFpAuthModeChanged();
+        Trace.endSection();
     }
 
     @Override
@@ -219,6 +237,7 @@
 
     @Override
     public void onFinishedGoingToSleep(int why) {
+        Trace.beginSection("FingerprintUnlockController#onFinishedGoingToSleep");
         if (mPendingAuthenticatedUserId != -1) {
 
             // Post this to make sure it's executed after the device is fully locked.
@@ -230,6 +249,7 @@
             });
         }
         mPendingAuthenticatedUserId = -1;
+        Trace.endSection();
     }
 
     public int getMode() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 23aeae8..0f4d9ed 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -624,6 +624,7 @@
                 mCarMode = true;
                 uiCarModeChanged = true;
             }
+            getHomeButton().setCarMode(mCarMode);
         }
         return uiCarModeChanged;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 64f205d2..768e5f2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -81,8 +81,8 @@
 
     private static final float LOCK_ICON_ACTIVE_SCALE = 1.2f;
 
-    private static final String COUNTER_PANEL_OPEN = "panel_open";
-    private static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs";
+    static final String COUNTER_PANEL_OPEN = "panel_open";
+    static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs";
     private static final String COUNTER_PANEL_OPEN_PEEK = "panel_open_peek";
 
     private static final Rect mDummyDirtyRect = new Rect(0, 0, 1, 1);
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 516de46..4f34ec2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -84,6 +84,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
+import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.os.Vibrator;
@@ -1182,6 +1183,7 @@
     }
 
     protected void startKeyguard() {
+        Trace.beginSection("PhoneStatusBar#startKeyguard");
         KeyguardViewMediator keyguardViewMediator = getComponent(KeyguardViewMediator.class);
         mFingerprintUnlockController = new FingerprintUnlockController(mContext,
                 mStatusBarWindowManager, mDozeScrimController, keyguardViewMediator,
@@ -1216,6 +1218,7 @@
 
         mKeyguardViewMediatorCallback = keyguardViewMediator.getViewMediatorCallback();
         mLightStatusBarController.setFingerprintUnlockController(mFingerprintUnlockController);
+        Trace.endSection();
     }
 
     @Override
@@ -2088,12 +2091,20 @@
      * Refresh or remove lockscreen artwork from media metadata or the lockscreen wallpaper.
      */
     public void updateMediaMetaData(boolean metaDataChanged, boolean allowEnterAnimation) {
-        if (!SHOW_LOCKSCREEN_MEDIA_ARTWORK) return;
+        Trace.beginSection("PhoneStatusBar#updateMediaMetaData");
+        if (!SHOW_LOCKSCREEN_MEDIA_ARTWORK) {
+            Trace.endSection();
+            return;
+        }
 
-        if (mBackdrop == null) return; // called too early
+        if (mBackdrop == null) {
+            Trace.endSection();
+            return; // called too early
+        }
 
         if (mLaunchTransitionFadingAway) {
             mBackdrop.setVisibility(View.INVISIBLE);
+            Trace.endSection();
             return;
         }
 
@@ -2246,6 +2257,7 @@
                 }
             }
         }
+        Trace.endSection();
     }
 
     protected int adjustDisableFlags(int state) {
@@ -2608,7 +2620,8 @@
     @Override
     public void handleSystemNavigationKey(int key) {
         if (SPEW) Log.d(TAG, "handleSystemNavigationKey: " + key);
-        if (!panelsEnabled() || !mKeyguardMonitor.isDeviceInteractive()) {
+        if (!panelsEnabled() || !mKeyguardMonitor.isDeviceInteractive()
+                || mKeyguardMonitor.isShowing()) {
             return;
         }
 
@@ -2616,12 +2629,16 @@
         if (!mUserSetup) return;
 
         if (KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP == key) {
+            MetricsLogger.action(mContext, MetricsEvent.ACTION_SYSTEM_NAVIGATION_KEY_UP);
             mNotificationPanel.collapse(false /* delayed */, 1.0f /* speedUpFactor */);
         } else if (KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN == key) {
+            MetricsLogger.action(mContext, MetricsEvent.ACTION_SYSTEM_NAVIGATION_KEY_DOWN);
             if (mNotificationPanel.isFullyCollapsed()) {
                 mNotificationPanel.expand(true /* animate */);
+                MetricsLogger.count(mContext, NotificationPanelView.COUNTER_PANEL_OPEN, 1);
             } else if (!mNotificationPanel.isInSettings() && !mNotificationPanel.isExpanding()){
                 mNotificationPanel.flingSettings(0 /* velocity */, true /* expand */);
+                MetricsLogger.count(mContext, NotificationPanelView.COUNTER_PANEL_OPEN_QS, 1);
             }
         }
 
@@ -3522,7 +3539,6 @@
 
         repositionNavigationBar();
         updateRowStates();
-        mIconController.defineSlots();
         mScreenPinningRequest.onConfigurationChanged();
         mNetworkController.onConfigurationChanged();
     }
@@ -4086,6 +4102,7 @@
      * @return true if we would like to stay in the shade, false if it should go away entirely
      */
     public boolean hideKeyguard() {
+        Trace.beginSection("PhoneStatusBar#hideKeyguard");
         boolean staying = mLeaveOpenOnKeyguardHide;
         setBarState(StatusBarState.SHADE);
         View viewToClick = null;
@@ -4130,6 +4147,7 @@
         mNotificationPanel.onAffordanceLaunchEnded();
         mNotificationPanel.animate().cancel();
         mNotificationPanel.setAlpha(1f);
+        Trace.endSection();
         return staying;
     }
 
@@ -4204,6 +4222,7 @@
     }
 
     protected void updateKeyguardState(boolean goingToFullShade, boolean fromShadeLocked) {
+        Trace.beginSection("PhoneStatusBar#updateKeyguardState");
         if (mState == StatusBarState.KEYGUARD) {
             mKeyguardIndicationController.setVisible(true);
             mNotificationPanel.resetViews();
@@ -4235,9 +4254,11 @@
         updateMediaMetaData(false, mState != StatusBarState.KEYGUARD);
         mKeyguardMonitor.notifyKeyguardState(mStatusBarKeyguardViewManager.isShowing(),
                 mStatusBarKeyguardViewManager.isSecure());
+        Trace.endSection();
     }
 
     private void updateDozingState() {
+        Trace.beginSection("PhoneStatusBar#updateDozingState");
         boolean animate = !mDozing && mDozeScrimController.isPulsing();
         mNotificationPanel.setDozing(mDozing, animate);
         mStackScroller.setDark(mDozing, animate, mWakeUpTouchLocation);
@@ -4248,6 +4269,7 @@
         mDozeScrimController.setDozing(mDozing &&
                 mFingerprintUnlockController.getMode()
                         != FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING, animate);
+        Trace.endSection();
     }
 
     public void updateStackScrollerState(boolean goingToFullShade, boolean fromShadeLocked) {
@@ -4849,11 +4871,13 @@
     }
 
     private void updateDozing() {
+        Trace.beginSection("PhoneStatusBar#updateDozing");
         // When in wake-and-unlock while pulsing, keep dozing state until fully unlocked.
         mDozing = mDozingRequested && mState == StatusBarState.KEYGUARD
                 || mFingerprintUnlockController.getMode()
                         == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING;
         updateDozingState();
+        Trace.endSection();
     }
 
     private final class ShadeUpdates {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
index 405ccd6..10facea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
@@ -334,6 +334,9 @@
                     || ((CustomTile) tile).getUser() == currentUser)) {
                 if (DEBUG) Log.d(TAG, "Adding " + tile);
                 tile.removeCallbacks();
+                if (!(tile instanceof CustomTile) && mCurrentUser != currentUser) {
+                    tile.userSwitch(currentUser);
+                }
                 newTiles.put(tileSpec, tile);
             } else {
                 if (DEBUG) Log.d(TAG, "Creating tile: " + tileSpec);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index 0c9bfab..3326736 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -112,6 +112,8 @@
 
     public StatusBarIconController(Context context, View statusBar, View keyguardStatusBar,
             PhoneStatusBar phoneStatusBar) {
+        super(context.getResources().getStringArray(
+                com.android.internal.R.array.config_statusBarIcons));
         mContext = context;
         mPhoneStatusBar = phoneStatusBar;
         mSystemIconArea = (LinearLayout) statusBar.findViewById(R.id.system_icon_area);
@@ -137,7 +139,6 @@
         mDarkModeIconColorSingleTone = context.getColor(R.color.dark_mode_icon_color_single_tone);
         mLightModeIconColorSingleTone = context.getColor(R.color.light_mode_icon_color_single_tone);
         mHandler = new Handler();
-        defineSlots();
         loadDimens();
 
         TunerService.get(mContext).addTunable(this, ICON_BLACKLIST);
@@ -197,11 +198,6 @@
                 R.dimen.status_bar_icon_padding);
     }
 
-    public void defineSlots() {
-        defineSlots(mContext.getResources().getStringArray(
-                com.android.internal.R.array.config_statusBarIcons));
-    }
-
     private void addSystemIcon(int index, StatusBarIcon icon) {
         String slot = getSlot(index);
         int viewIndex = getViewIndex(index);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
index 6821879..660672d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
@@ -25,14 +25,11 @@
     private ArrayList<String> mSlots = new ArrayList<>();
     private ArrayList<StatusBarIcon> mIcons = new ArrayList<>();
 
-    public void defineSlots(String[] slots) {
-        mSlots.clear();
+    public StatusBarIconList(String[] slots) {
         final int N = slots.length;
         for (int i=0; i < N; i++) {
             mSlots.add(slots[i]);
-            if (mIcons.size() < mSlots.size()) {
-                mIcons.add(null);
-            }
+            mIcons.add(null);
         }
     }
 
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 3691a42..c72f994 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -185,13 +185,17 @@
     }
 
     public void onStartedWakingUp() {
+        Trace.beginSection("StatusBarKeyguardViewManager#onStartedWakingUp");
         mDeviceInteractive = true;
         mDeviceWillWakeUp = false;
         mPhoneStatusBar.onStartedWakingUp();
+        Trace.endSection();
     }
 
     public void onScreenTurningOn() {
+        Trace.beginSection("StatusBarKeyguardViewManager#onScreenTurningOn");
         mPhoneStatusBar.onScreenTurningOn();
+        Trace.endSection();
     }
 
     public boolean isScreenTurnedOn() {
@@ -199,6 +203,7 @@
     }
 
     public void onScreenTurnedOn() {
+        Trace.beginSection("StatusBarKeyguardViewManager#onScreenTurnedOn");
         mScreenTurnedOn = true;
         if (mDeferScrimFadeOut) {
             mDeferScrimFadeOut = false;
@@ -207,6 +212,7 @@
             updateStates();
         }
         mPhoneStatusBar.onScreenTurnedOn();
+        Trace.endSection();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java
index 5271481..a7a792b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java
@@ -168,7 +168,11 @@
     }
 
     private void applyFitsSystemWindows(State state) {
-        mStatusBarView.setFitsSystemWindows(!state.isKeyguardShowingAndNotOccluded());
+        boolean fitsSystemWindows = !state.isKeyguardShowingAndNotOccluded();
+        if (mStatusBarView.getFitsSystemWindows() != fitsSystemWindows) {
+            mStatusBarView.setFitsSystemWindows(fitsSystemWindows);
+            mStatusBarView.requestApplyInsets();
+        }
     }
 
     private void applyUserActivityTimeout(State state) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java
index a91cd51..7e92edf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockMethodCache.java
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar.phone;
 
 import android.content.Context;
+import android.os.Trace;
 
 import com.android.internal.widget.LockPatternUtils;
 import com.android.keyguard.KeyguardUpdateMonitor;
@@ -85,6 +86,7 @@
     }
 
     private void update(boolean updateAlways) {
+        Trace.beginSection("UnlockMethodCache#update");
         int user = KeyguardUpdateMonitor.getCurrentUser();
         boolean secure = mLockPatternUtils.isSecure(user);
         boolean canSkipBouncer = !secure ||  mKeyguardUpdateMonitor.getUserCanSkipBouncer(user);
@@ -102,6 +104,7 @@
             mFaceUnlockRunning = faceUnlockRunning;
             notifyListeners();
         }
+        Trace.endSection();
     }
 
     private void notifyListeners() {
@@ -133,10 +136,13 @@
 
         @Override
         public void onFingerprintAuthenticated(int userId) {
+            Trace.beginSection("KeyguardUpdateMonitorCallback#onFingerprintAuthenticated");
             if (!mKeyguardUpdateMonitor.isUnlockingWithFingerprintAllowed()) {
+                Trace.endSection();
                 return;
             }
             update(false /* updateAlways */);
+            Trace.endSection();
         }
 
         @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
index 3df7590..61bac2d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
@@ -270,6 +270,11 @@
     public void setLandscape(boolean landscape) {
         //no op
     }
+
+    @Override
+    public void setCarMode(boolean carMode) {
+        // no op
+    }
 }
 
 
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 8178bda..83463e2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -197,11 +197,22 @@
 
         if (mConfig.show4gForLte) {
             mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE, TelephonyIcons.FOUR_G);
-            mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA,
-                TelephonyIcons.FOUR_G_PLUS);
+            if (mConfig.hideLtePlus) {
+                mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA,
+                        TelephonyIcons.FOUR_G);
+            } else {
+                mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA,
+                        TelephonyIcons.FOUR_G_PLUS);
+            }
         } else {
             mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE, TelephonyIcons.LTE);
-            mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, TelephonyIcons.LTE_PLUS);
+            if (mConfig.hideLtePlus) {
+                mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA,
+                        TelephonyIcons.LTE);
+            } else {
+                mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA,
+                        TelephonyIcons.LTE_PLUS);
+            }
         }
         mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_IWLAN, TelephonyIcons.WFC);
     }
@@ -460,6 +471,10 @@
             }
             mServiceState = state;
             mDataNetType = state.getDataNetworkType();
+            if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null &&
+                    mServiceState.isUsingCarrierAggregation()) {
+                mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA;
+            }
             updateTelephony();
         }
 
@@ -471,6 +486,10 @@
             }
             mDataState = state;
             mDataNetType = networkType;
+            if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null &&
+                    mServiceState.isUsingCarrierAggregation()) {
+                mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA;
+            }
             updateTelephony();
         }
 
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 a31bc04..7893a1a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -852,6 +852,7 @@
         boolean showAtLeast3G = false;
         boolean alwaysShowCdmaRssi = false;
         boolean show4gForLte = false;
+        boolean hideLtePlus = false;
         boolean hspaDataDistinguishable;
 
         static Config readConfig(Context context) {
@@ -864,6 +865,7 @@
             config.show4gForLte = res.getBoolean(R.bool.config_show4GForLTE);
             config.hspaDataDistinguishable =
                     res.getBoolean(R.bool.config_hspa_data_distinguishable);
+            config.hideLtePlus = res.getBoolean(R.bool.config_hideLtePlus);
             return config;
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
index af6fec2..2094c08 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
@@ -973,6 +973,7 @@
                 mDialog.dismiss();
                 mZenFooter.cleanup();
                 initDialog();
+                mDensity = density;
             }
             updateWindowWidthH();
             mSpTexts.update();
diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto
index 0106f7f0..d9f2bac 100644
--- a/proto/src/metrics_constants.proto
+++ b/proto/src/metrics_constants.proto
@@ -2197,6 +2197,12 @@
     // Night Light on
     SETTINGS_CONDITION_NIGHT_DISPLAY = 492;
 
+    // System navigation key up.
+    ACTION_SYSTEM_NAVIGATION_KEY_UP = 493;
+
+    // System navigation key down.
+    ACTION_SYSTEM_NAVIGATION_KEY_DOWN = 494;
+
     // ---- End N-MR1 Constants, all N-MR1 constants go above this line ----
     // Add new aosp constants above this line.
     // END OF AOSP CONSTANTS
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 051cb2d..b7461ee 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -479,7 +479,7 @@
         }
     }
 
-    private final IpConnectivityLog mMetricsLog = new IpConnectivityLog();
+    private final IpConnectivityLog mMetricsLog;
 
     /**
      * Implements support for the legacy "one network per network type" model.
@@ -677,8 +677,16 @@
 
     public ConnectivityService(Context context, INetworkManagementService netManager,
             INetworkStatsService statsService, INetworkPolicyManager policyManager) {
+        this(context, netManager, statsService, policyManager, new IpConnectivityLog());
+    }
+
+    @VisibleForTesting
+    protected ConnectivityService(Context context, INetworkManagementService netManager,
+            INetworkStatsService statsService, INetworkPolicyManager policyManager,
+            IpConnectivityLog logger) {
         if (DBG) log("ConnectivityService starting up");
 
+        mMetricsLog = logger;
         mDefaultRequest = createInternetRequestForTransport(-1);
         NetworkRequestInfo defaultNRI = new NetworkRequestInfo(null, mDefaultRequest, new Binder());
         mNetworkRequests.put(mDefaultRequest, defaultNRI);
@@ -1577,6 +1585,16 @@
                 "ConnectivityService");
     }
 
+    private void enforceConnectivityRestrictedNetworksPermission() {
+        try {
+            mContext.enforceCallingOrSelfPermission(
+                    android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS,
+                    "ConnectivityService");
+            return;
+        } catch (SecurityException e) { /* fallback to ConnectivityInternalPermission */ }
+        enforceConnectivityInternalPermission();
+    }
+
     private void enforceKeepalivePermission() {
         mContext.enforceCallingOrSelfPermission(KeepaliveTracker.PERMISSION, "ConnectivityService");
     }
@@ -4109,7 +4127,7 @@
 
     private void enforceNetworkRequestPermissions(NetworkCapabilities networkCapabilities) {
         if (networkCapabilities.hasCapability(NET_CAPABILITY_NOT_RESTRICTED) == false) {
-            enforceConnectivityInternalPermission();
+            enforceConnectivityRestrictedNetworksPermission();
         } else {
             enforceChangePermission();
         }
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index 33c2ea2..2de09a3 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -304,7 +304,9 @@
             final boolean isSecure = mStorage.hasPassword(user.id) || mStorage.hasPattern(user.id);
             if (isSecure && !mUserManager.isUserUnlockingOrUnlocked(userHandle)) {
                 if (!user.isManagedProfile()) {
-                    showEncryptionNotification(userHandle);
+                    // When the user is locked, we communicate it loud-and-clear
+                    // on the lockscreen; we only show a notification below for
+                    // locked managed profiles.
                 } else {
                     UserInfo parent = mUserManager.getProfileParent(user.id);
                     if (parent != null &&
@@ -340,21 +342,6 @@
         showEncryptionNotification(user, title, message, detail, intent);
     }
 
-    private void showEncryptionNotification(UserHandle user) {
-        Resources r = mContext.getResources();
-        CharSequence title = r.getText(
-                com.android.internal.R.string.user_encrypted_title);
-        CharSequence message = r.getText(
-                com.android.internal.R.string.user_encrypted_message);
-        CharSequence detail = r.getText(
-                com.android.internal.R.string.user_encrypted_detail);
-
-        PendingIntent intent = PendingIntent.getActivity(mContext, 0, ACTION_NULL,
-                PendingIntent.FLAG_UPDATE_CURRENT);
-
-        showEncryptionNotification(user, title, message, detail, intent);
-    }
-
     private void showEncryptionNotification(UserHandle user, CharSequence title, CharSequence message,
             CharSequence detail, PendingIntent intent) {
         if (DEBUG) Slog.v(TAG, "showing encryption notification, user: " + user.getIdentifier());
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index ee2fa51..a3d2ebb 100755
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -699,7 +699,7 @@
                         throw new IllegalArgumentException("null notification");
                     }
                     if (r.foregroundId != id) {
-                        r.cancelNotification();
+                        cancelForegroudNotificationLocked(r);
                         r.foregroundId = id;
                     }
                     notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
@@ -721,7 +721,7 @@
                         }
                     }
                     if ((flags & Service.STOP_FOREGROUND_REMOVE) != 0) {
-                        r.cancelNotification();
+                        cancelForegroudNotificationLocked(r);
                         r.foregroundId = 0;
                         r.foregroundNoti = null;
                     } else if (r.appInfo.targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
@@ -738,6 +738,27 @@
         }
     }
 
+    private void cancelForegroudNotificationLocked(ServiceRecord r) {
+        if (r.foregroundId != 0) {
+            // First check to see if this app has any other active foreground services
+            // with the same notification ID.  If so, we shouldn't actually cancel it,
+            // because that would wipe away the notification that still needs to be shown
+            // due the other service.
+            ServiceMap sm = getServiceMap(r.userId);
+            if (sm != null) {
+                for (int i = sm.mServicesByName.size()-1; i >= 0; i--) {
+                    ServiceRecord other = sm.mServicesByName.valueAt(i);
+                    if (other.foregroundId == r.foregroundId
+                            && other.packageName.equals(r.packageName)) {
+                        // Found one!  Abort the cancel.
+                        return;
+                    }
+                }
+            }
+            r.cancelNotification();
+        }
+    }
+
     private void updateServiceForegroundLocked(ProcessRecord proc, boolean oomAdj) {
         boolean anyForeground = false;
         for (int i=proc.services.size()-1; i>=0; i--) {
@@ -1560,7 +1581,7 @@
             r.makeRestarting(mAm.mProcessStats.getMemFactorLocked(), now);
         }
 
-        r.cancelNotification();
+        cancelForegroudNotificationLocked(r);
 
         mAm.mHandler.removeCallbacks(r.restarter);
         mAm.mHandler.postAtTime(r.restarter, r.nextRestartTime);
@@ -2022,7 +2043,7 @@
             }
         }
 
-        r.cancelNotification();
+        cancelForegroudNotificationLocked(r);
         r.isForeground = false;
         r.foregroundId = 0;
         r.foregroundNoti = null;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 236f083..87036cf 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -1087,9 +1087,9 @@
         }
 
         @Override
-        public void onChange(boolean selfChange, Uri uri) {
+        public void onChange(boolean selfChange, Uri uri, @UserIdInt int userId) {
             if (mFontScaleUri.equals(uri)) {
-                updateFontScaleIfNeeded();
+                updateFontScaleIfNeeded(userId);
             }
         }
     }
@@ -3780,9 +3780,6 @@
             checkTime(startTime, "startProcess: returned from zygote!");
             Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
 
-            if (app.isolated) {
-                mBatteryStatsService.addIsolatedUid(app.uid, app.info.uid);
-            }
             mBatteryStatsService.noteProcessStart(app.processName, app.info.uid);
             checkTime(startTime, "startProcess: done updating battery stats");
 
@@ -8611,7 +8608,8 @@
             if (uri == null) {
                 owner.removeUriPermissionsLocked(mode);
             } else {
-                owner.removeUriPermissionLocked(new GrantUri(userId, uri, false), mode);
+                final boolean prefix = (mode & Intent.FLAG_GRANT_PREFIX_URI_PERMISSION) != 0;
+                owner.removeUriPermissionLocked(new GrantUri(userId, uri, prefix), mode);
             }
         }
     }
@@ -11456,6 +11454,14 @@
                 // the uid of the isolated process is specified by the caller.
                 uid = isolatedUid;
             }
+
+            // Register the isolated UID with this application so BatteryStats knows to
+            // attribute resource usage to the application.
+            //
+            // NOTE: This is done here before addProcessNameLocked, which will tell BatteryStats
+            // about the process state of the isolated UID *before* it is registered with the
+            // owning application.
+            mBatteryStatsService.addIsolatedUid(uid, info.uid);
         }
         final ProcessRecord r = new ProcessRecord(stats, info, proc, uid);
         if (!mBooted && !mBooting
@@ -12584,7 +12590,7 @@
             synchronized (mPidsSelfLocked) {
                 int pid = Binder.getCallingPid();
                 proc = mPidsSelfLocked.get(pid);
-                if (mUseFifoUiScheduling && proc != null && proc.renderThreadTid == 0 && tid > 0) {
+                if (proc != null && proc.renderThreadTid == 0 && tid > 0) {
                     // ensure the tid belongs to the process
                     if (!Process.isThreadInProcess(pid, tid)) {
                         throw new IllegalArgumentException(
@@ -12597,8 +12603,12 @@
                     // promote to FIFO now
                     if (proc.curSchedGroup == ProcessList.SCHED_GROUP_TOP_APP) {
                         if (DEBUG_OOM_ADJ) Slog.d("UI_FIFO", "Promoting " + tid + "out of band");
-                        Process.setThreadScheduler(proc.renderThreadTid,
-                            Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
+                        if (mUseFifoUiScheduling) {
+                            Process.setThreadScheduler(proc.renderThreadTid,
+                                Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
+                        } else {
+                            Process.setThreadPriority(proc.renderThreadTid, -10);
+                        }
                     }
                 } else {
                     if (DEBUG_OOM_ADJ) {
@@ -12699,6 +12709,7 @@
                         return;
                     }
                     if (pr.hasTopUi != hasTopUi) {
+                        Slog.i(TAG, "Setting hasTopUi=" + hasTopUi + " for pid=" + pid);
                         pr.hasTopUi = hasTopUi;
                         changed = true;
                     }
@@ -17717,6 +17728,70 @@
         return INTENT_REMOTE_BUGREPORT_FINISHED.equals(intent.getAction());
     }
 
+    private void checkBroadcastFromSystem(Intent intent, ProcessRecord callerApp,
+            String callerPackage, int callingUid, boolean isProtectedBroadcast, List receivers) {
+        final String action = intent.getAction();
+        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)
+                || AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)
+                || LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION.equals(action)
+                || TelephonyIntents.ACTION_REQUEST_OMADM_CONFIGURATION_UPDATE.equals(action)
+                || SuggestionSpan.ACTION_SUGGESTION_PICKED.equals(action)) {
+            // Broadcast is either protected, or it's a public action that
+            // we've relaxed, so it's fine for system internals to send.
+            return;
+        }
+
+        // This broadcast may be a problem...  but there are often system components that
+        // want to send an internal broadcast to themselves, which is annoying to have to
+        // explicitly list each action as a protected broadcast, so we will check for that
+        // one safe case and allow it: an explicit broadcast, only being received by something
+        // that has protected itself.
+        if (receivers != null && receivers.size() > 0
+                && (intent.getPackage() != null || intent.getComponent() != null)) {
+            boolean allProtected = true;
+            for (int i = receivers.size()-1; i >= 0; i--) {
+                Object target = receivers.get(i);
+                if (target instanceof ResolveInfo) {
+                    ResolveInfo ri = (ResolveInfo)target;
+                    if (ri.activityInfo.exported && ri.activityInfo.permission == null) {
+                        allProtected = false;
+                        break;
+                    }
+                } else {
+                    BroadcastFilter bf = (BroadcastFilter)target;
+                    if (bf.requiredPermission == null) {
+                        allProtected = false;
+                        break;
+                    }
+                }
+            }
+            if (allProtected) {
+                // All safe!
+                return;
+            }
+        }
+
+        // The vast majority of broadcasts sent from system internals
+        // should be protected to avoid security holes, so yell loudly
+        // to ensure we examine these cases.
+        if (callerApp != null) {
+            Log.wtf(TAG, "Sending non-protected broadcast " + action
+                            + " from system " + callerApp.toShortString() + " pkg " + callerPackage,
+                    new Throwable());
+        } else {
+            Log.wtf(TAG, "Sending non-protected broadcast " + action
+                            + " from system uid " + UserHandle.formatUid(callingUid)
+                            + " pkg " + callerPackage,
+                    new Throwable());
+        }
+    }
+
     final int broadcastIntentLocked(ProcessRecord callerApp,
             String callerPackage, Intent intent, String resolvedType,
             IIntentReceiver resultTo, int resultCode, String resultData,
@@ -17803,37 +17878,9 @@
                 break;
         }
 
-        if (isCallerSystem) {
-            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)
-                    || AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)
-                    || LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION.equals(action)
-                    || TelephonyIntents.ACTION_REQUEST_OMADM_CONFIGURATION_UPDATE.equals(action)
-                    || SuggestionSpan.ACTION_SUGGESTION_PICKED.equals(action)) {
-                // Broadcast is either protected, or it's a public action that
-                // we've relaxed, so it's fine for system internals to send.
-            } else {
-                // The vast majority of broadcasts sent from system internals
-                // should be protected to avoid security holes, so yell loudly
-                // to ensure we examine these cases.
-                if (callerApp != null) {
-                    Log.wtf(TAG, "Sending non-protected broadcast " + action
-                            + " from system " + callerApp.toShortString() + " pkg " + callerPackage,
-                            new Throwable());
-                } else {
-                    Log.wtf(TAG, "Sending non-protected broadcast " + action
-                            + " from system uid " + UserHandle.formatUid(callingUid)
-                            + " pkg " + callerPackage,
-                            new Throwable());
-                }
-            }
-
-        } else {
+        // First line security check before anything else: stop non-system apps from
+        // sending protected broadcasts.
+        if (!isCallerSystem) {
             if (isProtectedBroadcast) {
                 String msg = "Permission Denial: not allowed to send broadcast "
                         + action + " from pid="
@@ -18216,6 +18263,10 @@
             // If we are not serializing this broadcast, then send the
             // registered receivers separately so they don't wait for the
             // components to be launched.
+            if (isCallerSystem) {
+                checkBroadcastFromSystem(intent, callerApp, callerPackage, callingUid,
+                        isProtectedBroadcast, registeredReceivers);
+            }
             final BroadcastQueue queue = broadcastQueueForIntent(intent);
             BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp,
                     callerPackage, callingPid, callingUid, resolvedType, requiredPermissions,
@@ -18303,6 +18354,11 @@
             ir++;
         }
 
+        if (isCallerSystem) {
+            checkBroadcastFromSystem(intent, callerApp, callerPackage, callingUid,
+                    isProtectedBroadcast, receivers);
+        }
+
         if ((receivers != null && receivers.size() > 0)
                 || resultTo != null) {
             BroadcastQueue queue = broadcastQueueForIntent(intent);
@@ -18721,23 +18777,28 @@
         int userId = UserHandle.getCallingUserId();
 
         synchronized(this) {
-            final long origId = Binder.clearCallingIdentity();
+            updatePersistentConfigurationLocked(values, userId);
+        }
+    }
+
+    private void updatePersistentConfigurationLocked(Configuration values, @UserIdInt int userId) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
             updateConfigurationLocked(values, null, false, true, userId, false /* deferResume */);
+        } finally {
             Binder.restoreCallingIdentity(origId);
         }
     }
 
-    private void updateFontScaleIfNeeded() {
-        final int currentUserId;
-        synchronized(this) {
-            currentUserId = mUserController.getCurrentUserIdLocked();
-        }
+    private void updateFontScaleIfNeeded(@UserIdInt int userId) {
         final float scaleFactor = Settings.System.getFloatForUser(mContext.getContentResolver(),
-                FONT_SCALE, 1.0f, currentUserId);
+                FONT_SCALE, 1.0f, userId);
         if (mConfiguration.fontScale != scaleFactor) {
             final Configuration configuration = mWindowManager.computeNewConfiguration();
             configuration.fontScale = scaleFactor;
-            updatePersistentConfiguration(configuration);
+            synchronized (this) {
+                updatePersistentConfigurationLocked(configuration, userId);
+            }
         }
     }
 
@@ -19188,10 +19249,14 @@
             // facilitate this, here we need to determine whether or not it
             // is currently showing UI.
             app.systemNoUi = true;
-            if (app == TOP_APP || app.hasTopUi) {
+            if (app == TOP_APP) {
                 app.systemNoUi = false;
                 app.curSchedGroup = ProcessList.SCHED_GROUP_TOP_APP;
                 app.adjType = "pers-top-activity";
+            } else if (app.hasTopUi) {
+                app.systemNoUi = false;
+                app.curSchedGroup = ProcessList.SCHED_GROUP_TOP_APP;
+                app.adjType = "pers-top-ui";
             } else if (activitiesSize > 0) {
                 for (int j = 0; j < activitiesSize; j++) {
                     final ActivityRecord r = app.activities.get(j);
@@ -19217,7 +19282,7 @@
         int procState;
         boolean foregroundActivities = false;
         BroadcastQueue queue;
-        if (app == TOP_APP || app.hasTopUi) {
+        if (app == TOP_APP) {
             // The last app on the list is the foreground app.
             adj = ProcessList.FOREGROUND_APP_ADJ;
             schedGroup = ProcessList.SCHED_GROUP_TOP_APP;
@@ -20293,6 +20358,12 @@
                                         Slog.d("UI_FIFO", "Not setting RenderThread TID");
                                     }
                                 }
+                            } else {
+                                // Boost priority for top app UI and render threads
+                                Process.setThreadPriority(app.pid, -10);
+                                if (app.renderThreadTid != 0) {
+                                    Process.setThreadPriority(app.renderThreadTid, -10);
+                                }
                             }
                         }
                     } else if (oldSchedGroup == ProcessList.SCHED_GROUP_TOP_APP &&
@@ -20311,6 +20382,12 @@
                                     Process.SCHED_OTHER, 0);
                                 Process.setThreadPriority(app.renderThreadTid, -4);
                             }
+                        } else {
+                            // Reset priority for top app UI and render threads
+                            Process.setThreadPriority(app.pid, 0);
+                            if (app.renderThreadTid != 0) {
+                                Process.setThreadPriority(app.renderThreadTid, 0);
+                            }
                         }
                     }
                 } catch (Exception e) {
@@ -21521,8 +21598,9 @@
 
     @Override
     public boolean isUserRunning(int userId, int flags) {
-        if (userId != UserHandle.getCallingUserId() && checkCallingPermission(
-                INTERACT_ACROSS_USERS) != PackageManager.PERMISSION_GRANTED) {
+        if (!mUserController.isSameProfileGroup(userId, UserHandle.getCallingUserId())
+                && checkCallingPermission(INTERACT_ACROSS_USERS)
+                    != PackageManager.PERMISSION_GRANTED) {
             String msg = "Permission Denial: isUserRunning() from pid="
                     + Binder.getCallingPid()
                     + ", uid=" + Binder.getCallingUid()
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 752dbd9..5624260 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -3559,14 +3559,24 @@
         final ActivityState prevState = r.state;
         if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to FINISHING: " + r);
         r.state = ActivityState.FINISHING;
+        final boolean finishingActivityInNonFocusedStack
+                = r.task.stack != mStackSupervisor.getFocusedStack()
+                && prevState == ActivityState.PAUSED && mode == FINISH_AFTER_VISIBLE;
 
         if (mode == FINISH_IMMEDIATELY
                 || (prevState == ActivityState.PAUSED
                     && (mode == FINISH_AFTER_PAUSE || mStackId == PINNED_STACK_ID))
+                || finishingActivityInNonFocusedStack
                 || prevState == ActivityState.STOPPED
                 || prevState == ActivityState.INITIALIZING) {
             r.makeFinishingLocked();
             boolean activityRemoved = destroyActivityLocked(r, true, "finish-imm");
+
+            if (finishingActivityInNonFocusedStack) {
+                // Finishing activity that was in paused state and it was in not currently focused
+                // stack, need to make something visible in its place.
+                mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
+            }
             if (activityRemoved) {
                 mStackSupervisor.resumeFocusedStackTopActivityLocked();
             }
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index c16fc62..e31df57 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1051,7 +1051,7 @@
             return r;
         }
 
-        // Return to the home stack.
+        // Look in other non-focused and non-home stacks.
         final ArrayList<ActivityStack> stacks = mHomeStack.mStacks;
         for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
             final ActivityStack stack = stacks.get(stackNdx);
diff --git a/services/core/java/com/android/server/am/AppErrorDialog.java b/services/core/java/com/android/server/am/AppErrorDialog.java
index e37feb2..646f6ce 100644
--- a/services/core/java/com/android/server/am/AppErrorDialog.java
+++ b/services/core/java/com/android/server/am/AppErrorDialog.java
@@ -16,29 +16,22 @@
 
 package com.android.server.am;
 
-import android.app.ActivityManagerInternal;
-import android.app.ActivityOptions;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.pm.IPackageDataObserver;
-import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.provider.Settings;
 import android.text.BidiFormatter;
-import android.util.Slog;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.WindowManager;
 import android.widget.FrameLayout;
 import android.widget.TextView;
 
-import java.util.List;
-
 import static com.android.server.am.ActivityManagerService.IS_USER_BUILD;
 
 final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListener {
@@ -47,7 +40,7 @@
     private final AppErrorResult mResult;
     private final ProcessRecord mProc;
     private final boolean mRepeating;
-    private final boolean mForeground;
+    private final boolean mIsRestartable;
 
     private CharSequence mName;
 
@@ -74,7 +67,7 @@
         mProc = data.proc;
         mResult = data.result;
         mRepeating = data.repeating;
-        mForeground = data.task != null;
+        mIsRestartable = data.task != null || data.isRestartableForService;
         BidiFormatter bidi = BidiFormatter.getInstance();
 
         if ((mProc.pkgList.size() == 1) &&
@@ -118,7 +111,7 @@
         LayoutInflater.from(context).inflate(
                 com.android.internal.R.layout.app_error_dialog, frame, true);
 
-        boolean hasRestart = !mRepeating && mForeground;
+        boolean hasRestart = !mRepeating && mIsRestartable;
         final boolean hasReceiver = mProc.errorReportReceiver != null;
 
         final TextView restart = (TextView) findViewById(com.android.internal.R.id.aerr_restart);
@@ -214,5 +207,6 @@
         TaskRecord task;
         boolean repeating;
         ProcessRecord proc;
+        boolean isRestartableForService;
     }
 }
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index 5807502..1f156df 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -627,12 +627,20 @@
             }
         }
 
+        boolean procIsBoundForeground =
+                (app.curProcState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE);
         // Bump up the crash count of any services currently running in the proc.
         for (int i=app.services.size()-1; i>=0; i--) {
             // Any services running in the application need to be placed
             // back in the pending list.
             ServiceRecord sr = app.services.valueAt(i);
             sr.crashCount++;
+
+            // Allow restarting for started or bound foreground services that are crashing the
+            // first time. This includes wallpapers.
+            if (sr.crashCount <= 1 && (sr.isForeground || procIsBoundForeground)) {
+                data.isRestartableForService = true;
+            }
         }
 
         // If the crashing process is what we consider to be the "home process" and it has been
diff --git a/services/core/java/com/android/server/am/PreBootBroadcaster.java b/services/core/java/com/android/server/am/PreBootBroadcaster.java
index a7d09d0..f4f6b66 100644
--- a/services/core/java/com/android/server/am/PreBootBroadcaster.java
+++ b/services/core/java/com/android/server/am/PreBootBroadcaster.java
@@ -21,6 +21,7 @@
 import android.app.AppOpsManager;
 import android.app.Notification;
 import android.app.NotificationManager;
+import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.IIntentReceiver;
@@ -50,6 +51,7 @@
     private final ActivityManagerService mService;
     private final int mUserId;
     private final ProgressReporter mProgress;
+    private final boolean mQuiet;
 
     private final Intent mIntent;
     private final List<ResolveInfo> mTargets;
@@ -61,16 +63,13 @@
         mService = service;
         mUserId = userId;
         mProgress = progress;
+        mQuiet = quiet;
 
         mIntent = new Intent(Intent.ACTION_PRE_BOOT_COMPLETED);
         mIntent.addFlags(Intent.FLAG_RECEIVER_BOOT_UPGRADE | Intent.FLAG_DEBUG_TRIAGED_MISSING);
 
         mTargets = mService.mContext.getPackageManager().queryBroadcastReceiversAsUser(mIntent,
                 MATCH_SYSTEM_ONLY, UserHandle.of(userId));
-
-        if (!quiet) {
-            mHandler.obtainMessage(MSG_SHOW).sendToTarget();
-        }
     }
 
     public void sendNext() {
@@ -87,6 +86,10 @@
             return;
         }
 
+        if (!mQuiet) {
+            mHandler.obtainMessage(MSG_SHOW, mTargets.size(), mIndex).sendToTarget();
+        }
+
         final ResolveInfo ri = mTargets.get(mIndex++);
         final ComponentName componentName = ri.activityInfo.getComponentName();
 
@@ -121,13 +124,26 @@
             final Context context = mService.mContext;
             final NotificationManager notifManager = context
                     .getSystemService(NotificationManager.class);
+            final int max = msg.arg1;
+            final int index = msg.arg2;
 
             switch (msg.what) {
                 case MSG_SHOW:
                     final CharSequence title = context
                             .getText(R.string.android_upgrading_notification_title);
-                    final CharSequence message = context
-                            .getText(R.string.android_upgrading_notification_body);
+
+                    final Intent intent = new Intent();
+                    intent.setClassName("com.android.settings",
+                            "com.android.settings.HelpTrampoline");
+                    intent.putExtra(Intent.EXTRA_TEXT, "help_url_upgrading");
+
+                    final PendingIntent contentIntent;
+                    if (context.getPackageManager().resolveActivity(intent, 0) != null) {
+                        contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
+                    } else {
+                        contentIntent = null;
+                    }
+
                     final Notification notif = new Notification.Builder(mService.mContext)
                             .setSmallIcon(R.drawable.stat_sys_adb)
                             .setWhen(0)
@@ -138,8 +154,9 @@
                             .setColor(context.getColor(
                                     com.android.internal.R.color.system_notification_accent_color))
                             .setContentTitle(title)
-                            .setContentText(message)
+                            .setContentIntent(contentIntent)
                             .setVisibility(Notification.VISIBILITY_PUBLIC)
+                            .setProgress(max, index, false)
                             .build();
                     notifManager.notifyAsUser(TAG, 0, notif, UserHandle.of(mUserId));
                     break;
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index e74b3a3..3fffefb 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -436,6 +436,9 @@
                 pw.print(prefix); pw.print("  - "); pw.println(receivers.valueAt(i));
             }
         }
+        if (hasTopUi) {
+            pw.print(prefix); pw.print("hasTopUi="); pw.print(hasTopUi);
+        }
     }
 
     ProcessRecord(BatteryStatsImpl _batteryStats, ApplicationInfo _info,
diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java
index 2bfc402..71c7fd3 100644
--- a/services/core/java/com/android/server/am/ServiceRecord.java
+++ b/services/core/java/com/android/server/am/ServiceRecord.java
@@ -543,27 +543,25 @@
     }
     
     public void cancelNotification() {
-        if (foregroundId != 0) {
-            // Do asynchronous communication with notification manager to
-            // avoid deadlocks.
-            final String localPackageName = packageName;
-            final int localForegroundId = foregroundId;
-            ams.mHandler.post(new Runnable() {
-                public void run() {
-                    INotificationManager inm = NotificationManager.getService();
-                    if (inm == null) {
-                        return;
-                    }
-                    try {
-                        inm.cancelNotificationWithTag(localPackageName, null,
-                                localForegroundId, userId);
-                    } catch (RuntimeException e) {
-                        Slog.w(TAG, "Error canceling notification for service", e);
-                    } catch (RemoteException e) {
-                    }
+        // Do asynchronous communication with notification manager to
+        // avoid deadlocks.
+        final String localPackageName = packageName;
+        final int localForegroundId = foregroundId;
+        ams.mHandler.post(new Runnable() {
+            public void run() {
+                INotificationManager inm = NotificationManager.getService();
+                if (inm == null) {
+                    return;
                 }
-            });
-        }
+                try {
+                    inm.cancelNotificationWithTag(localPackageName, null,
+                            localForegroundId, userId);
+                } catch (RuntimeException e) {
+                    Slog.w(TAG, "Error canceling notification for service", e);
+                } catch (RemoteException e) {
+                }
+            }
+        });
     }
 
     public void stripForegroundServiceFlagFromNotification() {
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 9c22be7..4bc148b 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -279,6 +279,7 @@
      */
     private void finishUserUnlocking(final UserState uss) {
         final int userId = uss.mHandle.getIdentifier();
+        boolean proceedWithUnlock = false;
         synchronized (mService) {
             // Bail if we ended up with a stale user
             if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;
@@ -288,20 +289,24 @@
 
             if (uss.setState(STATE_RUNNING_LOCKED, STATE_RUNNING_UNLOCKING)) {
                 getUserManagerInternal().setUserState(userId, uss.state);
-                uss.mUnlockProgress.start();
-
-                // Prepare app storage before we go any further
-                uss.mUnlockProgress.setProgress(5,
-                        mService.mContext.getString(R.string.android_start_title));
-                mUserManager.onBeforeUnlockUser(userId);
-                uss.mUnlockProgress.setProgress(20);
-
-                // 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();
+                proceedWithUnlock = true;
             }
         }
+
+        if (proceedWithUnlock) {
+            uss.mUnlockProgress.start();
+
+            // Prepare app storage before we go any further
+            uss.mUnlockProgress.setProgress(5,
+                    mService.mContext.getString(R.string.android_start_title));
+            mUserManager.onBeforeUnlockUser(userId);
+            uss.mUnlockProgress.setProgress(20);
+
+            // 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();
+        }
     }
 
     /**
@@ -962,6 +967,7 @@
 
     boolean unlockUserCleared(final int userId, byte[] token, byte[] secret,
             IProgressListener listener) {
+        UserState uss;
         synchronized (mService) {
             // TODO Move this block outside of synchronized if it causes lock contention
             if (!StorageManager.isUserKeyUnlocked(userId)) {
@@ -976,7 +982,7 @@
             }
             // Bail if user isn't actually running, otherwise register the given
             // listener to watch for unlock progress
-            final UserState uss = mStartedUsers.get(userId);
+            uss = mStartedUsers.get(userId);
             if (uss == null) {
                 notifyFinished(userId, listener);
                 return false;
@@ -984,8 +990,12 @@
                 uss.mUnlockProgress.addListener(listener);
                 uss.tokenProvided = (token != null);
             }
+        }
 
-            finishUserUnlocking(uss);
+        finishUserUnlocking(uss);
+
+        final ArraySet<Integer> childProfilesToUnlock = new ArraySet<>();
+        synchronized (mService) {
 
             // We just unlocked a user, so let's now attempt to unlock any
             // managed profiles under that user.
@@ -995,11 +1005,16 @@
                 if (parent != null && parent.id == userId && testUserId != userId) {
                     Slog.d(TAG, "User " + testUserId + " (parent " + parent.id
                             + "): attempting unlock because parent was just unlocked");
-                    maybeUnlockUser(testUserId);
+                    childProfilesToUnlock.add(testUserId);
                 }
             }
         }
 
+        final int size = childProfilesToUnlock.size();
+        for (int i = 0; i < size; i++) {
+            maybeUnlockUser(childProfilesToUnlock.valueAt(i));
+        }
+
         return true;
     }
 
@@ -1478,6 +1493,9 @@
     }
 
     boolean isSameProfileGroup(int callingUserId, int targetUserId) {
+        if (callingUserId == targetUserId) {
+            return true;
+        }
         synchronized (mUserProfileGroupIdsSelfLocked) {
             int callingProfile = mUserProfileGroupIdsSelfLocked.get(callingUserId,
                     UserInfo.NO_PROFILE_GROUP_ID);
diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
index 92c4577..42d80fc 100644
--- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java
+++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
@@ -200,7 +200,7 @@
     private final WifiManager mWifiManager;
     private final AlarmManager mAlarmManager;
     private final NetworkRequest mDefaultRequest;
-    private final IpConnectivityLog mMetricsLog = new IpConnectivityLog();
+    private final IpConnectivityLog mMetricsLog;
 
     private boolean mIsCaptivePortalCheckEnabled;
     private boolean mUseHttps;
@@ -226,10 +226,17 @@
 
     public NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo,
             NetworkRequest defaultRequest) {
+        this(context, handler, networkAgentInfo, defaultRequest, new IpConnectivityLog());
+    }
+
+    @VisibleForTesting
+    protected NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo,
+            NetworkRequest defaultRequest, IpConnectivityLog logger) {
         // Add suffix indicating which NetworkMonitor we're talking about.
         super(TAG + networkAgentInfo.name());
 
         mContext = context;
+        mMetricsLog = logger;
         mConnectivityServiceHandler = handler;
         mNetworkAgentInfo = networkAgentInfo;
         mNetId = mNetworkAgentInfo.network.netId;
diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
index 22cefd1..7cd1b7b 100644
--- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java
+++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
@@ -18,6 +18,7 @@
 
 import static android.Manifest.permission.CHANGE_NETWORK_STATE;
 import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
+import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
 import static android.content.pm.ApplicationInfo.FLAG_SYSTEM;
 import static android.content.pm.ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
 import static android.content.pm.PackageManager.GET_PERMISSIONS;
@@ -65,10 +66,10 @@
     private final BroadcastReceiver mIntentReceiver;
 
     // Values are User IDs.
-    private final Set<Integer> mUsers = new HashSet<Integer>();
+    private final Set<Integer> mUsers = new HashSet<>();
 
     // Keys are App IDs. Values are true for SYSTEM permission and false for NETWORK permission.
-    private final Map<Integer, Boolean> mApps = new HashMap<Integer, Boolean>();
+    private final Map<Integer, Boolean> mApps = new HashMap<>();
 
     public PermissionMonitor(Context context, INetworkManagementService netd) {
         mContext = context;
@@ -126,14 +127,14 @@
             }
 
             boolean isNetwork = hasNetworkPermission(app);
-            boolean isSystem = hasSystemPermission(app);
+            boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app);
 
-            if (isNetwork || isSystem) {
+            if (isNetwork || hasRestrictedPermission) {
                 Boolean permission = mApps.get(uid);
                 // If multiple packages share a UID (cf: android:sharedUserId) and ask for different
                 // permissions, don't downgrade (i.e., if it's already SYSTEM, leave it as is).
                 if (permission == null || permission == NETWORK) {
-                    mApps.put(uid, isSystem);
+                    mApps.put(uid, hasRestrictedPermission);
                 }
             }
         }
@@ -164,12 +165,13 @@
         return hasPermission(app, CHANGE_NETWORK_STATE);
     }
 
-    private boolean hasSystemPermission(PackageInfo app) {
+    private boolean hasRestrictedNetworkPermission(PackageInfo app) {
         int flags = app.applicationInfo != null ? app.applicationInfo.flags : 0;
         if ((flags & FLAG_SYSTEM) != 0 || (flags & FLAG_UPDATED_SYSTEM_APP) != 0) {
             return true;
         }
-        return hasPermission(app, CONNECTIVITY_INTERNAL);
+        return hasPermission(app, CONNECTIVITY_INTERNAL)
+                || hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS);
     }
 
     private int[] toIntArray(List<Integer> list) {
@@ -181,8 +183,8 @@
     }
 
     private void update(Set<Integer> users, Map<Integer, Boolean> apps, boolean add) {
-        List<Integer> network = new ArrayList<Integer>();
-        List<Integer> system = new ArrayList<Integer>();
+        List<Integer> network = new ArrayList<>();
+        List<Integer> system = new ArrayList<>();
         for (Entry<Integer, Boolean> app : apps.entrySet()) {
             List<Integer> list = app.getValue() ? system : network;
             for (int user : users) {
@@ -209,7 +211,7 @@
         }
         mUsers.add(user);
 
-        Set<Integer> users = new HashSet<Integer>();
+        Set<Integer> users = new HashSet<>();
         users.add(user);
         update(users, mApps, true);
     }
@@ -221,7 +223,7 @@
         }
         mUsers.remove(user);
 
-        Set<Integer> users = new HashSet<Integer>();
+        Set<Integer> users = new HashSet<>();
         users.add(user);
         update(users, mApps, false);
     }
@@ -235,16 +237,16 @@
         try {
             PackageInfo app = mPackageManager.getPackageInfo(appName, GET_PERMISSIONS);
             boolean isNetwork = hasNetworkPermission(app);
-            boolean isSystem = hasSystemPermission(app);
-            if (isNetwork || isSystem) {
+            boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app);
+            if (isNetwork || hasRestrictedPermission) {
                 Boolean permission = mApps.get(appUid);
                 // If multiple packages share a UID (cf: android:sharedUserId) and ask for different
                 // permissions, don't downgrade (i.e., if it's already SYSTEM, leave it as is).
                 if (permission == null || permission == NETWORK) {
-                    mApps.put(appUid, isSystem);
+                    mApps.put(appUid, hasRestrictedPermission);
 
-                    Map<Integer, Boolean> apps = new HashMap<Integer, Boolean>();
-                    apps.put(appUid, isSystem);
+                    Map<Integer, Boolean> apps = new HashMap<>();
+                    apps.put(appUid, hasRestrictedPermission);
                     update(mUsers, apps, true);
                 }
             }
@@ -260,7 +262,7 @@
         }
         mApps.remove(appUid);
 
-        Map<Integer, Boolean> apps = new HashMap<Integer, Boolean>();
+        Map<Integer, Boolean> apps = new HashMap<>();
         apps.put(appUid, NETWORK);  // doesn't matter which permission we pick here
         update(mUsers, apps, false);
     }
diff --git a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java
index a58d243..b47e079 100644
--- a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java
+++ b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java
@@ -176,9 +176,21 @@
 
     private void updateRaParams(RaParams params) {
         if (mRaDaemon != null) {
+            HashSet<IpPrefix> deprecated = null;
+
+            if (mLastRaParams != null) {
+                deprecated = new HashSet<>();
+
+                for (IpPrefix ipp : mLastRaParams.prefixes) {
+                    if (params == null || !params.prefixes.contains(ipp)) {
+                        deprecated.add(ipp);
+                    }
+                }
+            }
+
             // Currently, we send spurious RAs (5) whenever there's any update.
             // TODO: Compare params with mLastParams to avoid spurious updates.
-            mRaDaemon.buildNewRa(params);
+            mRaDaemon.buildNewRa(params, deprecated);
         }
 
         mLastRaParams = params;
diff --git a/services/core/java/com/android/server/job/controllers/ContentObserverController.java b/services/core/java/com/android/server/job/controllers/ContentObserverController.java
index a42d0cd..5d209fc 100644
--- a/services/core/java/com/android/server/job/controllers/ContentObserverController.java
+++ b/services/core/java/com/android/server/job/controllers/ContentObserverController.java
@@ -16,6 +16,7 @@
 
 package com.android.server.job.controllers;
 
+import android.annotation.UserIdInt;
 import android.app.job.JobInfo;
 import android.content.Context;
 import android.database.ContentObserver;
@@ -23,6 +24,7 @@
 import android.os.Handler;
 import android.os.UserHandle;
 import android.util.Slog;
+import android.util.SparseArray;
 import android.util.TimeUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
@@ -35,6 +37,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Controller for monitoring changes to content URIs through a ContentObserver.
@@ -59,7 +62,11 @@
     private static volatile ContentObserverController sController;
 
     final private List<JobStatus> mTrackedTasks = new ArrayList<JobStatus>();
-    ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> mObservers = new ArrayMap<>();
+    /**
+     * Per-userid {@link JobInfo.TriggerContentUri} keyed ContentObserver cache.
+     */
+    SparseArray<ArrayMap<JobInfo.TriggerContentUri, ObserverInstance>> mObservers =
+            new SparseArray<>();
     final Handler mHandler;
 
     public static ContentObserverController get(JobSchedulerService taskManagerService) {
@@ -203,18 +210,21 @@
 
     final class ObserverInstance extends ContentObserver {
         final JobInfo.TriggerContentUri mUri;
+        final @UserIdInt int mUserId;
         final ArraySet<JobInstance> mJobs = new ArraySet<>();
 
-        public ObserverInstance(Handler handler, JobInfo.TriggerContentUri uri) {
+        public ObserverInstance(Handler handler, JobInfo.TriggerContentUri uri,
+                @UserIdInt int userId) {
             super(handler);
             mUri = uri;
+            mUserId = userId;
         }
 
         @Override
         public void onChange(boolean selfChange, Uri uri) {
             if (DEBUG) {
                 Slog.i(TAG, "onChange(self=" + selfChange + ") for " + uri
-                        + " when mUri=" + mUri);
+                        + " when mUri=" + mUri + " mUserId=" + mUserId);
             }
             synchronized (mLock) {
                 final int N = mJobs.size();
@@ -258,27 +268,38 @@
 
         boolean mTriggerPending;
 
+        // This constructor must be called with the master job scheduler lock held.
         JobInstance(JobStatus jobStatus) {
             mJobStatus = jobStatus;
             mExecuteRunner = new TriggerRunnable(this);
             mTimeoutRunner = new TriggerRunnable(this);
             final JobInfo.TriggerContentUri[] uris = jobStatus.getJob().getTriggerContentUris();
+            final int sourceUserId = jobStatus.getSourceUserId();
+            ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> observersOfUser =
+                    mObservers.get(sourceUserId);
+            if (observersOfUser == null) {
+                observersOfUser = new ArrayMap<>();
+                mObservers.put(sourceUserId, observersOfUser);
+            }
             if (uris != null) {
                 for (JobInfo.TriggerContentUri uri : uris) {
-                    ObserverInstance obs = mObservers.get(uri);
+                    ObserverInstance obs = observersOfUser.get(uri);
                     if (obs == null) {
-                        obs = new ObserverInstance(mHandler, uri);
-                        mObservers.put(uri, obs);
+                        obs = new ObserverInstance(mHandler, uri, jobStatus.getSourceUserId());
+                        observersOfUser.put(uri, obs);
                         final boolean andDescendants = (uri.getFlags() &
                                 JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS) != 0;
                         if (DEBUG) {
                             Slog.v(TAG, "New observer " + obs + " for " + uri.getUri()
-                                    + " andDescendants=" + andDescendants);
+                                    + " andDescendants=" + andDescendants
+                                    + " sourceUserId=" + sourceUserId);
                         }
                         mContext.getContentResolver().registerContentObserver(
                                 uri.getUri(),
                                 andDescendants,
-                                obs);
+                                obs,
+                                sourceUserId
+                        );
                     } else {
                         if (DEBUG) {
                             final boolean andDescendants = (uri.getFlags() &
@@ -342,7 +363,11 @@
                         Slog.i(TAG, "Unregistering observer " + obs + " for " + obs.mUri.getUri());
                     }
                     mContext.getContentResolver().unregisterContentObserver(obs);
-                    mObservers.remove(obs.mUri);
+                    ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> observerOfUser =
+                            mObservers.get(obs.mUserId);
+                    if (observerOfUser !=  null) {
+                        observerOfUser.remove(obs.mUri);
+                    }
                 }
             }
         }
@@ -366,60 +391,66 @@
         int N = mObservers.size();
         if (N > 0) {
             pw.println("  Observers:");
-            for (int i = 0; i < N; i++) {
-                ObserverInstance obs = mObservers.valueAt(i);
-                int M = obs.mJobs.size();
-                boolean shouldDump = false;
-                for (int j=0; j<M; j++) {
-                    JobInstance inst = obs.mJobs.valueAt(j);
-                    if (inst.mJobStatus.shouldDump(filterUid)) {
-                        shouldDump = true;
-                        break;
+            for (int userIdx = 0; userIdx < N; userIdx++) {
+                final int userId = mObservers.keyAt(userIdx);
+                ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> observersOfUser =
+                        mObservers.get(userId);
+                int numbOfObserversPerUser = observersOfUser.size();
+                for (int observerIdx = 0 ; observerIdx < numbOfObserversPerUser; observerIdx++) {
+                    ObserverInstance obs = observersOfUser.valueAt(observerIdx);
+                    int M = obs.mJobs.size();
+                    boolean shouldDump = false;
+                    for (int j = 0; j < M; j++) {
+                        JobInstance inst = obs.mJobs.valueAt(j);
+                        if (inst.mJobStatus.shouldDump(filterUid)) {
+                            shouldDump = true;
+                            break;
+                        }
                     }
-                }
-                if (!shouldDump) {
-                    continue;
-                }
-                pw.print("    ");
-                JobInfo.TriggerContentUri trigger = mObservers.keyAt(i);
-                pw.print(trigger.getUri());
-                pw.print(" 0x");
-                pw.print(Integer.toHexString(trigger.getFlags()));
-                pw.print(" (");
-                pw.print(System.identityHashCode(obs));
-                pw.println("):");
-                pw.println("      Jobs:");
-                for (int j=0; j<M; j++) {
-                    JobInstance inst = obs.mJobs.valueAt(j);
-                    pw.print("        #");
-                    inst.mJobStatus.printUniqueId(pw);
-                    pw.print(" from ");
-                    UserHandle.formatUid(pw, inst.mJobStatus.getSourceUid());
-                    if (inst.mChangedAuthorities != null) {
-                        pw.println(":");
-                        if (inst.mTriggerPending) {
-                            pw.print("          Trigger pending: update=");
-                            TimeUtils.formatDuration(
-                                    inst.mJobStatus.getTriggerContentUpdateDelay(), pw);
-                            pw.print(", max=");
-                            TimeUtils.formatDuration(
-                                    inst.mJobStatus.getTriggerContentMaxDelay(), pw);
+                    if (!shouldDump) {
+                        continue;
+                    }
+                    pw.print("    ");
+                    JobInfo.TriggerContentUri trigger = observersOfUser.keyAt(observerIdx);
+                    pw.print(trigger.getUri());
+                    pw.print(" 0x");
+                    pw.print(Integer.toHexString(trigger.getFlags()));
+                    pw.print(" (");
+                    pw.print(System.identityHashCode(obs));
+                    pw.println("):");
+                    pw.println("      Jobs:");
+                    for (int j = 0; j < M; j++) {
+                        JobInstance inst = obs.mJobs.valueAt(j);
+                        pw.print("        #");
+                        inst.mJobStatus.printUniqueId(pw);
+                        pw.print(" from ");
+                        UserHandle.formatUid(pw, inst.mJobStatus.getSourceUid());
+                        if (inst.mChangedAuthorities != null) {
+                            pw.println(":");
+                            if (inst.mTriggerPending) {
+                                pw.print("          Trigger pending: update=");
+                                TimeUtils.formatDuration(
+                                        inst.mJobStatus.getTriggerContentUpdateDelay(), pw);
+                                pw.print(", max=");
+                                TimeUtils.formatDuration(
+                                        inst.mJobStatus.getTriggerContentMaxDelay(), pw);
+                                pw.println();
+                            }
+                            pw.println("          Changed Authorities:");
+                            for (int k = 0; k < inst.mChangedAuthorities.size(); k++) {
+                                pw.print("          ");
+                                pw.println(inst.mChangedAuthorities.valueAt(k));
+                            }
+                            if (inst.mChangedUris != null) {
+                                pw.println("          Changed URIs:");
+                                for (int k = 0; k < inst.mChangedUris.size(); k++) {
+                                    pw.print("          ");
+                                    pw.println(inst.mChangedUris.valueAt(k));
+                                }
+                            }
+                        } else {
                             pw.println();
                         }
-                        pw.println("          Changed Authorities:");
-                        for (int k=0; k<inst.mChangedAuthorities.size(); k++) {
-                            pw.print("          ");
-                            pw.println(inst.mChangedAuthorities.valueAt(k));
-                        }
-                        if (inst.mChangedUris != null) {
-                            pw.println("          Changed URIs:");
-                            for (int k = 0; k<inst.mChangedUris.size(); k++) {
-                                pw.print("          ");
-                                pw.println(inst.mChangedUris.valueAt(k));
-                            }
-                        }
-                    } else {
-                        pw.println();
                     }
                 }
             }
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index a3f09c0..777eee8 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -239,7 +239,8 @@
         synchronized (mLock) {
             UserManager manager = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
             int currentUser = ActivityManager.getCurrentUser();
-            int[] userIds = manager.getEnabledProfileIds(currentUser);
+            // Include all profiles even though they aren't yet enabled to handle work profile case.
+            int[] userIds = manager.getProfileIdsWithDisabled(currentUser);
             mCurrentUserIdList.clear();
             if (userIds != null && userIds.length > 0) {
                 for (int userId : userIds) {
@@ -440,6 +441,12 @@
     private MediaSessionRecord createSessionLocked(int callerPid, int callerUid, int userId,
             String callerPackageName, ISessionCallback cb, String tag) {
 
+        UserRecord user = mUserRecords.get(userId);
+        if (user == null) {
+            Log.wtf(TAG, "Request from invalid user: " +  userId);
+            throw new RuntimeException("Session request from invalid user.");
+        }
+
         final MediaSessionRecord session = new MediaSessionRecord(callerPid, callerUid, userId,
                 callerPackageName, cb, tag, this, mHandler);
         try {
@@ -450,8 +457,6 @@
 
         mAllSessions.add(session);
         mPriorityStack.addSession(session, mCurrentUserIdList.contains(userId));
-
-        UserRecord user = mUserRecords.get(userId);
         user.addSessionLocked(session);
 
         mHandler.post(MessageHandler.MSG_SESSIONS_CHANGED, userId, 0);
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index b22a084..8f9cc47 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -2818,7 +2818,6 @@
             for (int j = mPowerSaveTempWhitelistAppIds.size() - 1; j >= 0; j--) {
                 int appId = mPowerSaveTempWhitelistAppIds.keyAt(j);
                 int uid = UserHandle.getUid(user.id, appId);
-                updateRulesForRestrictPowerUL();
                 // Update external firewall rules.
                 updateRuleForAppIdleUL(uid);
                 updateRuleForDeviceIdleUL(uid);
diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
index 1cff926..9c9e97e 100644
--- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
@@ -474,6 +474,7 @@
             if (emailPackage != null
                     && doesPackageSupportRuntimePermissions(emailPackage)) {
                 grantRuntimePermissionsLPw(emailPackage, CONTACTS_PERMISSIONS, userId);
+                grantRuntimePermissionsLPw(emailPackage, CALENDAR_PERMISSIONS, userId);
             }
 
             // Browser
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index cd5bcd41..53e328c 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -768,41 +768,46 @@
 
             private void onShortcutChangedInner(@NonNull String packageName,
                     @UserIdInt int userId) {
-                final UserHandle user = UserHandle.of(userId);
+                try {
+                    final UserHandle user = UserHandle.of(userId);
 
-                final int n = mListeners.beginBroadcast();
-                for (int i = 0; i < n; i++) {
-                    IOnAppsChangedListener listener = mListeners.getBroadcastItem(i);
-                    BroadcastCookie cookie = (BroadcastCookie) mListeners.getBroadcastCookie(i);
-                    if (!isEnabledProfileOf(user, cookie.user, "onShortcutChanged")) continue;
+                    final int n = mListeners.beginBroadcast();
+                    for (int i = 0; i < n; i++) {
+                        IOnAppsChangedListener listener = mListeners.getBroadcastItem(i);
+                        BroadcastCookie cookie = (BroadcastCookie) mListeners.getBroadcastCookie(i);
+                        if (!isEnabledProfileOf(user, cookie.user, "onShortcutChanged")) continue;
 
-                    final int launcherUserId = cookie.user.getIdentifier();
+                        final int launcherUserId = cookie.user.getIdentifier();
 
-                    // Make sure the caller has the permission.
-                    if (!mShortcutServiceInternal.hasShortcutHostPermission(
-                            launcherUserId, cookie.packageName)) {
-                        continue;
+                        // Make sure the caller has the permission.
+                        if (!mShortcutServiceInternal.hasShortcutHostPermission(
+                                launcherUserId, cookie.packageName)) {
+                            continue;
+                        }
+                        // Each launcher has a different set of pinned shortcuts, so we need to do a
+                        // query in here.
+                        // (As of now, only one launcher has the permission at a time, so it's bit
+                        // moot, but we may change the permission model eventually.)
+                        final List<ShortcutInfo> list =
+                                mShortcutServiceInternal.getShortcuts(launcherUserId,
+                                        cookie.packageName,
+                                        /* changedSince= */ 0, packageName, /* shortcutIds=*/ null,
+                                        /* component= */ null,
+                                        ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY
+                                        | ShortcutQuery.FLAG_GET_ALL_KINDS
+                                        , userId);
+                        try {
+                            listener.onShortcutChanged(user, packageName,
+                                    new ParceledListSlice<>(list));
+                        } catch (RemoteException re) {
+                            Slog.d(TAG, "Callback failed ", re);
+                        }
                     }
-                    // Each launcher has a different set of pinned shortcuts, so we need to do a
-                    // query in here.
-                    // (As of now, only one launcher has the permission at a time, so it's bit
-                    // moot, but we may change the permission model eventually.)
-                    final List<ShortcutInfo> list =
-                            mShortcutServiceInternal.getShortcuts(launcherUserId,
-                                    cookie.packageName,
-                                    /* changedSince= */ 0, packageName, /* shortcutIds=*/ null,
-                                    /* component= */ null,
-                                    ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY
-                                    | ShortcutQuery.FLAG_GET_ALL_KINDS
-                                    , userId);
-                    try {
-                        listener.onShortcutChanged(user, packageName,
-                                new ParceledListSlice<>(list));
-                    } catch (RemoteException re) {
-                        Slog.d(TAG, "Callback failed ", re);
-                    }
+                    mListeners.finishBroadcast();
+                } catch (RuntimeException e) {
+                    // When the user is locked we get IllegalState, so just catch all.
+                    Log.w(TAG, e.getMessage(), e);
                 }
-                mListeners.finishBroadcast();
             }
         }
 
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java
index 77c69c9..c5f3cfd3b 100644
--- a/services/core/java/com/android/server/pm/OtaDexoptService.java
+++ b/services/core/java/com/android/server/pm/OtaDexoptService.java
@@ -56,16 +56,9 @@
     // TODO: Evaluate the need for WeakReferences here.
 
     /**
-     * The list of packages to dexopt.
+     * The list of dexopt invocations for all work.
      */
-    private List<PackageParser.Package> mDexoptPackages;
-
-    /**
-     * The list of dexopt invocations for the current package (which will no longer be in
-     * mDexoptPackages). This can be more than one as a package may have multiple code paths,
-     * e.g., in the split-APK case.
-     */
-    private List<String> mCommandsForCurrentPackage;
+    private List<String> mDexoptCommands;
 
     private int completeSize;
 
@@ -94,15 +87,43 @@
 
     @Override
     public synchronized void prepare() throws RemoteException {
-        if (mDexoptPackages != null) {
+        if (mDexoptCommands != null) {
             throw new IllegalStateException("already called prepare()");
         }
         synchronized (mPackageManagerService.mPackages) {
-            mDexoptPackages = PackageManagerServiceUtils.getPackagesForDexopt(
+            // Important: the packages we need to run with ab-ota compiler-reason.
+            List<PackageParser.Package> important = PackageManagerServiceUtils.getPackagesForDexopt(
                     mPackageManagerService.mPackages.values(), mPackageManagerService);
+            // Others: we should optimize this with the (first-)boot compiler-reason.
+            List<PackageParser.Package> others =
+                    new ArrayList<>(mPackageManagerService.mPackages.values());
+            others.removeAll(important);
+
+            // Pre-size the array list by over-allocating by a factor of 1.5.
+            mDexoptCommands = new ArrayList<>(3 * mPackageManagerService.mPackages.size() / 2);
+
+            for (PackageParser.Package p : important) {
+                // Make sure that core apps are optimized according to their own "reason".
+                // If the core apps are not preopted in the B OTA, and REASON_AB_OTA is not speed
+                // (by default is speed-profile) they will be interepreted/JITed. This in itself is
+                // not a problem as we will end up doing profile guided compilation. However, some
+                // core apps may be loaded by system server which doesn't JIT and we need to make
+                // sure we don't interpret-only
+                int compilationReason = p.coreApp
+                        ? PackageManagerService.REASON_CORE_APP
+                        : PackageManagerService.REASON_AB_OTA;
+                mDexoptCommands.addAll(generatePackageDexopts(p, compilationReason));
+            }
+            for (PackageParser.Package p : others) {
+                // We assume here that there are no core apps left.
+                if (p.coreApp) {
+                    throw new IllegalStateException("Found a core app that's not important");
+                }
+                mDexoptCommands.addAll(
+                        generatePackageDexopts(p, PackageManagerService.REASON_FIRST_BOOT));
+            }
         }
-        completeSize = mDexoptPackages.size();
-        mCommandsForCurrentPackage = null;
+        completeSize = mDexoptCommands.size();
     }
 
     @Override
@@ -110,87 +131,52 @@
         if (DEBUG_DEXOPT) {
             Log.i(TAG, "Cleaning up OTA Dexopt state.");
         }
-        mDexoptPackages = null;
-        mCommandsForCurrentPackage = null;
+        mDexoptCommands = null;
     }
 
     @Override
     public synchronized boolean isDone() throws RemoteException {
-        if (mDexoptPackages == null) {
+        if (mDexoptCommands == null) {
             throw new IllegalStateException("done() called before prepare()");
         }
 
-        return mDexoptPackages.isEmpty() && (mCommandsForCurrentPackage == null);
+        return mDexoptCommands.isEmpty();
     }
 
     @Override
     public synchronized float getProgress() throws RemoteException {
-        // We approximate by number of packages here. We could track all compiles, if we
-        // generated them ahead of time. Right now we're trying to conserve memory.
+        // Approximate the progress by the amount of already completed commands.
         if (completeSize == 0) {
             return 1f;
         }
-        int packagesLeft = mDexoptPackages.size() + (mCommandsForCurrentPackage != null ? 1 : 0);
-        return (completeSize - packagesLeft) / ((float)completeSize);
-    }
-
-    /**
-     * Return the next dexopt command for the current package. Enforces the invariant
-     */
-    private String getNextPackageDexopt() {
-        if (mCommandsForCurrentPackage != null) {
-            String next = mCommandsForCurrentPackage.remove(0);
-            if (mCommandsForCurrentPackage.isEmpty()) {
-                mCommandsForCurrentPackage = null;
-            }
-            return next;
-        }
-        return null;
+        int commandsLeft = mDexoptCommands.size();
+        return (completeSize - commandsLeft) / ((float)completeSize);
     }
 
     @Override
     public synchronized String nextDexoptCommand() throws RemoteException {
-        if (mDexoptPackages == null) {
+        if (mDexoptCommands == null) {
             throw new IllegalStateException("dexoptNextPackage() called before prepare()");
         }
 
-        // Get the next command.
-        for (;;) {
-            // Check whether there's one for the current package.
-            String next = getNextPackageDexopt();
-            if (next != null) {
-                return next;
-            }
+        if (mDexoptCommands.isEmpty()) {
+            return "(all done)";
+        }
 
-            // Move to the next package, if possible.
-            if (mDexoptPackages.isEmpty()) {
-                return "Nothing to do";
-            }
+        String next = mDexoptCommands.remove(0);
 
-            PackageParser.Package nextPackage = mDexoptPackages.remove(0);
-
-            if (DEBUG_DEXOPT) {
-                Log.i(TAG, "Processing " + nextPackage.packageName + " for OTA dexopt.");
-            }
-
-            // Generate the next mPackageDexopts state. Ignore errors, this loop is strongly
-            // monotonically increasing, anyways.
-            generatePackageDexopts(nextPackage);
-
-            // Invariant check: mPackageDexopts is null or not empty.
-            if (mCommandsForCurrentPackage != null && mCommandsForCurrentPackage.isEmpty()) {
-                cleanup();
-                throw new IllegalStateException("mPackageDexopts empty for " + nextPackage);
-            }
+        if (IsFreeSpaceAvailable()) {
+            return next;
+        } else {
+            mDexoptCommands.clear();
+            return "(no free space)";
         }
     }
 
     /**
-     * Generate all dexopt commands for the given package and place them into mPackageDexopts.
-     * Returns true on success, false in an error situation like low disk space.
+     * Check for low space. Returns true if there's space left.
      */
-    private synchronized boolean generatePackageDexopts(PackageParser.Package nextPackage) {
-        // Check for low space.
+    private boolean IsFreeSpaceAvailable() {
         // TODO: If apps are not installed in the internal /data partition, we should compare
         //       against that storage's free capacity.
         File dataDir = Environment.getDataDirectory();
@@ -200,12 +186,14 @@
             throw new IllegalStateException("Invalid low memory threshold");
         }
         long usableSpace = dataDir.getUsableSpace();
-        if (usableSpace < lowThreshold) {
-            Log.w(TAG, "Not running dexopt on " + nextPackage.packageName + " due to low memory: " +
-                    usableSpace);
-            return false;
-        }
+        return (usableSpace >= lowThreshold);
+    }
 
+    /**
+     * Generate all dexopt commands for the given package.
+     */
+    private synchronized List<String> generatePackageDexopts(PackageParser.Package pkg,
+            int compilationReason) {
         // Use our custom connection that just collects the commands.
         RecordingInstallerConnection collectingConnection = new RecordingInstallerConnection();
         Installer collectingInstaller = new Installer(mContext, collectingConnection);
@@ -213,71 +201,22 @@
         // Use the package manager install and install lock here for the OTA dex optimizer.
         PackageDexOptimizer optimizer = new OTADexoptPackageDexOptimizer(
                 collectingInstaller, mPackageManagerService.mInstallLock, mContext);
-        // Make sure that core apps are optimized according to their own "reason".
-        // If the core apps are not preopted in the B OTA, and REASON_AB_OTA is not speed
-        // (by default is speed-profile) they will be interepreted/JITed. This in itself is not a
-        // problem as we will end up doing profile guided compilation. However, some core apps may
-        // be loaded by system server which doesn't JIT and we need to make sure we don't
-        // interpret-only
-        int compilationReason = nextPackage.coreApp
-                ? PackageManagerService.REASON_CORE_APP
-                : PackageManagerService.REASON_AB_OTA;
 
-        optimizer.performDexOpt(nextPackage, nextPackage.usesLibraryFiles,
+        optimizer.performDexOpt(pkg, pkg.usesLibraryFiles,
                 null /* ISAs */, false /* checkProfiles */,
                 getCompilerFilterForReason(compilationReason),
                 null /* CompilerStats.PackageStats */);
 
-        mCommandsForCurrentPackage = collectingConnection.commands;
-        if (mCommandsForCurrentPackage.isEmpty()) {
-            mCommandsForCurrentPackage = null;
-        }
-
-        return true;
+        return collectingConnection.commands;
     }
 
     @Override
     public synchronized void dexoptNextPackage() throws RemoteException {
-        if (mDexoptPackages == null) {
-            throw new IllegalStateException("dexoptNextPackage() called before prepare()");
-        }
-        if (mDexoptPackages.isEmpty()) {
-            // Tolerate repeated calls.
-            return;
-        }
-
-        PackageParser.Package nextPackage = mDexoptPackages.remove(0);
-
-        if (DEBUG_DEXOPT) {
-            Log.i(TAG, "Processing " + nextPackage.packageName + " for OTA dexopt.");
-        }
-
-        // Check for low space.
-        // TODO: If apps are not installed in the internal /data partition, we should compare
-        //       against that storage's free capacity.
-        File dataDir = Environment.getDataDirectory();
-        @SuppressWarnings("deprecation")
-        long lowThreshold = StorageManager.from(mContext).getStorageLowBytes(dataDir);
-        if (lowThreshold == 0) {
-            throw new IllegalStateException("Invalid low memory threshold");
-        }
-        long usableSpace = dataDir.getUsableSpace();
-        if (usableSpace < lowThreshold) {
-            Log.w(TAG, "Not running dexopt on " + nextPackage.packageName + " due to low memory: " +
-                    usableSpace);
-            return;
-        }
-
-        PackageDexOptimizer optimizer = new OTADexoptPackageDexOptimizer(
-                mPackageManagerService.mInstaller, mPackageManagerService.mInstallLock, mContext);
-        optimizer.performDexOpt(nextPackage, nextPackage.usesLibraryFiles, null /* ISAs */,
-                false /* checkProfiles */,
-                getCompilerFilterForReason(PackageManagerService.REASON_AB_OTA),
-                mPackageManagerService.getOrCreateCompilerPackageStats(nextPackage));
+        throw new UnsupportedOperationException();
     }
 
     private void moveAbArtifacts(Installer installer) {
-        if (mDexoptPackages != null) {
+        if (mDexoptCommands != null) {
             throw new IllegalStateException("Should not be ota-dexopting when trying to move.");
         }
 
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 54c36e1..2ed64f1 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -1963,10 +1963,6 @@
         PackageManagerService m = new PackageManagerService(context, installer,
                 factoryTest, onlyCore);
         m.enableSystemUserPackages();
-        // Disable any carrier apps. We do this very early in boot to prevent the apps from being
-        // disabled after already being started.
-        CarrierAppUtils.disableCarrierAppsUntilPrivileged(context.getOpPackageName(), m,
-                UserHandle.USER_SYSTEM);
         ServiceManager.addService("package", m);
         return m;
     }
@@ -15828,6 +15824,12 @@
                     + e.getMessage());
             return false;
         }
+        try {
+            // update shared libraries for the newly re-installed system package
+            updateSharedLibrariesLPw(newPkg, null);
+        } catch (PackageManagerException e) {
+            Slog.e(TAG, "updateAllSharedLibrariesLPw failed: " + e.getMessage());
+        }
 
         prepareAppDataAfterInstallLIF(newPkg);
 
@@ -17875,6 +17877,11 @@
     public void systemReady() {
         mSystemReady = true;
 
+        // Disable any carrier apps. We do this very early in boot to prevent the apps from being
+        // disabled after already being started.
+        CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), this,
+                mContext.getContentResolver(), UserHandle.USER_SYSTEM);
+
         // Read the compatibilty setting when the system is ready.
         boolean compatibilityModeEnabled = android.provider.Settings.Global.getInt(
                 mContext.getContentResolver(),
diff --git a/services/core/java/com/android/server/pm/ShortcutParser.java b/services/core/java/com/android/server/pm/ShortcutParser.java
index 2a2a4b2..3cf4200 100644
--- a/services/core/java/com/android/server/pm/ShortcutParser.java
+++ b/services/core/java/com/android/server/pm/ShortcutParser.java
@@ -259,7 +259,7 @@
                     continue;
                 }
 
-                ShortcutService.warnForInvalidTag(depth, tag);
+                Log.w(TAG, String.format("Invalid tag '%s' found at depth %d", tag, depth));
             }
         } finally {
             if (parser != null) {
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 93693ce..8d400b5 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -77,6 +77,7 @@
 import android.util.Log;
 import android.util.Slog;
 import android.util.SparseArray;
+import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 import android.util.SparseLongArray;
 import android.util.TypedValue;
@@ -85,7 +86,6 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.content.PackageMonitor;
 import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.util.Preconditions;
@@ -301,6 +301,9 @@
                     | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
                     | PackageManager.MATCH_UNINSTALLED_PACKAGES;
 
+    @GuardedBy("mLock")
+    final SparseBooleanArray mUnlockedUsers = new SparseBooleanArray();
+
     // Stats
     @VisibleForTesting
     interface Stats {
@@ -522,6 +525,8 @@
             Slog.d(TAG, "handleUnlockUser: user=" + userId);
         }
         synchronized (mLock) {
+            mUnlockedUsers.put(userId, true);
+
             // Preload the user's shortcuts.
             // Also see if the locale has changed.
             // Note as of nyc, the locale is per-user, so the locale shouldn't change
@@ -534,8 +539,13 @@
 
     /** lifecycle event */
     void handleCleanupUser(int userId) {
+        if (DEBUG) {
+            Slog.d(TAG, "handleCleanupUser: user=" + userId);
+        }
         synchronized (mLock) {
             unloadUserLocked(userId);
+
+            mUnlockedUsers.put(userId, false);
         }
     }
 
@@ -978,16 +988,20 @@
         if (DEBUG) {
             Slog.d(TAG, "saveDirtyInfo");
         }
-        synchronized (mLock) {
-            for (int i = mDirtyUserIds.size() - 1; i >= 0; i--) {
-                final int userId = mDirtyUserIds.get(i);
-                if (userId == UserHandle.USER_NULL) { // USER_NULL for base state.
-                    saveBaseStateLocked();
-                } else {
-                    saveUserLocked(userId);
+        try {
+            synchronized (mLock) {
+                for (int i = mDirtyUserIds.size() - 1; i >= 0; i--) {
+                    final int userId = mDirtyUserIds.get(i);
+                    if (userId == UserHandle.USER_NULL) { // USER_NULL for base state.
+                        saveBaseStateLocked();
+                    } else {
+                        saveUserLocked(userId);
+                    }
                 }
+                mDirtyUserIds.clear();
             }
-            mDirtyUserIds.clear();
+        } catch (Exception e) {
+            wtf("Exception in saveDirtyInfo", e);
         }
     }
 
@@ -1037,6 +1051,18 @@
         }
     }
 
+    // Requires mLock held, but "Locked" prefix would look weired so we jsut say "L".
+    protected boolean isUserUnlockedL(@UserIdInt int userId) {
+        return mUnlockedUsers.get(userId);
+    }
+
+    // Requires mLock held, but "Locked" prefix would look weired so we jsut say "L".
+    void throwIfUserLockedL(@UserIdInt int userId) {
+        if (!isUserUnlockedL(userId)) {
+            throw new IllegalStateException("User " + userId + " is locked or not running");
+        }
+    }
+
     @GuardedBy("mLock")
     @NonNull
     private boolean isUserLoadedLocked(@UserIdInt int userId) {
@@ -1047,6 +1073,10 @@
     @GuardedBy("mLock")
     @NonNull
     ShortcutUser getUserShortcutsLocked(@UserIdInt int userId) {
+        if (!isUserUnlockedL(userId)) {
+            wtf("User still locked");
+        }
+
         ShortcutUser userPackages = mUsers.get(userId);
         if (userPackages == null) {
             userPackages = loadUserLocked(userId);
@@ -1448,22 +1478,21 @@
     }
 
     private void notifyListeners(@NonNull String packageName, @UserIdInt int userId) {
-        final long token = injectClearCallingIdentity();
-        try {
-            if (!mUserManager.isUserRunning(userId)) {
-                return;
-            }
-        } finally {
-            injectRestoreCallingIdentity(token);
-        }
         injectPostToHandler(() -> {
-            final ArrayList<ShortcutChangeListener> copy;
-            synchronized (mLock) {
-                copy = new ArrayList<>(mListeners);
-            }
-            // Note onShortcutChanged() needs to be called with the system service permissions.
-            for (int i = copy.size() - 1; i >= 0; i--) {
-                copy.get(i).onShortcutChanged(packageName, userId);
+            try {
+                final ArrayList<ShortcutChangeListener> copy;
+                synchronized (mLock) {
+                    if (!isUserUnlockedL(userId)) {
+                        return;
+                    }
+
+                    copy = new ArrayList<>(mListeners);
+                }
+                // Note onShortcutChanged() needs to be called with the system service permissions.
+                for (int i = copy.size() - 1; i >= 0; i--) {
+                    copy.get(i).onShortcutChanged(packageName, userId);
+                }
+            } catch (Exception ignore) {
             }
         });
     }
@@ -1540,6 +1569,8 @@
         final int size = newShortcuts.size();
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
 
@@ -1590,6 +1621,8 @@
         final int size = newShortcuts.size();
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
 
@@ -1669,6 +1702,8 @@
         final int size = newShortcuts.size();
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
 
@@ -1717,6 +1752,8 @@
         Preconditions.checkNotNull(shortcutIds, "shortcutIds must be provided");
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
 
@@ -1745,6 +1782,8 @@
         Preconditions.checkNotNull(shortcutIds, "shortcutIds must be provided");
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
 
@@ -1766,6 +1805,8 @@
         Preconditions.checkNotNull(shortcutIds, "shortcutIds must be provided");
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
 
@@ -1789,6 +1830,8 @@
         verifyCaller(packageName, userId);
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
             ps.deleteAllDynamicShortcuts();
@@ -1802,7 +1845,10 @@
     public ParceledListSlice<ShortcutInfo> getDynamicShortcuts(String packageName,
             @UserIdInt int userId) {
         verifyCaller(packageName, userId);
+
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             return getShortcutsWithQueryLocked(
                     packageName, userId, ShortcutInfo.CLONE_REMOVE_FOR_CREATOR,
                     ShortcutInfo::isDynamic);
@@ -1813,7 +1859,10 @@
     public ParceledListSlice<ShortcutInfo> getManifestShortcuts(String packageName,
             @UserIdInt int userId) {
         verifyCaller(packageName, userId);
+
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             return getShortcutsWithQueryLocked(
                     packageName, userId, ShortcutInfo.CLONE_REMOVE_FOR_CREATOR,
                     ShortcutInfo::isManifestShortcut);
@@ -1824,7 +1873,10 @@
     public ParceledListSlice<ShortcutInfo> getPinnedShortcuts(String packageName,
             @UserIdInt int userId) {
         verifyCaller(packageName, userId);
+
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             return getShortcutsWithQueryLocked(
                     packageName, userId, ShortcutInfo.CLONE_REMOVE_FOR_CREATOR,
                     ShortcutInfo::isPinned);
@@ -1856,6 +1908,8 @@
         verifyCaller(packageName, userId);
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
             return mMaxUpdatesPerInterval - ps.getApiCallCount();
@@ -1867,6 +1921,8 @@
         verifyCaller(packageName, userId);
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             return getNextResetTimeLocked();
         }
     }
@@ -1892,6 +1948,8 @@
         }
 
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
             ps.getUser().onCalledByPublisher(packageName);
 
@@ -1923,6 +1981,11 @@
 
     void resetThrottlingInner(@UserIdInt int userId) {
         synchronized (mLock) {
+            if (!isUserUnlockedL(userId)) {
+                Log.w(TAG, "User " + userId + " is locked or not running");
+                return;
+            }
+
             getUserShortcutsLocked(userId).resetThrottling();
         }
         scheduleSaveUser(userId);
@@ -1937,21 +2000,23 @@
         Slog.i(TAG, "ShortcutManager: throttling counter reset for all users");
     }
 
-    void resetPackageThrottling(String packageName, int userId) {
-        synchronized (mLock) {
-            getPackageShortcutsLocked(packageName, userId)
-                    .resetRateLimitingForCommandLineNoSaving();
-            saveUserLocked(userId);
-        }
-    }
-
     @Override
     public void onApplicationActive(String packageName, int userId) {
         if (DEBUG) {
             Slog.d(TAG, "onApplicationActive: package=" + packageName + "  userid=" + userId);
         }
         enforceResetThrottlingPermission();
-        resetPackageThrottling(packageName, userId);
+
+        synchronized (mLock) {
+            if (!isUserUnlockedL(userId)) {
+                // This is called by system UI, so no need to throw.  Just ignore.
+                return;
+            }
+
+            getPackageShortcutsLocked(packageName, userId)
+                    .resetRateLimitingForCommandLineNoSaving();
+            saveUserLocked(userId);
+        }
     }
 
     // We override this method in unit tests to do a simpler check.
@@ -1969,6 +2034,8 @@
     @VisibleForTesting
     boolean hasShortcutHostPermissionInner(@NonNull String callingPackage, int userId) {
         synchronized (mLock) {
+            throwIfUserLockedL(userId);
+
             final ShortcutUser user = getUserShortcutsLocked(userId);
 
             // Always trust the in-memory cache.
@@ -2125,6 +2192,7 @@
                 @Nullable ComponentName componentName,
                 int queryFlags, int userId) {
             final ArrayList<ShortcutInfo> ret = new ArrayList<>();
+
             final boolean cloneKeyFieldOnly =
                     ((queryFlags & ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY) != 0);
             final int cloneFlag = cloneKeyFieldOnly ? ShortcutInfo.CLONE_REMOVE_NON_KEY_INFO
@@ -2134,6 +2202,9 @@
             }
 
             synchronized (mLock) {
+                throwIfUserLockedL(userId);
+                throwIfUserLockedL(launcherUserId);
+
                 getLauncherShortcutsLocked(callingPackage, userId, launcherUserId)
                         .attemptToRestoreIfNeededAndSave();
 
@@ -2203,6 +2274,9 @@
             Preconditions.checkStringNotEmpty(shortcutId, "shortcutId");
 
             synchronized (mLock) {
+                throwIfUserLockedL(userId);
+                throwIfUserLockedL(launcherUserId);
+
                 getLauncherShortcutsLocked(callingPackage, userId, launcherUserId)
                         .attemptToRestoreIfNeededAndSave();
 
@@ -2218,6 +2292,9 @@
             Preconditions.checkStringNotEmpty(packageName, "packageName");
             Preconditions.checkStringNotEmpty(shortcutId, "shortcutId");
 
+            throwIfUserLockedL(userId);
+            throwIfUserLockedL(launcherUserId);
+
             final ShortcutPackage p = getUserShortcutsLocked(userId)
                     .getPackageShortcutsIfExists(packageName);
             if (p == null) {
@@ -2240,6 +2317,9 @@
             Preconditions.checkNotNull(shortcutIds, "shortcutIds");
 
             synchronized (mLock) {
+                throwIfUserLockedL(userId);
+                throwIfUserLockedL(launcherUserId);
+
                 final ShortcutLauncher launcher =
                         getLauncherShortcutsLocked(callingPackage, userId, launcherUserId);
                 launcher.attemptToRestoreIfNeededAndSave();
@@ -2260,6 +2340,9 @@
             Preconditions.checkStringNotEmpty(shortcutId, "shortcutId can't be empty");
 
             synchronized (mLock) {
+                throwIfUserLockedL(userId);
+                throwIfUserLockedL(launcherUserId);
+
                 getLauncherShortcutsLocked(callingPackage, userId, launcherUserId)
                         .attemptToRestoreIfNeededAndSave();
 
@@ -2290,6 +2373,9 @@
             Preconditions.checkNotNull(shortcutId, "shortcutId");
 
             synchronized (mLock) {
+                throwIfUserLockedL(userId);
+                throwIfUserLockedL(launcherUserId);
+
                 getLauncherShortcutsLocked(callingPackage, userId, launcherUserId)
                         .attemptToRestoreIfNeededAndSave();
 
@@ -2314,6 +2400,9 @@
             Preconditions.checkNotNull(shortcutId, "shortcutId");
 
             synchronized (mLock) {
+                throwIfUserLockedL(userId);
+                throwIfUserLockedL(launcherUserId);
+
                 getLauncherShortcutsLocked(callingPackage, userId, launcherUserId)
                         .attemptToRestoreIfNeededAndSave();
 
@@ -2355,8 +2444,12 @@
             if (!mBootCompleted.get()) {
                 return; // Boot not completed, ignore the broadcast.
             }
-            if (Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())) {
-                handleLocaleChanged();
+            try {
+                if (Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())) {
+                    handleLocaleChanged();
+                }
+            } catch (Exception e) {
+                wtf("Exception in mReceiver.onReceive", e);
             }
         }
     };
@@ -2367,11 +2460,13 @@
         }
         scheduleSaveBaseState();
 
-        final long token = injectClearCallingIdentity();
-        try {
-            forEachLoadedUserLocked(user -> user.detectLocaleChange());
-        } finally {
-            injectRestoreCallingIdentity(token);
+        synchronized (mLock) {
+            final long token = injectClearCallingIdentity();
+            try {
+                forEachLoadedUserLocked(user -> user.detectLocaleChange());
+            } finally {
+                injectRestoreCallingIdentity(token);
+            }
         }
     }
 
@@ -2394,18 +2489,17 @@
             // but we still check it in unit tests.
             final long token = injectClearCallingIdentity();
             try {
-
-                if (!mUserManager.isUserUnlocked(userId)) {
-                    if (DEBUG) {
-                        Slog.d(TAG, "Ignoring package broadcast " + action
-                                + " for locked/stopped user " + userId);
-                    }
-                    return;
-                }
-
-                // Whenever we get one of those package broadcasts, or get
-                // ACTION_PREFERRED_ACTIVITY_CHANGED, we purge the default launcher cache.
                 synchronized (mLock) {
+                    if (!isUserUnlockedL(userId)) {
+                        if (DEBUG) {
+                            Slog.d(TAG, "Ignoring package broadcast " + action
+                                    + " for locked/stopped user " + userId);
+                        }
+                        return;
+                    }
+
+                    // Whenever we get one of those package broadcasts, or get
+                    // ACTION_PREFERRED_ACTIVITY_CHANGED, we purge the default launcher cache.
                     final ShortcutUser user = getUserShortcutsLocked(userId);
                     user.clearLauncher();
                 }
@@ -2445,6 +2539,8 @@
                         handlePackageDataCleared(packageName, userId);
                         break;
                 }
+            } catch (Exception e) {
+                wtf("Exception in mPackageMonitor.onReceive", e);
             } finally {
                 injectRestoreCallingIdentity(token);
             }
@@ -2955,9 +3051,14 @@
             Slog.d(TAG, "Backing up user " + userId);
         }
         synchronized (mLock) {
+            if (!isUserUnlockedL(userId)) {
+                wtf("Can't backup: user " + userId + " is locked or not running");
+                return null;
+            }
+
             final ShortcutUser user = getUserShortcutsLocked(userId);
             if (user == null) {
-                Slog.w(TAG, "Can't backup: user not found: id=" + userId);
+                wtf("Can't backup: user not found: id=" + userId);
                 return null;
             }
 
@@ -2982,15 +3083,19 @@
         if (DEBUG) {
             Slog.d(TAG, "Restoring user " + userId);
         }
-        final ShortcutUser user;
-        final ByteArrayInputStream is = new ByteArrayInputStream(payload);
-        try {
-            user = loadUserInternal(userId, is, /* fromBackup */ true);
-        } catch (XmlPullParserException | IOException e) {
-            Slog.w(TAG, "Restoration failed.", e);
-            return;
-        }
         synchronized (mLock) {
+            if (!isUserUnlockedL(userId)) {
+                wtf("Can't restore: user " + userId + " is locked or not running");
+                return;
+            }
+            final ShortcutUser user;
+            final ByteArrayInputStream is = new ByteArrayInputStream(payload);
+            try {
+                user = loadUserInternal(userId, is, /* fromBackup */ true);
+            } catch (XmlPullParserException | IOException e) {
+                Slog.w(TAG, "Restoration failed.", e);
+                return;
+            }
             mUsers.put(userId, user);
 
             // Then purge all the save images.
@@ -3200,7 +3305,7 @@
 
         private int mUserId = UserHandle.USER_SYSTEM;
 
-        private void parseOptions(boolean takeUser)
+        private void parseOptionsLocked(boolean takeUser)
                 throws CommandException {
             String opt;
             while ((opt = getNextOption()) != null) {
@@ -3208,7 +3313,7 @@
                     case "--user":
                         if (takeUser) {
                             mUserId = UserHandle.parseUserArg(getNextArgRequired());
-                            if (!mUserManager.isUserUnlocked(mUserId)) {
+                            if (!isUserUnlockedL(mUserId)) {
                                 throw new CommandException(
                                         "User " + mUserId + " is not running or locked");
                             }
@@ -3300,11 +3405,13 @@
         }
 
         private void handleResetThrottling() throws CommandException {
-            parseOptions(/* takeUser =*/ true);
+            synchronized (mLock) {
+                parseOptionsLocked(/* takeUser =*/ true);
 
-            Slog.i(TAG, "cmd: handleResetThrottling: user=" + mUserId);
+                Slog.i(TAG, "cmd: handleResetThrottling: user=" + mUserId);
 
-            resetThrottlingInner(mUserId);
+                resetThrottlingInner(mUserId);
+            }
         }
 
         private void handleResetAllThrottling() {
@@ -3350,34 +3457,42 @@
         }
 
         private void handleClearDefaultLauncher() throws CommandException {
-            parseOptions(/* takeUser =*/ true);
+            synchronized (mLock) {
+                parseOptionsLocked(/* takeUser =*/ true);
 
-            clearLauncher();
+                clearLauncher();
+            }
         }
 
         private void handleGetDefaultLauncher() throws CommandException {
-            parseOptions(/* takeUser =*/ true);
+            synchronized (mLock) {
+                parseOptionsLocked(/* takeUser =*/ true);
 
-            clearLauncher();
-            showLauncher();
+                clearLauncher();
+                showLauncher();
+            }
         }
 
         private void handleUnloadUser() throws CommandException {
-            parseOptions(/* takeUser =*/ true);
+            synchronized (mLock) {
+                parseOptionsLocked(/* takeUser =*/ true);
 
-            Slog.i(TAG, "cmd: handleUnloadUser: user=" + mUserId);
+                Slog.i(TAG, "cmd: handleUnloadUser: user=" + mUserId);
 
-            ShortcutService.this.handleCleanupUser(mUserId);
+                ShortcutService.this.handleCleanupUser(mUserId);
+            }
         }
 
         private void handleClearShortcuts() throws CommandException {
-            parseOptions(/* takeUser =*/ true);
-            final String packageName = getNextArgRequired();
+            synchronized (mLock) {
+                parseOptionsLocked(/* takeUser =*/ true);
+                final String packageName = getNextArgRequired();
 
-            Slog.i(TAG, "cmd: handleClearShortcuts: user" + mUserId + ", " + packageName);
+                Slog.i(TAG, "cmd: handleClearShortcuts: user" + mUserId + ", " + packageName);
 
-            ShortcutService.this.cleanUpPackageForAllLoadedUsers(packageName, mUserId,
-                    /* appStillExists = */ true);
+                ShortcutService.this.cleanUpPackageForAllLoadedUsers(packageName, mUserId,
+                        /* appStillExists = */ true);
+            }
         }
 
         private void handleVerifyStates() throws CommandException {
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index 21e4165..ce3ed9c 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -57,7 +57,9 @@
 
     private static final String ATTR_VALUE = "value";
     private static final String ATTR_KNOWN_LOCALES = "locales";
-    private static final String ATTR_LAST_APP_SCAN_TIME = "last-app-scan-time";
+
+    // Suffix "2" was added to force rescan all packages after the next OTA.
+    private static final String ATTR_LAST_APP_SCAN_TIME = "last-app-scan-time2";
     private static final String KEY_USER_ID = "userId";
     private static final String KEY_LAUNCHERS = "launchers";
     private static final String KEY_PACKAGES = "packages";
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 68ccbdf..c9ad49a 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -555,7 +555,7 @@
     public List<UserInfo> getProfiles(int userId, boolean enabledOnly) {
         boolean returnFullInfo = true;
         if (userId != UserHandle.getCallingUserId()) {
-            checkManageUsersPermission("getting profiles related to user " + userId);
+            checkManageOrCreateUsersPermission("getting profiles related to user " + userId);
         } else {
             returnFullInfo = hasManageUsersPermission();
         }
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 490ff9e..e502764 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -6185,7 +6185,9 @@
                     return;
                 }
                 mPendingPanicGestureUptime = SystemClock.uptimeMillis();
-                mNavigationBarController.showTransient();
+                if (!isNavBarEmpty(mLastSystemUiFlags)) {
+                    mNavigationBarController.showTransient();
+                }
             }
         }
     };
@@ -6197,7 +6199,8 @@
                 return;
             }
             boolean sb = mStatusBarController.checkShowTransientBarLw();
-            boolean nb = mNavigationBarController.checkShowTransientBarLw();
+            boolean nb = mNavigationBarController.checkShowTransientBarLw()
+                    && !isNavBarEmpty(mLastSystemUiFlags);
             if (sb || nb) {
                 // Don't show status bar when swiping on already visible navigation bar
                 if (!nb && swipeTarget == mNavigationBar) {
@@ -7303,7 +7306,7 @@
 
     private boolean areSystemNavigationKeysEnabled() {
         return Settings.Secure.getInt(mContext.getContentResolver(),
-                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 1) == 1;
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0) == 1;
     }
 
     @Override
@@ -7550,7 +7553,9 @@
             // we're no longer on the Keyguard and the screen is ready. We can now request the bars.
             mPendingPanicGestureUptime = 0;
             mStatusBarController.showTransient();
-            mNavigationBarController.showTransient();
+            if (!isNavBarEmpty(vis)) {
+                mNavigationBarController.showTransient();
+            }
         }
 
         final boolean denyTransientStatus = mStatusBarController.isTransientShowRequested()
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
index 7e27558..bcae481 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
@@ -59,6 +59,7 @@
             showingAndNotOccluded = true;
             secure = true;
             deviceHasKeyguard = true;
+            currentUser = UserHandle.USER_NULL;
         }
         boolean showing;
         boolean showingAndNotOccluded;
@@ -157,6 +158,10 @@
             if (mKeyguardState.systemIsReady) {
                 // If the system is ready, it means keyguard crashed and restarted.
                 mKeyguardService.onSystemReady();
+                if (mKeyguardState.currentUser != UserHandle.USER_NULL) {
+                    // There has been a user switch earlier
+                    mKeyguardService.setCurrentUser(mKeyguardState.currentUser);
+                }
                 // This is used to hide the scrim once keyguard displays.
                 if (mKeyguardState.interactiveState == INTERACTIVE_STATE_AWAKE) {
                     mKeyguardService.onStartedWakingUp();
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 2215cbb..2824e6e 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -2085,7 +2085,12 @@
             float screenAutoBrightnessAdjustment = 0.0f;
             boolean autoBrightness = (mScreenBrightnessModeSetting ==
                     Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
-            if (isValidBrightness(mScreenBrightnessOverrideFromWindowManager)) {
+            if (!mBootCompleted) {
+                // Keep the brightness steady during boot. This requires the
+                // bootloader brightness and the default brightness to be identical.
+                autoBrightness = false;
+                brightnessSetByUser = false;
+            } else if (isValidBrightness(mScreenBrightnessOverrideFromWindowManager)) {
                 screenBrightness = mScreenBrightnessOverrideFromWindowManager;
                 autoBrightness = false;
                 brightnessSetByUser = false;
diff --git a/services/core/java/com/android/server/search/SearchManagerService.java b/services/core/java/com/android/server/search/SearchManagerService.java
index 2e5eb3a..f3b9b18 100644
--- a/services/core/java/com/android/server/search/SearchManagerService.java
+++ b/services/core/java/com/android/server/search/SearchManagerService.java
@@ -141,7 +141,12 @@
     }
 
     private void onUnlockUser(int userId) {
-        getSearchables(userId, true);
+        try {
+            getSearchables(userId, true);
+        } catch (IllegalStateException ignored) {
+            // We're just trying to warm a cache, so we don't mind if the user
+            // was stopped or destroyed before we got here.
+        }
     }
 
     private void onCleanupUser(int userId) {
diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java
index 7d20931..bba8667 100644
--- a/services/core/java/com/android/server/vr/VrManagerService.java
+++ b/services/core/java/com/android/server/vr/VrManagerService.java
@@ -46,6 +46,7 @@
 import android.service.vr.IVrManager;
 import android.service.vr.IVrStateCallbacks;
 import android.service.vr.VrListenerService;
+import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Slog;
@@ -643,7 +644,7 @@
 
         for (String c : current) {
             ComponentName component = ComponentName.unflattenFromString(c);
-            if (component.getPackageName().equals(pkg)) {
+            if (component != null && component.getPackageName().equals(pkg)) {
                 toRemove.add(c);
             }
         }
@@ -671,7 +672,9 @@
         if (flat != null) {
             String[] allowed = flat.split(":");
             for (String s : allowed) {
-                current.add(s);
+                if (!TextUtils.isEmpty(s)) {
+                    current.add(s);
+                }
             }
         }
         return current;
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 75f6120..74a6131 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -252,6 +252,7 @@
                             if (DEBUG) {
                                 Slog.v(TAG, "Wallpaper written; generating crop");
                             }
+                            SELinux.restorecon(changedFile);
                             if (moved) {
                                 // This is a restore, so generate the crop using any just-restored new
                                 // crop guidelines, making sure to preserve our local dimension hints.
@@ -259,7 +260,6 @@
                                 if (DEBUG) {
                                     Slog.v(TAG, "moved-to, therefore restore; reloading metadata");
                                 }
-                                SELinux.restorecon(changedFile);
                                 loadSettingsLocked(wallpaper.userId, true);
                             }
                             generateCrop(wallpaper);
@@ -353,8 +353,8 @@
                         (cropHint.bottom > options.outHeight ? options.outHeight - cropHint.bottom : 0));
 
                 // Don't bother cropping if what we're left with is identity
-                needCrop = (options.outHeight >= cropHint.height()
-                        && options.outWidth >= cropHint.width());
+                needCrop = (options.outHeight > cropHint.height()
+                        && options.outWidth > cropHint.width());
             }
 
             // scale if the crop height winds up not matching the recommended metrics
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index 8be5dfb..d2d5c28 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -1071,14 +1071,15 @@
                                 Region.Op.REVERSE_DIFFERENCE);
                     }
 
-                    // We figured out what is touchable for the entire screen - done.
-                    if (unaccountedSpace.isEmpty()) {
-                        break;
-                    }
-
                     // If a window is modal it prevents other windows from being touched
                     if ((flags & (WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                             | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)) == 0) {
+                        // Account for all space in the task, whether the windows in it are
+                        // touchable or not. The modal window blocks all touches from the task's
+                        // area.
+                        unaccountedSpace.op(windowState.getDisplayFrameLw(), unaccountedSpace,
+                                Region.Op.REVERSE_DIFFERENCE);
+
                         if (task != null) {
                             // If the window is associated with a particular task, we can skip the
                             // rest of the windows for that task.
@@ -1090,6 +1091,10 @@
                             break;
                         }
                     }
+                    // We figured out what is touchable for the entire screen - done.
+                    if (unaccountedSpace.isEmpty()) {
+                        break;
+                    }
                 }
 
                 // Always report the focused window.
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index eac72b0..a9624cf 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -337,6 +337,30 @@
         }
     }
 
+    void clearAnimatingFlags() {
+        for (int i = allAppWindows.size() - 1; i >= 0; i--) {
+            final WindowState win = allAppWindows.get(i);
+            // We don't want to clear it out for windows that get replaced, because the
+            // animation depends on the flag to remove the replaced window.
+            //
+            // We also don't clear the mAnimatingExit flag for windows which have the
+            // mRemoveOnExit flag. This indicates an explicit remove request has been issued
+            // by the client. We should let animation proceed and not clear this flag or
+            // they won't eventually be removed by WindowStateAnimator#finishExit.
+            if (!win.mWillReplaceWindow && !win.mRemoveOnExit) {
+                win.mAnimatingExit = false;
+                // Clear mAnimating flag together with mAnimatingExit. When animation
+                // changes from exiting to entering, we need to clear this flag until the
+                // new animation gets applied, so that isAnimationStarting() becomes true
+                // until then.
+                // Otherwise applySurfaceChangesTransaction will faill to skip surface
+                // placement for this window during this period, one or more frame will
+                // show up with wrong position or scale.
+                win.mWinAnimator.mAnimating = false;
+            }
+        }
+    }
+
     void destroySurfaces() {
         destroySurfaces(false /*cleanupOnResume*/);
     }
@@ -363,15 +387,6 @@
 
             win.mWinAnimator.destroyPreservedSurfaceLocked();
 
-            if (cleanupOnResume) {
-                // If the window has an unfinished exit animation, consider that animation
-                // done and mark the window destroying so that it goes through the cleanup.
-                if (win.mAnimatingExit) {
-                    win.mDestroying = true;
-                    win.mAnimatingExit = false;
-                }
-            }
-
             if (!win.mDestroying) {
                 continue;
             }
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 18f97a7..a976b36 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -246,7 +246,10 @@
 
     boolean updateWallpaperOffset(WindowState wallpaperWin, int dw, int dh, boolean sync) {
         boolean rawChanged = false;
-        float wpx = mLastWallpaperX >= 0 ? mLastWallpaperX : 0.5f;
+        // Set the default wallpaper x-offset to either edge of the screen (depending on RTL), to
+        // match the behavior of most Launchers
+        float defaultWallpaperX = wallpaperWin.isRtl() ? 1f : 0f;
+        float wpx = mLastWallpaperX >= 0 ? mLastWallpaperX : defaultWallpaperX;
         float wpxs = mLastWallpaperXStep >= 0 ? mLastWallpaperXStep : -1.0f;
         int availw = wallpaperWin.mFrame.right - wallpaperWin.mFrame.left - dw;
         int offset = availw > 0 ? -(int)(availw * wpx + .5f) : 0;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 8c5481d..6451c74 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -3081,6 +3081,9 @@
         if (oldVisibility == View.GONE) {
             winAnimator.mEnterAnimationPending = true;
         }
+
+        win.mLastVisibleLayoutRotation = mRotation;
+
         winAnimator.mEnteringAnimation = true;
         if ((result & WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME) != 0) {
             win.prepareWindowToDisplayDuringRelayout(outConfig);
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 25ad07e..a00ac5d 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -395,6 +395,13 @@
     boolean mOrientationChanging;
 
     /**
+     * The orientation during the last visible call to relayout. If our
+     * current orientation is different, the window can't be ready
+     * to be shown.
+     */
+    int mLastVisibleLayoutRotation = -1;
+
+    /**
      * How long we last kept the screen frozen.
      */
     int mLastFreezeDuration;
@@ -822,10 +829,10 @@
             final int height = Math.min(mFrame.height(), mContentFrame.height());
             final int width = Math.min(mContentFrame.width(), mFrame.width());
             final DisplayMetrics displayMetrics = getDisplayContent().getDisplayMetrics();
-            final int minVisibleHeight = WindowManagerService.dipToPixel(
-                    MINIMUM_VISIBLE_HEIGHT_IN_DP, displayMetrics);
-            final int minVisibleWidth = WindowManagerService.dipToPixel(
-                    MINIMUM_VISIBLE_WIDTH_IN_DP, displayMetrics);
+            final int minVisibleHeight = Math.min(height, WindowManagerService.dipToPixel(
+                    MINIMUM_VISIBLE_HEIGHT_IN_DP, displayMetrics));
+            final int minVisibleWidth = Math.min(width, WindowManagerService.dipToPixel(
+                    MINIMUM_VISIBLE_WIDTH_IN_DP, displayMetrics));
             final int top = Math.max(mContentFrame.top,
                     Math.min(mFrame.top, mContentFrame.bottom - minVisibleHeight));
             final int left = Math.max(mContentFrame.left + minVisibleWidth - width,
@@ -2095,6 +2102,7 @@
                 Slog.v(TAG, "Destroying saved surface: " + this);
             }
             mWinAnimator.destroySurfaceLocked();
+            mSurfaceSaved = false;
         }
         mWasVisibleBeforeClientHidden = false;
     }
@@ -2103,7 +2111,18 @@
         if (!mSurfaceSaved) {
             return;
         }
+
+        // Sometimes we save surfaces due to layout invisible
+        // directly after rotation occurs. However this means
+        // the surface was never laid out in the new orientation.
+        // We can only restore to the last rotation we were
+        // laid out as visible in.
+        if (mLastVisibleLayoutRotation != mService.mRotation) {
+            destroySavedSurface();
+            return;
+        }
         mSurfaceSaved = false;
+
         if (mWinAnimator.mSurfaceController != null) {
             setHasSurface(true);
             mWinAnimator.mDrawState = WindowStateAnimator.READY_TO_SHOW;
@@ -2920,4 +2939,8 @@
             return -1;
         }
     }
+
+    public boolean isRtl() {
+        return mMergedConfiguration.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+    }
 }
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index 0bd5eaf..ee4a9a4 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -1138,6 +1138,12 @@
                 if (wtoken == lowerWallpaperAppToken || wtoken == upperWallpaperAppToken) {
                     openingAppHasWallpaper = true;
                 }
+                // Clearing the mAnimatingExit flag before entering animation. It's set to
+                // true if app window is removed, or window relayout to invisible.
+                // This also affects window visibility. We need to clear it *before*
+                // maybeUpdateTransitToWallpaper() as the transition selection depends on
+                // wallpaper target visibility.
+                wtoken.clearAnimatingFlags();
             }
 
             voiceInteraction |= wtoken.voiceInteraction;
@@ -1262,26 +1268,6 @@
                 int layer = -1;
                 for (int j = 0; j < wtoken.allAppWindows.size(); j++) {
                     final WindowState win = wtoken.allAppWindows.get(j);
-                    // Clearing the mAnimatingExit flag before entering animation. It will be set to true
-                    // if app window is removed, or window relayout to invisible. We don't want to
-                    // clear it out for windows that get replaced, because the animation depends on
-                    // the flag to remove the replaced window.
-                    //
-                    // We also don't clear the mAnimatingExit flag for windows which have the
-                    // mRemoveOnExit flag. This indicates an explicit remove request has been issued
-                    // by the client. We should let animation proceed and not clear this flag or
-                    // they won't eventually be removed by WindowStateAnimator#finishExit.
-                    if (!win.mWillReplaceWindow && !win.mRemoveOnExit) {
-                        win.mAnimatingExit = false;
-                        // Clear mAnimating flag together with mAnimatingExit. When animation
-                        // changes from exiting to entering, we need to clear this flag until the
-                        // new animation gets applied, so that isAnimationStarting() becomes true
-                        // until then.
-                        // Otherwise applySurfaceChangesTransaction will faill to skip surface
-                        // placement for this window during this period, one or more frame will
-                        // show up with wrong position or scale.
-                        win.mWinAnimator.mAnimating = false;
-                    }
                     if (win.mWinAnimator.mAnimLayer > layer) {
                         layer = win.mWinAnimator.mAnimLayer;
                     }
diff --git a/services/net/java/android/net/apf/ApfFilter.java b/services/net/java/android/net/apf/ApfFilter.java
index 0f812ac..4bb0902 100644
--- a/services/net/java/android/net/apf/ApfFilter.java
+++ b/services/net/java/android/net/apf/ApfFilter.java
@@ -192,6 +192,7 @@
 
     private static final int ICMP6_TYPE_OFFSET = ETH_HEADER_LEN + IPV6_HEADER_LEN;
     private static final int ICMP6_NEIGHBOR_ANNOUNCEMENT = 136;
+    private static final int ICMP6_ROUTER_ADVERTISEMENT = 134;
 
     // NOTE: this must be added to the IPv4 header length in IPV4_HEADER_SIZE_MEMORY_SLOT
     private static final int UDP_DESTINATION_PORT_OFFSET = ETH_HEADER_LEN + 2;
@@ -452,6 +453,16 @@
         Ra(byte[] packet, int length) {
             mPacket = ByteBuffer.wrap(Arrays.copyOf(packet, length));
             mLastSeen = curTime();
+
+            // Sanity check packet in case a packet arrives before we attach RA filter
+            // to our packet socket. b/29586253
+            if (getUint16(mPacket, ETH_ETHERTYPE_OFFSET) != ETH_P_IPV6 ||
+                    uint8(mPacket.get(IPV6_NEXT_HEADER_OFFSET)) != IPPROTO_ICMPV6 ||
+                    uint8(mPacket.get(ICMP6_TYPE_OFFSET)) != ICMP6_ROUTER_ADVERTISEMENT) {
+                throw new IllegalArgumentException("Not an ICMP6 router advertisement");
+            }
+
+
             RaEvent.Builder builder = new RaEvent.Builder();
 
             // Ignore the checksum.
diff --git a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
index 407d315..1a9d2f2 100644
--- a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
+++ b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
@@ -45,7 +45,9 @@
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -109,6 +111,11 @@
     private final byte[] mRA = new byte[IPV6_MIN_MTU];
     @GuardedBy("mLock")
     private int mRaLength;
+    @GuardedBy("mLock")
+    private final HashMap<IpPrefix, Integer> mDeprecatedPrefixes;
+
+    @GuardedBy("mLock")
+    private RaParams mRaParams;
 
     private volatile FileDescriptor mSocket;
     private volatile MulticastTransmitter mMulticastTransmitter;
@@ -141,45 +148,29 @@
         mIfIndex = ifindex;
         mHwAddr = hwaddr;
         mAllNodes = new InetSocketAddress(getAllNodesForScopeId(mIfIndex), 0);
+        mDeprecatedPrefixes = new HashMap<>();
     }
 
-    public void buildNewRa(RaParams params) {
+    public void buildNewRa(RaParams params, HashSet<IpPrefix> newlyDeprecated) {
+        if (newlyDeprecated != null) {
+            synchronized (mLock) {
+                for (IpPrefix ipp : newlyDeprecated) {
+                    mDeprecatedPrefixes.put(ipp, MAX_URGENT_RTR_ADVERTISEMENTS);
+                }
+            }
+        }
+
+        // TODO: Send MAX_URGENT_RTR_ADVERTISEMENTS zero router lifetime RAs,
+        // iff. we have already sent an RA.
         if (params == null || params.prefixes.isEmpty()) {
             // No RA to be served at this time.
             clearRa();
             return;
         }
 
-        if (params.mtu < IPV6_MIN_MTU) {
-            params.mtu = IPV6_MIN_MTU;
-        }
-
-        final ByteBuffer ra = ByteBuffer.wrap(mRA);
-        ra.order(ByteOrder.BIG_ENDIAN);
-
         synchronized (mLock) {
-            try {
-                putHeader(ra, params.hasDefaultRoute);
-                putSlla(ra, mHwAddr);
-                // https://tools.ietf.org/html/rfc5175#section-4 says:
-                //
-                //     "MUST NOT be added to a Router Advertisement message
-                //      if no flags in the option are set."
-                //
-                // putExpandedFlagsOption(ra);
-                putMtu(ra, params.mtu);
-                for (IpPrefix ipp : params.prefixes) {
-                    putPio(ra, ipp);
-                }
-                if (params.dnses.size() > 0) {
-                    putRdnss(ra, params.dnses);
-                }
-                mRaLength = ra.position();
-            } catch (BufferOverflowException e) {
-                Log.e(TAG, "Could not construct new RA: " + e);
-                mRaLength = 0;
-                return;
-            }
+            mRaParams = params;
+            assembleRa();
         }
 
         maybeNotifyMulticastTransmitter();
@@ -216,6 +207,64 @@
         }
     }
 
+    private void assembleRa() {
+        final ByteBuffer ra = ByteBuffer.wrap(mRA);
+        ra.order(ByteOrder.BIG_ENDIAN);
+
+        synchronized (mLock) {
+            try {
+                putHeader(ra, mRaParams.hasDefaultRoute);
+
+                putSlla(ra, mHwAddr);
+
+                // https://tools.ietf.org/html/rfc5175#section-4 says:
+                //
+                //     "MUST NOT be added to a Router Advertisement message
+                //      if no flags in the option are set."
+                //
+                // putExpandedFlagsOption(ra);
+
+                putMtu(ra, mRaParams.mtu);
+
+                for (IpPrefix ipp : mRaParams.prefixes) {
+                    putPio(ra, ipp, DEFAULT_LIFETIME, DEFAULT_LIFETIME);
+                    mDeprecatedPrefixes.remove(ipp);
+                }
+
+                for (IpPrefix ipp : mDeprecatedPrefixes.keySet()) {
+                    putPio(ra, ipp, 0, 0);
+                }
+
+                if (mRaParams.dnses.size() > 0) {
+                    putRdnss(ra, mRaParams.dnses);
+                }
+
+                mRaLength = ra.position();
+            } catch (BufferOverflowException e) {
+                Log.e(TAG, "Could not construct new RA: " + e);
+                mRaLength = 0;
+                return;
+            }
+        }
+    }
+
+    private int decrementDeprecatedPrefixes() {
+        int removed = 0;
+
+        synchronized (mLock) {
+            for (Map.Entry<IpPrefix, Integer> kv : mDeprecatedPrefixes.entrySet()) {
+                if (kv.getValue() == 0) {
+                    mDeprecatedPrefixes.remove(kv.getKey());
+                    removed++;
+                } else {
+                    kv.setValue(kv.getValue() - 1);
+                }
+            }
+        }
+
+        return removed;
+    }
+
     private void maybeNotifyMulticastTransmitter() {
         final MulticastTransmitter m = mMulticastTransmitter;
         if (m != null) {
@@ -325,10 +374,11 @@
         ra.put(ND_OPTION_MTU)
           .put(MTU_NUM_8OCTETS)
           .putShort(asShort(0))
-          .putInt(mtu);
+          .putInt((mtu < IPV6_MIN_MTU) ? IPV6_MIN_MTU : mtu);
     }
 
-    private static void putPio(ByteBuffer ra, IpPrefix ipp) {
+    private static void putPio(ByteBuffer ra, IpPrefix ipp,
+                               int validTime, int preferredTime) {
         /**
             Prefix Information
 
@@ -359,13 +409,17 @@
         final byte ND_OPTION_PIO = 3;
         final byte PIO_NUM_8OCTETS = 4;
 
+        if (validTime < 0) validTime = 0;
+        if (preferredTime < 0) preferredTime = 0;
+        if (preferredTime > validTime) preferredTime = validTime;
+
         final byte[] addr = ipp.getAddress().getAddress();
         ra.put(ND_OPTION_PIO)
           .put(PIO_NUM_8OCTETS)
           .put(asByte(prefixLength))
-          .put(asByte(0xc0))  // L&A set
-          .putInt(DEFAULT_LIFETIME)
-          .putInt(DEFAULT_LIFETIME)
+          .put(asByte(0xc0)) /* L & A set */
+          .putInt(validTime)
+          .putInt(preferredTime)
           .putInt(0)
           .put(addr);
     }
@@ -547,6 +601,11 @@
                 }
 
                 maybeSendRA(mAllNodes);
+                if (decrementDeprecatedPrefixes() > 0) {
+                    // At least one deprecated PIO has been removed;
+                    // reassemble the RA.
+                    assembleRa();
+                }
             }
         }
 
@@ -560,15 +619,17 @@
         }
 
         private int getNextMulticastTransmitDelaySec() {
+            int countDeprecatedPrefixes = 0;
             synchronized (mLock) {
                 if (mRaLength < MIN_RA_HEADER_SIZE) {
                     // No actual RA to send; just sleep for 1 day.
                     return DAY_IN_SECONDS;
                 }
+                countDeprecatedPrefixes = mDeprecatedPrefixes.size();
             }
 
             final int urgentPending = mUrgentAnnouncements.getAndDecrement();
-            if (urgentPending > 0) {
+            if (urgentPending > 0 || countDeprecatedPrefixes > 0) {
                 return MIN_DELAY_BETWEEN_RAS_SEC;
             }
 
diff --git a/services/retaildemo/java/com/android/server/retaildemo/PreloadAppsInstaller.java b/services/retaildemo/java/com/android/server/retaildemo/PreloadAppsInstaller.java
index 8480170..7a3b461 100644
--- a/services/retaildemo/java/com/android/server/retaildemo/PreloadAppsInstaller.java
+++ b/services/retaildemo/java/com/android/server/retaildemo/PreloadAppsInstaller.java
@@ -18,12 +18,14 @@
 
 import android.app.AppGlobals;
 import android.app.PackageInstallObserver;
+import android.content.Context;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.RemoteException;
 import android.os.UserHandle;
+import android.provider.Settings;
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.Slog;
@@ -47,15 +49,17 @@
 
     private final IPackageManager mPackageManager;
     private final File preloadsAppsDirectory;
+    private final Context mContext;
 
     private final Map<String, String> mApkToPackageMap;
 
-    PreloadAppsInstaller() {
-        this(AppGlobals.getPackageManager(), Environment.getDataPreloadsAppsDirectory());
+    PreloadAppsInstaller(Context context) {
+        this(context, AppGlobals.getPackageManager(), Environment.getDataPreloadsAppsDirectory());
     }
 
     @VisibleForTesting
-    PreloadAppsInstaller(IPackageManager packageManager, File preloadsAppsDirectory) {
+    PreloadAppsInstaller(Context context, IPackageManager packageManager, File preloadsAppsDirectory) {
+        mContext = context;
         mPackageManager = packageManager;
         mApkToPackageMap = Collections.synchronizedMap(new ArrayMap<>());
         this.preloadsAppsDirectory = preloadsAppsDirectory;
@@ -66,28 +70,34 @@
         if (ArrayUtils.isEmpty(files)) {
             return;
         }
+        AppInstallCounter counter = new AppInstallCounter(mContext, userId);
+        int expectedCount = 0;
         for (File file : files) {
             String apkName = file.getName();
             if (apkName.endsWith(PRELOAD_APK_EXT) && file.isFile()) {
                 String packageName = mApkToPackageMap.get(apkName);
                 if (packageName != null) {
                     try {
-                        installExistingPackage(packageName, userId);
+                        expectedCount++;
+                        installExistingPackage(packageName, userId, counter);
                     } catch (Exception e) {
                         Slog.e(TAG, "Failed to install existing package " + packageName, e);
                     }
                 } else {
                     try {
-                        installPackage(file, userId);
+                        installPackage(file, userId, counter);
+                        expectedCount++;
                     } catch (Exception e) {
                         Slog.e(TAG, "Failed to install package from " + file, e);
                     }
                 }
             }
         }
+        counter.setExpectedAppsCount(expectedCount);
     }
 
-    private void installExistingPackage(String packageName, int userId) {
+    private void installExistingPackage(String packageName, int userId,
+            AppInstallCounter counter) {
         if (DEBUG) {
             Log.d(TAG, "installExistingPackage " + packageName + " u" + userId);
         }
@@ -95,10 +105,13 @@
             mPackageManager.installExistingPackageAsUser(packageName, userId);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
+        } finally {
+            counter.appInstallFinished();
         }
     }
 
-    private void installPackage(File file, final int userId) throws IOException, RemoteException {
+    private void installPackage(File file, final int userId, AppInstallCounter counter)
+            throws IOException, RemoteException {
         final String apkName = file.getName();
         if (DEBUG) {
             Log.d(TAG, "installPackage " + apkName + " u" + userId);
@@ -111,15 +124,49 @@
                     Log.d(TAG, "Package " + basePackageName + " installed u" + userId
                             + " returnCode: " + returnCode + " msg: " + msg);
                 }
+                // Don't notify the counter for now, we'll do it in installExistingPackage
                 if (returnCode == PackageManager.INSTALL_SUCCEEDED) {
                     mApkToPackageMap.put(apkName, basePackageName);
                     // Install on user 0 so that the package is cached when demo user is re-created
-                    installExistingPackage(basePackageName, UserHandle.USER_SYSTEM);
+                    installExistingPackage(basePackageName, UserHandle.USER_SYSTEM, counter);
                 } else if (returnCode == PackageManager.INSTALL_FAILED_ALREADY_EXISTS) {
-                    installExistingPackage(basePackageName, userId);
+                    // This can only happen in first session after a reboot
+                    if (!mApkToPackageMap.containsKey(apkName)) {
+                        mApkToPackageMap.put(apkName, basePackageName);
+                    }
+                    installExistingPackage(basePackageName, userId, counter);
                 }
             }
         }.getBinder(), 0, SYSTEM_SERVER_PACKAGE_NAME, userId);
     }
 
+    private static class AppInstallCounter {
+        private int expectedCount = -1; // -1 means expectedCount not set
+        private int finishedCount;
+        private final Context mContext;
+        private final int userId;
+
+        AppInstallCounter(Context context, int userId) {
+            mContext = context;
+            this.userId = userId;
+        }
+
+        synchronized void appInstallFinished() {
+            this.finishedCount++;
+            checkIfAllFinished();
+        }
+
+        synchronized void setExpectedAppsCount(int expectedCount) {
+            this.expectedCount = expectedCount;
+            checkIfAllFinished();
+        }
+
+        private void checkIfAllFinished() {
+            if (expectedCount == finishedCount) {
+                Log.i(TAG, "All preloads finished installing for user " + userId);
+                Settings.Secure.putStringForUser(mContext.getContentResolver(),
+                        Settings.Secure.DEMO_USER_SETUP_COMPLETE, "1", userId);
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java b/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java
index 1a60592..8d5971f 100644
--- a/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java
+++ b/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java
@@ -224,8 +224,7 @@
             if (mDeviceDemoModeUri.equals(uri)) {
                 mDeviceInDemoMode = UserManager.isDeviceInDemoMode(getContext());
                 if (mDeviceInDemoMode) {
-                    SystemProperties.set(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "1");
-                    mHandler.sendEmptyMessage(MSG_START_NEW_SESSION);
+                    putDeviceInDemoMode();
                 } else {
                     SystemProperties.set(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "0");
                     if (mWakeLock.isHeld()) {
@@ -287,7 +286,6 @@
         synchronized (mActivityLock) {
             mFirstUserActivityTime = mLastUserActivityTime = SystemClock.uptimeMillis();
         }
-        mPreloadAppsInstaller = new PreloadAppsInstaller();
     }
 
     private Notification createResetNotification() {
@@ -465,6 +463,11 @@
         return mSystemUserConfiguration;
     }
 
+    private void putDeviceInDemoMode() {
+        SystemProperties.set(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "1");
+        mHandler.sendEmptyMessage(MSG_START_NEW_SESSION);
+    }
+
     @Override
     public void onStart() {
         if (DEBUG) {
@@ -479,26 +482,31 @@
 
     @Override
     public void onBootPhase(int bootPhase) {
-        if (bootPhase != PHASE_THIRD_PARTY_APPS_CAN_START) {
-            return;
+        switch (bootPhase) {
+            case PHASE_THIRD_PARTY_APPS_CAN_START:
+                mPreloadAppsInstaller = new PreloadAppsInstaller(getContext());
+                mPm = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
+                mAmi = LocalServices.getService(ActivityManagerInternal.class);
+                mWakeLock = mPm
+                        .newWakeLock(
+                                PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,
+                                TAG);
+                mNm = NotificationManager.from(getContext());
+                mCameraManager = (CameraManager) getContext()
+                        .getSystemService(Context.CAMERA_SERVICE);
+                mCameraIdsWithFlash = getCameraIdsWithFlash();
+                SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+                settingsObserver.register();
+                settingsObserver.refreshTimeoutConstants();
+                registerBroadcastReceiver();
+                break;
+            case PHASE_BOOT_COMPLETED:
+                if (UserManager.isDeviceInDemoMode(getContext())) {
+                    mDeviceInDemoMode = true;
+                    putDeviceInDemoMode();
+                }
+                break;
         }
-        mPm = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
-        mAmi = LocalServices.getService(ActivityManagerInternal.class);
-        mWakeLock = mPm
-                .newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
-        mNm = NotificationManager.from(getContext());
-        mCameraManager = (CameraManager) getContext().getSystemService(Context.CAMERA_SERVICE);
-        mCameraIdsWithFlash = getCameraIdsWithFlash();
-
-        if (UserManager.isDeviceInDemoMode(getContext())) {
-            mDeviceInDemoMode = true;
-            SystemProperties.set(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "1");
-            mHandler.sendEmptyMessage(MSG_START_NEW_SESSION);
-        }
-        SettingsObserver settingsObserver = new SettingsObserver(mHandler);
-        settingsObserver.register();
-        settingsObserver.refreshTimeoutConstants();
-        registerBroadcastReceiver();
     }
 
     @Override
diff --git a/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java b/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java
index f2a9315..59ccbd9 100644
--- a/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java
@@ -51,6 +51,7 @@
 import android.net.NetworkMisc;
 import android.net.NetworkRequest;
 import android.net.RouteInfo;
+import android.net.metrics.IpConnectivityLog;
 import android.os.ConditionVariable;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -585,8 +586,9 @@
         public String gen204ProbeRedirectUrl = null;
 
         public WrappedNetworkMonitor(Context context, Handler handler,
-            NetworkAgentInfo networkAgentInfo, NetworkRequest defaultRequest) {
-            super(context, handler, networkAgentInfo, defaultRequest);
+                NetworkAgentInfo networkAgentInfo, NetworkRequest defaultRequest,
+                IpConnectivityLog log) {
+            super(context, handler, networkAgentInfo, defaultRequest, log);
         }
 
         @Override
@@ -599,8 +601,9 @@
         private WrappedNetworkMonitor mLastCreatedNetworkMonitor;
 
         public WrappedConnectivityService(Context context, INetworkManagementService netManager,
-                INetworkStatsService statsService, INetworkPolicyManager policyManager) {
-            super(context, netManager, statsService, policyManager);
+                INetworkStatsService statsService, INetworkPolicyManager policyManager,
+                IpConnectivityLog log) {
+            super(context, netManager, statsService, policyManager, log);
             mLingerDelayMs = TEST_LINGER_DELAY_MS;
         }
 
@@ -639,8 +642,8 @@
         @Override
         public NetworkMonitor createNetworkMonitor(Context context, Handler handler,
                 NetworkAgentInfo nai, NetworkRequest defaultRequest) {
-            final WrappedNetworkMonitor monitor = new WrappedNetworkMonitor(context, handler, nai,
-                    defaultRequest);
+            final WrappedNetworkMonitor monitor = new WrappedNetworkMonitor(
+                    context, handler, nai, defaultRequest, mock(IpConnectivityLog.class));
             mLastCreatedNetworkMonitor = monitor;
             return monitor;
         }
@@ -705,7 +708,8 @@
         mService = new WrappedConnectivityService(mServiceContext,
                 mock(INetworkManagementService.class),
                 mock(INetworkStatsService.class),
-                mock(INetworkPolicyManager.class));
+                mock(INetworkPolicyManager.class),
+                mock(IpConnectivityLog.class));
 
         mService.systemReady();
         mCm = new WrappedConnectivityManager(getContext(), mService);
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index ecebbc4..d003e56 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -246,6 +246,20 @@
         }
 
         @Override
+        protected boolean isUserUnlockedL(@UserIdInt int userId) {
+            // Note due to a late change, now ShortcutManager doesn't use
+            // UserManager.isUserUnlockingOrUnlocked().  But all unit tests are still using it,
+            // so we convert here.
+
+            final long token = injectClearCallingIdentity();
+            try {
+                return mMockUserManager.isUserUnlockingOrUnlocked(userId);
+            } finally {
+                injectRestoreCallingIdentity(token);
+            }
+        }
+
+        @Override
         int injectDipToPixel(int dip) {
             return dip;
         }
@@ -687,19 +701,25 @@
 
         // Set up isUserRunning and isUserUnlocked.
         when(mMockUserManager.isUserRunning(anyInt())).thenAnswer(new AnswerWithSystemCheck<>(
-                        inv -> mRunningUsers.get((Integer) inv.getArguments()[0])));
+                        inv -> b(mRunningUsers.get((Integer) inv.getArguments()[0]))));
 
-        when(mMockUserManager.isUserUnlocked(anyInt())).thenAnswer(new AnswerWithSystemCheck<>(
-                        inv -> {
-                            final int userId = (Integer) inv.getArguments()[0];
-                            return mRunningUsers.get(userId) && mUnlockedUsers.get(userId);
-                        }));
+        when(mMockUserManager.isUserUnlocked(anyInt()))
+                .thenAnswer(new AnswerWithSystemCheck<>(inv -> {
+                    final int userId = (Integer) inv.getArguments()[0];
+                    return b(mRunningUsers.get(userId)) && b(mUnlockedUsers.get(userId));
+                }));
+        // isUserUnlockingOrUnlocked() return the same value as isUserUnlocked().
+        when(mMockUserManager.isUserUnlockingOrUnlocked(anyInt()))
+                .thenAnswer(new AnswerWithSystemCheck<>(inv -> {
+                    final int userId = (Integer) inv.getArguments()[0];
+                    return b(mRunningUsers.get(userId)) && b(mUnlockedUsers.get(userId));
+                }));
 
-        // User 0 is always running
+        // User 0 and P0 are always running
         mRunningUsers.put(USER_0, true);
         mRunningUsers.put(USER_10, false);
         mRunningUsers.put(USER_11, false);
-        mRunningUsers.put(USER_P0, false);
+        mRunningUsers.put(USER_P0, true);
 
         // Unlock all users by default.
         mUnlockedUsers.put(USER_0, true);
@@ -715,6 +735,10 @@
         setCaller(CALLING_PACKAGE_1);
     }
 
+    private static boolean b(Boolean value) {
+        return (value != null && value);
+    }
+
     /**
      * Returns a boolean but also checks if the current UID is SYSTEM_UID.
      */
@@ -1726,6 +1750,8 @@
     }
 
     protected void prepareCrossProfileDataSet() {
+        mRunningUsers.put(USER_10, true); // this test needs user 10.
+
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
             assertTrue(mManager.setDynamicShortcuts(list(
                     makeShortcut("s1"), makeShortcut("s2"), makeShortcut("s3"),
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
index c0752e0..b1c0ed4 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
@@ -294,6 +294,8 @@
 
         // TODO Check max number
 
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
             assertTrue(mManager.setDynamicShortcuts(list(makeShortcut("s1"))));
         });
@@ -340,6 +342,8 @@
 
         // TODO Check fields.
 
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
             assertTrue(mManager.addDynamicShortcuts(list(makeShortcut("s1"))));
         });
@@ -348,6 +352,8 @@
     public void testPublishWithNoActivity() {
         // If activity is not explicitly set, use the default one.
 
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
             // s1 and s3 has no activities.
             final ShortcutInfo si1 = new ShortcutInfo.Builder(mClientContext, "si1")
@@ -450,6 +456,8 @@
     }
 
     public void testPublishWithNoActivity_noMainActivityInPackage() {
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
             final ShortcutInfo si1 = new ShortcutInfo.Builder(mClientContext, "si1")
                     .setShortLabel("label1")
@@ -722,6 +730,8 @@
         });
 
         // For USER-10, let's try without updating the times.
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             mManager.setDynamicShortcuts(list(
                     makeShortcutWithIcon("10s1", bmp32x32),
@@ -1071,6 +1081,8 @@
 
         // TODO Check bitmap removal too.
 
+        mRunningUsers.put(USER_11, true);
+
         runWithCaller(CALLING_PACKAGE_2, USER_11, () -> {
             mManager.updateShortcuts(list());
         });
@@ -2048,6 +2060,9 @@
             assertTrue(mManager.setDynamicShortcuts(list(
                     makeShortcut("s1"), makeShortcut("s2"), makeShortcut("s3"))));
         });
+
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             assertTrue(mManager.setDynamicShortcuts(list(
                     makeShortcut("s1"), makeShortcut("s2"), makeShortcut("s3"),
@@ -2769,6 +2784,8 @@
                 .areAllWithKeyFieldsOnly()
                 .areAllDynamic();
 
+        mRunningUsers.put(USER_10, true);
+
         // Different user, callback shouldn't be called.
         assertForLauncherCallback(mLauncherApps, () -> {
             runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -2980,27 +2997,7 @@
         assertCallbackReceived(cP0_1, HANDLE_USER_0, CALLING_PACKAGE_3,
                 "s1", "s2", "s3", "s4", "s5", "s6");
 
-        // Work profile, but not running, so don't send notifications.
-
-        resetAll(all);
-        runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
-            mManager.removeDynamicShortcuts(list());
-        });
-        waitOnMainThread();
-
-        assertCallbackNotReceived(c0_1);
-        assertCallbackNotReceived(c0_2);
-        assertCallbackNotReceived(c0_3);
-        assertCallbackNotReceived(c0_4);
-        assertCallbackNotReceived(cP0_1);
-        assertCallbackNotReceived(c10_1);
-        assertCallbackNotReceived(c10_2);
-        assertCallbackNotReceived(c11_1);
-
-        // Work profile, now running.
-        mRunningUsers.clear();
-        mRunningUsers.put(USER_P0, true);
-
+        // Work profile.
         resetAll(all);
         runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
             mManager.removeDynamicShortcuts(list());
@@ -3017,7 +3014,6 @@
         assertCallbackReceived(cP0_1, HANDLE_USER_P0, CALLING_PACKAGE_1, "s1", "s2", "s3", "s4");
 
         // Normal secondary user.
-        mRunningUsers.clear();
         mRunningUsers.put(USER_10, true);
 
         resetAll(all);
@@ -3112,6 +3108,9 @@
             assertEquals(START_TIME + INTERVAL, mManager.getRateLimitResetTime());
             assertEquals(2, mManager.getRemainingCallCount());
         });
+
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             final Icon icon1 = Icon.createWithResource(getTestContext(), R.drawable.black_64x64);
             final Icon icon2 = Icon.createWithBitmap(BitmapFactory.decodeResource(
@@ -3223,6 +3222,8 @@
                     HANDLE_USER_0);
         });
 
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             assertTrue(mManager.setDynamicShortcuts(list(
                     makeShortcut("s10_1"))));
@@ -3558,6 +3559,9 @@
             assertTrue(mManager.setDynamicShortcuts(list(
                     makeShortcut("s1"), makeShortcut("s2"), makeShortcut("s3"))));
         });
+
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             assertTrue(mManager.setDynamicShortcuts(list(
                     makeShortcut("s1"), makeShortcut("s2"), makeShortcut("s3"))));
@@ -3876,6 +3880,8 @@
         setCaller(CALLING_PACKAGE_3, USER_0);
         assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
 
+        mRunningUsers.put(USER_10, true);
+
         setCaller(CALLING_PACKAGE_1, USER_10);
         assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
 
@@ -3988,6 +3994,8 @@
         setCaller(CALLING_PACKAGE_3, USER_0);
         assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
 
+        mRunningUsers.put(USER_10, true);
+
         setCaller(CALLING_PACKAGE_1, USER_10);
         assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
 
@@ -4114,6 +4122,8 @@
                     makeShortcutWithIcon("s1", res32x32))));
         });
 
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             assertTrue(mManager.setDynamicShortcuts(list(
                     makeShortcutWithIcon("s1", res32x32),
@@ -5441,6 +5451,8 @@
         });
 
         // Try on another user, with some packages uninstalled.
+        mRunningUsers.put(USER_10, true);
+
         uninstallPackage(USER_10, CALLING_PACKAGE_1);
         uninstallPackage(USER_10, CALLING_PACKAGE_3);
 
@@ -5621,6 +5633,8 @@
         uninstallPackage(USER_10, CALLING_PACKAGE_4);
 
         mService.handleUnlockUser(USER_0);
+
+        mRunningUsers.put(USER_10, true);
         mService.handleUnlockUser(USER_10);
 
         // Originally no manifest shortcuts.
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
index 54b2a15..ad5bc77 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
@@ -851,6 +851,8 @@
     }
 
     public void testShortcutInfoSaveAndLoad() throws InterruptedException {
+        mRunningUsers.put(USER_10, true);
+
         setCaller(CALLING_PACKAGE_1, USER_10);
 
         final Icon bmp32x32 = Icon.createWithBitmap(BitmapFactory.decodeResource(
@@ -930,6 +932,8 @@
     }
 
     public void testShortcutInfoSaveAndLoad_resId() throws InterruptedException {
+        mRunningUsers.put(USER_10, true);
+
         setCaller(CALLING_PACKAGE_1, USER_10);
 
         final Icon res32x32 = Icon.createWithResource(mClientContext, R.drawable.black_32x32);
@@ -1794,6 +1798,8 @@
     }
 
     public void testReportShortcutUsed() {
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             reset(mMockUsageStatsManagerInternal);
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java
index 5f24637..ba4dbc1 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java
@@ -183,6 +183,8 @@
     }
 
     public void testHasShortcutHostPermissionInner_multiUser() {
+        mRunningUsers.put(USER_10, true);
+
         prepareGetHomeActivitiesAsUser(
                 /* preferred */ null,
                 list(getSystemLauncher(), getFallbackLauncher()),
@@ -220,6 +222,8 @@
     }
 
     public void testHasShortcutHostPermissionInner_clearCache() {
+        mRunningUsers.put(USER_10, true);
+
         prepareGetHomeActivitiesAsUser(
                 /* preferred */ null,
                 list(getSystemLauncher(), getFallbackLauncher()),
@@ -242,12 +246,18 @@
         assertEquals(cn(CALLING_PACKAGE_2, "name"),
                 mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
 
+        // Test it on a non-running user.
         // Send ACTION_PREFERRED_ACTIVITY_CHANGED on user 10.
         // But the user is not running, so will be ignored.
+        mRunningUsers.put(USER_10, false);
+
         mService.mPackageMonitor.onReceive(mServiceContext,
                 new Intent(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED).putExtra(
                         Intent.EXTRA_USER_HANDLE, USER_10));
 
+        // Need to run the user again to access the internal status.
+        mRunningUsers.put(USER_10, true);
+
         assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
                 mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest7.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest7.java
index f9ff514..3c99174 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest7.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest7.java
@@ -151,10 +151,14 @@
 
         mInjectedCallingUid = Process.SHELL_UID;
 
+        mRunningUsers.put(USER_10, false);
+
         assertTrue(resultContains(
                 callShellCommand("reset-throttling", "--user", "10"),
                 "User 10 is not running or locked"));
 
+        mRunningUsers.put(USER_10, true);
+
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
             assertTrue(mManager.getRemainingCallCount() < 3);
         });
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 5d29363..78f95c4 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
@@ -55,6 +55,8 @@
 import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
@@ -86,7 +88,7 @@
 public class ShortcutManagerTestUtils {
     private static final String TAG = "ShortcutManagerUtils";
 
-    private static final boolean ENABLE_DUMPSYS = false; // DO NOT SUBMIT WITH true
+    private static final boolean ENABLE_DUMPSYS = true; // DO NOT SUBMIT WITH true
 
     private static final int STANDARD_TIMEOUT_SEC = 5;
 
@@ -233,6 +235,29 @@
                 + " --user " + userId + " " + packageName);
     }
 
+    public static void anyContains(List<String> result, String expected) {
+        for (String l : result) {
+            if (l.contains(expected)) {
+                return;
+            }
+        }
+        fail("Result didn't contain '" + expected + "': was\n" + result);
+    }
+
+    public static void enableComponent(Instrumentation instrumentation, ComponentName cn,
+            boolean enable) {
+
+        final String word = (enable ? "enable" : "disable");
+        runCommand(instrumentation,
+                "pm " + word + " " + cn.flattenToString()
+                , result ->concatResult(result).contains(word));
+    }
+
+    public static void appOps(Instrumentation instrumentation, String packageName,
+            String op, String mode) {
+        runCommand(instrumentation, "appops set " + packageName + " " + op + " " + mode);
+    }
+
     public static void dumpsysShortcut(Instrumentation instrumentation) {
         if (!ENABLE_DUMPSYS) {
             return;
@@ -243,6 +268,18 @@
         }
     }
 
+    public static JSONObject getCheckinDump(Instrumentation instrumentation) throws JSONException {
+        return new JSONObject(concatResult(runCommand(instrumentation, "dumpsys shortcut -c")));
+    }
+
+    public static boolean isLowRamDevice(Instrumentation instrumentation) throws JSONException {
+        return getCheckinDump(instrumentation).getBoolean("lowRam");
+    }
+
+    public static int getIconSize(Instrumentation instrumentation) throws JSONException {
+        return getCheckinDump(instrumentation).getInt("iconSize");
+    }
+
     public static Bundle makeBundle(Object... keysAndValues) {
         assertTrue((keysAndValues.length % 2) == 0);
 
@@ -1014,4 +1051,18 @@
 
         return asserter;
     }
+
+    public static void retryUntil(BooleanSupplier checker, String message) {
+        final long timeOut = System.currentTimeMillis() + 30 * 1000; // wait for 30 seconds.
+        while (!checker.getAsBoolean()) {
+            if (System.currentTimeMillis() > timeOut) {
+                break;
+            }
+            try {
+                Thread.sleep(200);
+            } catch (InterruptedException ignore) {
+            }
+        }
+        assertTrue(message, checker.getAsBoolean());
+    }
 }
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index ee055f4..4da5ff2 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -514,67 +514,87 @@
      * @return A human readable string representation.
      */
     public static String capabilitiesToString(int capabilities) {
+        return capabilitiesToStringInternal(capabilities, true /* isLong */);
+    }
+
+    /**
+     * Renders a set of capability bits ({@code CAPABILITY_*}) as a *short* human readable
+     * string.
+     *
+     * @param capabilities A capability bit field.
+     * @return A human readable string representation.
+     * @hide
+     */
+    public static String capabilitiesToStringShort(int capabilities) {
+        return capabilitiesToStringInternal(capabilities, false /* isLong */);
+    }
+
+    private static String capabilitiesToStringInternal(int capabilities, boolean isLong) {
         StringBuilder builder = new StringBuilder();
-        builder.append("[Capabilities:");
+        builder.append("[");
+        if (isLong) {
+            builder.append("Capabilities:");
+        }
+
         if (can(capabilities, CAPABILITY_HOLD)) {
-            builder.append(" CAPABILITY_HOLD");
+            builder.append(isLong ? " CAPABILITY_HOLD" : " hld");
         }
         if (can(capabilities, CAPABILITY_SUPPORT_HOLD)) {
-            builder.append(" CAPABILITY_SUPPORT_HOLD");
+            builder.append(isLong ? " CAPABILITY_SUPPORT_HOLD" : " sup_hld");
         }
         if (can(capabilities, CAPABILITY_MERGE_CONFERENCE)) {
-            builder.append(" CAPABILITY_MERGE_CONFERENCE");
+            builder.append(isLong ? " CAPABILITY_MERGE_CONFERENCE" : " mrg_cnf");
         }
         if (can(capabilities, CAPABILITY_SWAP_CONFERENCE)) {
-            builder.append(" CAPABILITY_SWAP_CONFERENCE");
+            builder.append(isLong ? " CAPABILITY_SWAP_CONFERENCE" : " swp_cnf");
         }
         if (can(capabilities, CAPABILITY_RESPOND_VIA_TEXT)) {
-            builder.append(" CAPABILITY_RESPOND_VIA_TEXT");
+            builder.append(isLong ? " CAPABILITY_RESPOND_VIA_TEXT" : " txt");
         }
         if (can(capabilities, CAPABILITY_MUTE)) {
-            builder.append(" CAPABILITY_MUTE");
+            builder.append(isLong ? " CAPABILITY_MUTE" : " mut");
         }
         if (can(capabilities, CAPABILITY_MANAGE_CONFERENCE)) {
-            builder.append(" CAPABILITY_MANAGE_CONFERENCE");
+            builder.append(isLong ? " CAPABILITY_MANAGE_CONFERENCE" : " mng_cnf");
         }
         if (can(capabilities, CAPABILITY_SUPPORTS_VT_LOCAL_RX)) {
-            builder.append(" CAPABILITY_SUPPORTS_VT_LOCAL_RX");
+            builder.append(isLong ? " CAPABILITY_SUPPORTS_VT_LOCAL_RX" : " VTlrx");
         }
         if (can(capabilities, CAPABILITY_SUPPORTS_VT_LOCAL_TX)) {
-            builder.append(" CAPABILITY_SUPPORTS_VT_LOCAL_TX");
+            builder.append(isLong ? " CAPABILITY_SUPPORTS_VT_LOCAL_TX" : " VTltx");
         }
         if (can(capabilities, CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL)) {
-            builder.append(" CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL");
+            builder.append(isLong ? " CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL" : " VTlbi");
         }
         if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_RX)) {
-            builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_RX");
+            builder.append(isLong ? " CAPABILITY_SUPPORTS_VT_REMOTE_RX" : " VTrrx");
         }
         if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_TX)) {
-            builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_TX");
+            builder.append(isLong ? " CAPABILITY_SUPPORTS_VT_REMOTE_TX" : " VTrtx");
         }
         if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL)) {
-            builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL");
+            builder.append(isLong ? " CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL" : " VTrbi");
         }
         if (can(capabilities, CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO)) {
-            builder.append(" CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO");
+            builder.append(isLong ? " CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO" : " !v2a");
         }
         if (can(capabilities, CAPABILITY_SPEED_UP_MT_AUDIO)) {
-            builder.append(" CAPABILITY_SPEED_UP_MT_AUDIO");
+            builder.append(isLong ? " CAPABILITY_SPEED_UP_MT_AUDIO" : " spd_aud");
         }
         if (can(capabilities, CAPABILITY_CAN_UPGRADE_TO_VIDEO)) {
-            builder.append(" CAPABILITY_CAN_UPGRADE_TO_VIDEO");
+            builder.append(isLong ? " CAPABILITY_CAN_UPGRADE_TO_VIDEO" : " a2v");
         }
         if (can(capabilities, CAPABILITY_CAN_PAUSE_VIDEO)) {
-            builder.append(" CAPABILITY_CAN_PAUSE_VIDEO");
+            builder.append(isLong ? " CAPABILITY_CAN_PAUSE_VIDEO" : " paus_VT");
         }
         if (can(capabilities, CAPABILITY_CONFERENCE_HAS_NO_CHILDREN)) {
-            builder.append(" CAPABILITY_SINGLE_PARTY_CONFERENCE");
+            builder.append(isLong ? " CAPABILITY_SINGLE_PARTY_CONFERENCE" : " 1p_cnf");
         }
         if (can(capabilities, CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION)) {
-            builder.append(" CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION");
+            builder.append(isLong ? " CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION" : " rsp_by_con");
         }
         if (can(capabilities, CAPABILITY_CAN_PULL_CALL)) {
-            builder.append(" CAPABILITY_CAN_PULL_CALL");
+            builder.append(isLong ? " CAPABILITY_CAN_PULL_CALL" : " pull");
         }
 
         builder.append("]");
@@ -588,31 +608,49 @@
      * @return A human readable string representation.
      */
     public static String propertiesToString(int properties) {
+        return propertiesToStringInternal(properties, true /* isLong */);
+    }
+
+    /**
+     * Renders a set of property bits ({@code PROPERTY_*}) as a *short* human readable string.
+     *
+     * @param properties A property bit field.
+     * @return A human readable string representation.
+     * @hide
+     */
+    public static String propertiesToStringShort(int properties) {
+        return propertiesToStringInternal(properties, false /* isLong */);
+    }
+
+    private static String propertiesToStringInternal(int properties, boolean isLong) {
         StringBuilder builder = new StringBuilder();
-        builder.append("[Properties:");
+        builder.append("[");
+        if (isLong) {
+            builder.append("Properties:");
+        }
 
         if (can(properties, PROPERTY_SHOW_CALLBACK_NUMBER)) {
-            builder.append(" PROPERTY_SHOW_CALLBACK_NUMBER");
+            builder.append(isLong ? " PROPERTY_SHOW_CALLBACK_NUMBER" : " clbk");
         }
 
         if (can(properties, PROPERTY_HIGH_DEF_AUDIO)) {
-            builder.append(" PROPERTY_HIGH_DEF_AUDIO");
+            builder.append(isLong ? " PROPERTY_HIGH_DEF_AUDIO" : " HD");
         }
 
         if (can(properties, PROPERTY_WIFI)) {
-            builder.append(" PROPERTY_WIFI");
+            builder.append(isLong ? " PROPERTY_WIFI" : " wifi");
         }
 
         if (can(properties, PROPERTY_GENERIC_CONFERENCE)) {
-            builder.append(" PROPERTY_GENERIC_CONFERENCE");
+            builder.append(isLong ? " PROPERTY_GENERIC_CONFERENCE" : " gen_conf");
         }
 
         if (can(properties, PROPERTY_IS_EXTERNAL_CALL)) {
-            builder.append(" PROPERTY_IS_EXTERNAL_CALL");
+            builder.append(isLong ? " PROPERTY_IS_EXTERNAL_CALL" : " xtrnl");
         }
 
         if (can(properties, PROPERTY_HAS_CDMA_VOICE_PRIVACY)) {
-            builder.append(" PROPERTY_HAS_CDMA_VOICE_PRIVACY");
+            builder.append(isLong ? " PROPERTY_HAS_CDMA_VOICE_PRIVACY" : " priv");
         }
 
         builder.append("]");
diff --git a/telephony/java/android/telephony/Rlog.java b/telephony/java/android/telephony/Rlog.java
index 2a7f7af..b4f400f 100644
--- a/telephony/java/android/telephony/Rlog.java
+++ b/telephony/java/android/telephony/Rlog.java
@@ -85,5 +85,13 @@
         return Log.isLoggable(tag, level);
     }
 
+    /**
+     * Redact personally identifiable information for production users.
+     * If log tag is loggable in verbose mode, return the original string, otherwise return XXX.
+     */
+    public static String pii(String tag, Object pii) {
+        return (isLoggable(tag, Log.VERBOSE) ? String.valueOf(pii) : "XXX");
+    }
+
 }
 
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 8446dd0..6151e5b 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -240,6 +240,8 @@
 
     private boolean mIsDataRoamingFromRegistration;
 
+    private boolean mIsUsingCarrierAggregation;
+
     /**
      * get String description of roaming type
      * @hide
@@ -318,6 +320,7 @@
         mCdmaEriIconMode = s.mCdmaEriIconMode;
         mIsEmergencyOnly = s.mIsEmergencyOnly;
         mIsDataRoamingFromRegistration = s.mIsDataRoamingFromRegistration;
+        mIsUsingCarrierAggregation = s.mIsUsingCarrierAggregation;
     }
 
     /**
@@ -346,6 +349,7 @@
         mCdmaEriIconMode = in.readInt();
         mIsEmergencyOnly = in.readInt() != 0;
         mIsDataRoamingFromRegistration = in.readInt() != 0;
+        mIsUsingCarrierAggregation = in.readInt() != 0;
     }
 
     public void writeToParcel(Parcel out, int flags) {
@@ -371,6 +375,7 @@
         out.writeInt(mCdmaEriIconMode);
         out.writeInt(mIsEmergencyOnly ? 1 : 0);
         out.writeInt(mIsDataRoamingFromRegistration ? 1 : 0);
+        out.writeInt(mIsUsingCarrierAggregation ? 1 : 0);
     }
 
     public int describeContents() {
@@ -680,7 +685,8 @@
                 && equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
                         s.mCdmaDefaultRoamingIndicator)
                 && mIsEmergencyOnly == s.mIsEmergencyOnly
-                && mIsDataRoamingFromRegistration == s.mIsDataRoamingFromRegistration);
+                && mIsDataRoamingFromRegistration == s.mIsDataRoamingFromRegistration
+                && mIsUsingCarrierAggregation == s.mIsUsingCarrierAggregation);
     }
 
     /**
@@ -788,7 +794,8 @@
                 + " RoamInd=" + mCdmaRoamingIndicator
                 + " DefRoamInd=" + mCdmaDefaultRoamingIndicator
                 + " EmergOnly=" + mIsEmergencyOnly
-                + " IsDataRoamingFromRegistration=" + mIsDataRoamingFromRegistration);
+                + " IsDataRoamingFromRegistration=" + mIsDataRoamingFromRegistration
+                + " IsUsingCarrierAggregation=" + mIsUsingCarrierAggregation);
     }
 
     private void setNullState(int state) {
@@ -815,6 +822,7 @@
         mCdmaEriIconMode = -1;
         mIsEmergencyOnly = false;
         mIsDataRoamingFromRegistration = false;
+        mIsUsingCarrierAggregation = false;
     }
 
     public void setStateOutOfService() {
@@ -988,6 +996,7 @@
         mCdmaDefaultRoamingIndicator = m.getInt("cdmaDefaultRoamingIndicator");
         mIsEmergencyOnly = m.getBoolean("emergencyOnly");
         mIsDataRoamingFromRegistration = m.getBoolean("isDataRoamingFromRegistration");
+        mIsUsingCarrierAggregation = m.getBoolean("isUsingCarrierAggregation");
     }
 
     /**
@@ -1017,21 +1026,42 @@
         m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator);
         m.putBoolean("emergencyOnly", Boolean.valueOf(mIsEmergencyOnly));
         m.putBoolean("isDataRoamingFromRegistration", Boolean.valueOf(mIsDataRoamingFromRegistration));
+        m.putBoolean("isUsingCarrierAggregation", Boolean.valueOf(mIsUsingCarrierAggregation));
     }
 
     /** @hide */
     public void setRilVoiceRadioTechnology(int rt) {
+        if (rt == RIL_RADIO_TECHNOLOGY_LTE_CA) {
+            rt = RIL_RADIO_TECHNOLOGY_LTE;
+        }
+
         this.mRilVoiceRadioTechnology = rt;
     }
 
     /** @hide */
     public void setRilDataRadioTechnology(int rt) {
+        if (rt == RIL_RADIO_TECHNOLOGY_LTE_CA) {
+            rt = RIL_RADIO_TECHNOLOGY_LTE;
+            this.mIsUsingCarrierAggregation = true;
+        } else {
+            this.mIsUsingCarrierAggregation = false;
+        }
         this.mRilDataRadioTechnology = rt;
         if (VDBG) Rlog.d(LOG_TAG, "[ServiceState] setRilDataRadioTechnology=" +
                 mRilDataRadioTechnology);
     }
 
     /** @hide */
+    public boolean isUsingCarrierAggregation() {
+        return mIsUsingCarrierAggregation;
+    }
+
+    /** @hide */
+    public void setIsUsingCarrierAggregation(boolean ca) {
+        mIsUsingCarrierAggregation = ca;
+    }
+
+    /** @hide */
     public void setCssIndicator(int css) {
         this.mCssIndicator = (css != 0);
     }
diff --git a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java
index ca7354f..8b81b0d 100644
--- a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java
+++ b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java
@@ -17,18 +17,23 @@
 package com.android.internal.telephony;
 
 import android.annotation.Nullable;
+import android.content.ContentResolver;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.os.RemoteException;
+import android.provider.Settings;
 import android.telephony.TelephonyManager;
+import android.util.ArrayMap;
 import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.SystemConfig;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Utilities for handling carrier applications.
@@ -53,6 +58,11 @@
      * in the default state (e.g. not explicitly DISABLED/DISABLED_BY_USER/ENABLED), or we enable if
      * the app is carrier privileged and in either the default state or DISABLED_UNTIL_USED.
      *
+     * In addition, there is a list of carrier-associated applications in
+     * {@link SystemConfig#getDisabledUntilUsedPreinstalledCarrierAssociatedApps}. Each app in this
+     * list is associated with a carrier app. When the given carrier app is enabled/disabled per the
+     * above, the associated applications are enabled/disabled to match.
+     *
      * When enabling a carrier app we also grant it default permissions.
      *
      * This method is idempotent and is safe to be called at any time; it should be called once at
@@ -60,19 +70,24 @@
      * privileged apps may have changed.
      */
     public synchronized static void disableCarrierAppsUntilPrivileged(String callingPackage,
-            IPackageManager packageManager, TelephonyManager telephonyManager, int userId) {
+            IPackageManager packageManager, TelephonyManager telephonyManager,
+            ContentResolver contentResolver, int userId) {
         if (DEBUG) {
             Slog.d(TAG, "disableCarrierAppsUntilPrivileged");
         }
+        SystemConfig config = SystemConfig.getInstance();
         String[] systemCarrierAppsDisabledUntilUsed = Resources.getSystem().getStringArray(
                 com.android.internal.R.array.config_disabledUntilUsedPreinstalledCarrierApps);
-        disableCarrierAppsUntilPrivileged(callingPackage, packageManager, telephonyManager, userId,
-                systemCarrierAppsDisabledUntilUsed);
+        ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
+                config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
+        disableCarrierAppsUntilPrivileged(callingPackage, packageManager, telephonyManager,
+                contentResolver, userId, systemCarrierAppsDisabledUntilUsed,
+                systemCarrierAssociatedAppsDisabledUntilUsed);
     }
 
     /**
      * Like {@link #disableCarrierAppsUntilPrivileged(String, IPackageManager, TelephonyManager,
-     * int)}, but assumes that no carrier apps have carrier privileges.
+     * ContentResolver, int)}, but assumes that no carrier apps have carrier privileges.
      *
      * This prevents a potential race condition on first boot - since the app's default state is
      * enabled, we will initially disable it when the telephony stack is first initialized as it has
@@ -82,29 +97,43 @@
      * Manager can kill it, and this can lead to crashes as the app is in an unexpected state.
      */
     public synchronized static void disableCarrierAppsUntilPrivileged(String callingPackage,
-            IPackageManager packageManager, int userId) {
+            IPackageManager packageManager, ContentResolver contentResolver, int userId) {
         if (DEBUG) {
             Slog.d(TAG, "disableCarrierAppsUntilPrivileged");
         }
+        SystemConfig config = SystemConfig.getInstance();
         String[] systemCarrierAppsDisabledUntilUsed = Resources.getSystem().getStringArray(
                 com.android.internal.R.array.config_disabledUntilUsedPreinstalledCarrierApps);
+        ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
+                config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
         disableCarrierAppsUntilPrivileged(callingPackage, packageManager,
-                null /* telephonyManager */, userId, systemCarrierAppsDisabledUntilUsed);
+                null /* telephonyManager */, contentResolver, userId,
+                systemCarrierAppsDisabledUntilUsed, systemCarrierAssociatedAppsDisabledUntilUsed);
     }
 
     // Must be public b/c framework unit tests can't access package-private methods.
     @VisibleForTesting
     public static void disableCarrierAppsUntilPrivileged(String callingPackage,
-            IPackageManager packageManager, @Nullable TelephonyManager telephonyManager, int userId,
-            String[] systemCarrierAppsDisabledUntilUsed) {
+            IPackageManager packageManager, @Nullable TelephonyManager telephonyManager,
+            ContentResolver contentResolver, int userId,
+            String[] systemCarrierAppsDisabledUntilUsed,
+            ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed) {
         List<ApplicationInfo> candidates = getDefaultCarrierAppCandidatesHelper(packageManager,
                 userId, systemCarrierAppsDisabledUntilUsed);
         if (candidates == null || candidates.isEmpty()) {
             return;
         }
 
+        Map<String, List<ApplicationInfo>> associatedApps = getDefaultCarrierAssociatedAppsHelper(
+                packageManager,
+                userId,
+                systemCarrierAssociatedAppsDisabledUntilUsed);
+
         List<String> enabledCarrierPackages = new ArrayList<>();
 
+        boolean hasRunOnce = Settings.Secure.getIntForUser(
+                contentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 0, userId) == 1;
+
         try {
             for (ApplicationInfo ai : candidates) {
                 String packageName = ai.packageName;
@@ -112,33 +141,92 @@
                         telephonyManager.checkCarrierPrivilegesForPackageAnyPhone(packageName) ==
                                 TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
 
-                // Only update enabled state for the app on /system. Once it has been updated we
-                // shouldn't touch it.
-                if (!ai.isUpdatedSystemApp()) {
-                    if (hasPrivileges
-                            && (ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
+                if (hasPrivileges) {
+                    // Only update enabled state for the app on /system. Once it has been
+                    // updated we shouldn't touch it.
+                    if (!ai.isUpdatedSystemApp()
+                            && (ai.enabledSetting ==
+                            PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
                             || ai.enabledSetting ==
                             PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED)) {
                         Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user "
                                 + userId);
-                        packageManager.setApplicationEnabledSetting(packageName,
+                        packageManager.setApplicationEnabledSetting(
+                                packageName,
                                 PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
-                                PackageManager.DONT_KILL_APP, userId, callingPackage);
-                    } else if (!hasPrivileges
+                                PackageManager.DONT_KILL_APP,
+                                userId,
+                                callingPackage);
+                    }
+
+                    // Also enable any associated apps for this carrier app.
+                    List<ApplicationInfo> associatedAppList = associatedApps.get(packageName);
+                    if (associatedAppList != null) {
+                        for (ApplicationInfo associatedApp : associatedAppList) {
+                            if (associatedApp.enabledSetting ==
+                                    PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
+                                    || associatedApp.enabledSetting ==
+                                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) {
+                                Slog.i(TAG, "Update associated state(" + associatedApp.packageName
+                                        + "): ENABLED for user " + userId);
+                                packageManager.setApplicationEnabledSetting(
+                                        associatedApp.packageName,
+                                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+                                        PackageManager.DONT_KILL_APP,
+                                        userId,
+                                        callingPackage);
+                            }
+                        }
+                    }
+
+                    // Always re-grant default permissions to carrier apps w/ privileges.
+                    enabledCarrierPackages.add(ai.packageName);
+                } else {  // No carrier privileges
+                    // Only update enabled state for the app on /system. Once it has been
+                    // updated we shouldn't touch it.
+                    if (!ai.isUpdatedSystemApp()
                             && ai.enabledSetting ==
                             PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
                         Slog.i(TAG, "Update state(" + packageName
                                 + "): DISABLED_UNTIL_USED for user " + userId);
-                        packageManager.setApplicationEnabledSetting(packageName,
-                                PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0,
-                                userId, callingPackage);
+                        packageManager.setApplicationEnabledSetting(
+                                packageName,
+                                PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED,
+                                0,
+                                userId,
+                                callingPackage);
+                    }
+
+                    // Also disable any associated apps for this carrier app if this is the first
+                    // run. We avoid doing this a second time because it is brittle to rely on the
+                    // distinction between "default" and "enabled".
+                    if (!hasRunOnce) {
+                        List<ApplicationInfo> associatedAppList = associatedApps.get(packageName);
+                        if (associatedAppList != null) {
+                            for (ApplicationInfo associatedApp : associatedAppList) {
+                                if (associatedApp.enabledSetting
+                                        == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
+                                    Slog.i(TAG,
+                                            "Update associated state(" + associatedApp.packageName
+                                                    + "): DISABLED_UNTIL_USED for user " + userId);
+                                    packageManager.setApplicationEnabledSetting(
+                                            associatedApp.packageName,
+                                            PackageManager
+                                                    .COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED,
+                                            0,
+                                            userId,
+                                            callingPackage);
+                                }
+                            }
+                        }
                     }
                 }
+            }
 
-                // Always re-grant default permissions to carrier apps w/ privileges.
-                if (hasPrivileges) {
-                    enabledCarrierPackages.add(ai.packageName);
-                }
+            // Mark the execution so we do not disable apps again.
+            if (!hasRunOnce) {
+                Settings.Secure.putIntForUser(
+                        contentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 1, userId);
             }
 
             if (!enabledCarrierPackages.isEmpty()) {
@@ -190,8 +278,8 @@
      *
      * These are the apps subject to the hiding/showing logic in
      * {@link CarrierAppUtils#disableCarrierAppsUntilPrivileged(String, IPackageManager,
-     * TelephonyManager, int)}, as well as the apps which should have default permissions granted,
-     * when a matching SIM is inserted.
+     * TelephonyManager, ContentResolver, int)}, as well as the apps which should have default
+     * permissions granted, when a matching SIM is inserted.
      *
      * Whether or not the app is actually considered a default app depends on whether the app has
      * carrier privileges as determined by the SIMs in the device.
@@ -205,30 +293,68 @@
     }
 
     private static List<ApplicationInfo> getDefaultCarrierAppCandidatesHelper(
-            IPackageManager packageManager, int userId,
+            IPackageManager packageManager,
+            int userId,
             String[] systemCarrierAppsDisabledUntilUsed) {
         if (systemCarrierAppsDisabledUntilUsed == null
                 || systemCarrierAppsDisabledUntilUsed.length == 0) {
             return null;
         }
-        List<ApplicationInfo> apps = null;
-        try {
-            apps = new ArrayList<>(systemCarrierAppsDisabledUntilUsed.length);
-            for (String packageName : systemCarrierAppsDisabledUntilUsed) {
-                ApplicationInfo ai = packageManager.getApplicationInfo(packageName,
-                        PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS, userId);
-                if (ai == null) {
-                    // No app found for packageName
-                    continue;
-                }
-                if (!ai.isSystemApp()) {
-                    continue;
-                }
+        List<ApplicationInfo> apps = new ArrayList<>(systemCarrierAppsDisabledUntilUsed.length);
+        for (int i = 0; i < systemCarrierAppsDisabledUntilUsed.length; i++) {
+            String packageName = systemCarrierAppsDisabledUntilUsed[i];
+            ApplicationInfo ai =
+                    getApplicationInfoIfSystemApp(packageManager, userId, packageName);
+            if (ai != null) {
                 apps.add(ai);
             }
+        }
+        return apps;
+    }
+
+    private static Map<String, List<ApplicationInfo>> getDefaultCarrierAssociatedAppsHelper(
+            IPackageManager packageManager,
+            int userId,
+            ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed) {
+        int size = systemCarrierAssociatedAppsDisabledUntilUsed.size();
+        Map<String, List<ApplicationInfo>> associatedApps = new ArrayMap<>(size);
+        for (int i = 0; i < size; i++) {
+            String carrierAppPackage = systemCarrierAssociatedAppsDisabledUntilUsed.keyAt(i);
+            List<String> associatedAppPackages =
+                    systemCarrierAssociatedAppsDisabledUntilUsed.valueAt(i);
+            for (int j = 0; j < associatedAppPackages.size(); j++) {
+                ApplicationInfo ai =
+                        getApplicationInfoIfSystemApp(
+                                packageManager, userId, associatedAppPackages.get(j));
+                // Only update enabled state for the app on /system. Once it has been updated we
+                // shouldn't touch it.
+                if (ai != null && !ai.isUpdatedSystemApp()) {
+                    List<ApplicationInfo> appList = associatedApps.get(carrierAppPackage);
+                    if (appList == null) {
+                        appList = new ArrayList<>();
+                        associatedApps.put(carrierAppPackage, appList);
+                    }
+                    appList.add(ai);
+                }
+            }
+        }
+        return associatedApps;
+    }
+
+    @Nullable
+    private static ApplicationInfo getApplicationInfoIfSystemApp(
+            IPackageManager packageManager,
+            int userId,
+            String packageName) {
+        try {
+            ApplicationInfo ai = packageManager.getApplicationInfo(packageName,
+                    PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, userId);
+            if (ai != null && ai.isSystemApp()) {
+                return ai;
+            }
         } catch (RemoteException e) {
             Slog.w(TAG, "Could not reach PackageManager", e);
         }
-        return apps;
+        return null;
     }
 }
diff --git a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
index 2346f85..16a0def 100644
--- a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
+++ b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
@@ -574,6 +574,7 @@
             mLaunchIntent = intent;
             mForceStopBeforeLaunch = forceStopBeforeLaunch;
             mLaunchReason = launchReason;
+            mResult = -1L;
         }
 
         public Long getResult() {
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index 9976d00f..59da467 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -529,6 +529,16 @@
     int openGLESVersion;
 };
 
+static bool hasFeature(const char* name, const FeatureGroup& grp,
+                       const KeyedVector<String8, ImpliedFeature>& implied) {
+    String8 name8(name);
+    ssize_t idx = grp.features.indexOfKey(name8);
+    if (idx < 0) {
+        idx = implied.indexOfKey(name8);
+    }
+    return idx >= 0;
+}
+
 static void addImpliedFeature(KeyedVector<String8, ImpliedFeature>* impliedFeatures,
                               const char* name, const char* reason, bool sdk23) {
     String8 name8(name);
@@ -616,9 +626,16 @@
     } else if (name == "android.hardware.location.gps" ||
             name == "android.hardware.location.network") {
         grp->features.add(String8("android.hardware.location"), Feature(true));
+    } else if (name == "android.hardware.faketouch.multitouch") {
+        grp->features.add(String8("android.hardware.faketouch"), Feature(true));
+    } else if (name == "android.hardware.faketouch.multitouch.distinct" ||
+            name == "android.hardware.faketouch.multitouch.jazzhands") {
+        grp->features.add(String8("android.hardware.faketouch.multitouch"), Feature(true));
+        grp->features.add(String8("android.hardware.faketouch"), Feature(true));
     } else if (name == "android.hardware.touchscreen.multitouch") {
         grp->features.add(String8("android.hardware.touchscreen"), Feature(true));
-    } else if (name == "android.hardware.touchscreen.multitouch.distinct") {
+    } else if (name == "android.hardware.touchscreen.multitouch.distinct" ||
+            name == "android.hardware.touchscreen.multitouch.jazzhands") {
         grp->features.add(String8("android.hardware.touchscreen.multitouch"), Feature(true));
         grp->features.add(String8("android.hardware.touchscreen"), Feature(true));
     } else if (name == "android.hardware.opengles.aep") {
@@ -2005,8 +2022,12 @@
                 }
             }
 
-            addImpliedFeature(&impliedFeatures, "android.hardware.touchscreen",
-                    "default feature for all apps", false);
+            // If the app hasn't declared the touchscreen as a feature requirement (either
+            // directly or implied, required or not), then the faketouch feature is implied.
+            if (!hasFeature("android.hardware.touchscreen", commonFeatures, impliedFeatures)) {
+                addImpliedFeature(&impliedFeatures, "android.hardware.faketouch",
+                                  "default feature for all apps", false);
+            }
 
             const size_t numFeatureGroups = featureGroups.size();
             if (numFeatureGroups == 0) {