Merge "Fix bad animation when pressing Home with translucent activity" into nyc-dev
diff --git a/Android.mk b/Android.mk
index b590761..76e9b33 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1156,6 +1156,7 @@
$(sample_groups) \
-useUpdatedTemplates \
-hdf android.hasSamples true \
+ -yaml _book.yaml \
-samplesdir $(samples_dir)
LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk-dev
diff --git a/api/current.txt b/api/current.txt
index 5e4b2d4..63f2499 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -5241,6 +5241,7 @@
method public boolean getContentIntentAvailableOffline();
method public int getCustomContentHeight();
method public int getCustomSizePreset();
+ method public java.lang.String getDismissalId();
method public android.app.PendingIntent getDisplayIntent();
method public int getGravity();
method public boolean getHintAmbientBigPicture();
@@ -5258,6 +5259,7 @@
method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
method public android.app.Notification.WearableExtender setCustomContentHeight(int);
method public android.app.Notification.WearableExtender setCustomSizePreset(int);
+ method public android.app.Notification.WearableExtender setDismissalId(java.lang.String);
method public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
method public android.app.Notification.WearableExtender setGravity(int);
method public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
@@ -9393,7 +9395,7 @@
field public int flags;
field public int largestWidthLimitDp;
field public java.lang.String manageSpaceActivityName;
- field public java.lang.String minSdkVersion;
+ field public int minSdkVersion;
field public java.lang.String nativeLibraryDir;
field public java.lang.String permission;
field public java.lang.String processName;
@@ -20640,6 +20642,7 @@
field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
+ field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
diff --git a/api/system-current.txt b/api/system-current.txt
index bde3a8c..bff39c2 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -5386,6 +5386,7 @@
method public boolean getContentIntentAvailableOffline();
method public int getCustomContentHeight();
method public int getCustomSizePreset();
+ method public java.lang.String getDismissalId();
method public android.app.PendingIntent getDisplayIntent();
method public int getGravity();
method public boolean getHintAmbientBigPicture();
@@ -5403,6 +5404,7 @@
method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
method public android.app.Notification.WearableExtender setCustomContentHeight(int);
method public android.app.Notification.WearableExtender setCustomSizePreset(int);
+ method public android.app.Notification.WearableExtender setDismissalId(java.lang.String);
method public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
method public android.app.Notification.WearableExtender setGravity(int);
method public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
@@ -9736,7 +9738,7 @@
field public int flags;
field public int largestWidthLimitDp;
field public java.lang.String manageSpaceActivityName;
- field public java.lang.String minSdkVersion;
+ field public int minSdkVersion;
field public java.lang.String nativeLibraryDir;
field public java.lang.String permission;
field public java.lang.String processName;
@@ -22160,6 +22162,7 @@
field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
+ field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
diff --git a/api/test-current.txt b/api/test-current.txt
index 9141506..8764333 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -5241,6 +5241,7 @@
method public boolean getContentIntentAvailableOffline();
method public int getCustomContentHeight();
method public int getCustomSizePreset();
+ method public java.lang.String getDismissalId();
method public android.app.PendingIntent getDisplayIntent();
method public int getGravity();
method public boolean getHintAmbientBigPicture();
@@ -5258,6 +5259,7 @@
method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
method public android.app.Notification.WearableExtender setCustomContentHeight(int);
method public android.app.Notification.WearableExtender setCustomSizePreset(int);
+ method public android.app.Notification.WearableExtender setDismissalId(java.lang.String);
method public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
method public android.app.Notification.WearableExtender setGravity(int);
method public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
@@ -9402,7 +9404,7 @@
field public int flags;
field public int largestWidthLimitDp;
field public java.lang.String manageSpaceActivityName;
- field public java.lang.String minSdkVersion;
+ field public int minSdkVersion;
field public java.lang.String nativeLibraryDir;
field public java.lang.String permission;
field public java.lang.String processName;
@@ -20708,6 +20710,7 @@
field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
+ field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 0149952..b5490cf 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -2975,6 +2975,18 @@
}
/**
+ * Puts the activity in picture-in-picture mode if the activity supports.
+ * @see android.R.attr#supportsPictureInPicture
+ * @hide
+ */
+ @Override
+ public void enterPictureInPictureModeIfPossible() {
+ if (mActivityInfo.resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE) {
+ enterPictureInPictureMode();
+ }
+ }
+
+ /**
* Called to process key events. You can override this to intercept all
* key events before they are dispatched to the window. Be sure to call
* this implementation for key events that should be handled normally.
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index a3f3b2b3..1a7c746 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -794,7 +794,9 @@
if (hasBounds) {
bounds = Rect.CREATOR.createFromParcel(data);
}
- boolean res = moveTaskToDockedStack(taskId, createMode, toTop, animate, bounds);
+ final boolean moveHomeStackFront = data.readInt() != 0;
+ final boolean res = moveTaskToDockedStack(
+ taskId, createMode, toTop, animate, bounds, moveHomeStackFront);
reply.writeNoException();
reply.writeInt(res ? 1 : 0);
return true;
@@ -3865,7 +3867,7 @@
}
@Override
public boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate,
- Rect initialBounds) throws RemoteException
+ Rect initialBounds, boolean moveHomeStackFront) throws RemoteException
{
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
@@ -3880,6 +3882,7 @@
} else {
data.writeInt(0);
}
+ data.writeInt(moveHomeStackFront ? 1 : 0);
mRemote.transact(MOVE_TASK_TO_DOCKED_STACK_TRANSACTION, data, reply, 0);
reply.readException();
boolean res = reply.readInt() > 0;
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index 29bc4d8..eb07fbc 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -16,12 +16,14 @@
package android.app;
+import android.annotation.Nullable;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
+import android.content.Intent;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.net.ConnectivityManager;
@@ -29,9 +31,11 @@
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
+import android.os.FileUtils;
import android.os.ParcelFileDescriptor;
import android.provider.Downloads;
import android.provider.Settings;
+import android.provider.MediaStore.Images;
import android.provider.Settings.SettingNotFoundException;
import android.text.TextUtils;
import android.util.Pair;
@@ -1186,6 +1190,84 @@
}
/**
+ * Rename the given download if the download has completed
+ *
+ * @param context the {@link Context} to use in case need to update MediaProvider
+ * @param id the downloaded id
+ * @param displayName the new name to rename to
+ * @return true if rename was successful, false otherwise
+ * @hide
+ */
+ public boolean rename(Context context, long id, String displayName) {
+ if (!FileUtils.isValidFatFilename(displayName)) {
+ throw new SecurityException(displayName + " is not a valid filename");
+ }
+
+ Query query = new Query().setFilterById(id);
+ Cursor cursor = null;
+ String oldDisplayName = null;
+ String mimeType = null;
+ try {
+ cursor = query(query);
+ if (cursor == null) {
+ return false;
+ }
+ if (cursor.moveToFirst()) {
+ int status = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_STATUS));
+ if (DownloadManager.STATUS_SUCCESSFUL != status) {
+ return false;
+ }
+ oldDisplayName = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_TITLE));
+ mimeType = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_MEDIA_TYPE));
+ }
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+
+ if (oldDisplayName == null || mimeType == null) {
+ throw new IllegalStateException(
+ "Document with id " + id + " does not exist");
+ }
+
+ final File parent = Environment.getExternalStoragePublicDirectory(
+ Environment.DIRECTORY_DOWNLOADS);
+
+ final File before = new File(parent, oldDisplayName);
+ final File after = new File(parent, displayName);
+
+ if (after.exists()) {
+ throw new IllegalStateException("Already exists " + after);
+ }
+ if (!before.renameTo(after)) {
+ throw new IllegalStateException("Failed to rename to " + after);
+ }
+
+ // Update MediaProvider if necessary
+ if (mimeType.startsWith("image/")) {
+ context.getContentResolver().delete(Images.Media.EXTERNAL_CONTENT_URI,
+ Images.Media.DATA + "=?",
+ new String[] {
+ before.getAbsolutePath()
+ });
+
+ Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
+ intent.setData(Uri.fromFile(after));
+ context.sendBroadcast(intent);
+ }
+
+ ContentValues values = new ContentValues();
+ values.put(Downloads.Impl.COLUMN_TITLE, displayName);
+ values.put(Downloads.Impl._DATA, after.toString());
+ values.putNull(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI);
+ long[] ids = {id};
+
+ return (mResolver.update(mBaseUri, values, getWhereClauseForIds(ids),
+ getWhereArgsForIds(ids)) == 1);
+ }
+
+ /**
* Returns recommended maximum size, in bytes, of downloads that may go over a mobile
* connection; or null if there's no recommended limit. The user will have the option to bypass
* this limit.
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 66b4fcf..55ce6c2 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -147,7 +147,7 @@
public void moveTaskBackwards(int task) throws RemoteException;
public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException;
public boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate,
- Rect initialBounds) throws RemoteException;
+ Rect initialBounds, boolean moveHomeStackFront) throws RemoteException;
public boolean moveTopActivityToPinnedStack(int stackId, Rect bounds) throws RemoteException;
/**
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 20037ce..460640e 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -3412,10 +3412,6 @@
validRemoteInput |= hasValidRemoteInput(action);
final RemoteViews button = generateActionButton(action);
- if (i == N - 1) {
- button.setViewLayoutWidth(com.android.internal.R.id.action0,
- ViewGroup.LayoutParams.MATCH_PARENT);
- }
big.addView(R.id.actions, button);
}
} else {
@@ -5486,6 +5482,7 @@
private static final String KEY_CUSTOM_CONTENT_HEIGHT = "customContentHeight";
private static final String KEY_GRAVITY = "gravity";
private static final String KEY_HINT_SCREEN_TIMEOUT = "hintScreenTimeout";
+ private static final String KEY_DISMISSAL_ID = "dismissalId";
// Flags bitwise-ored to mFlags
private static final int FLAG_CONTENT_INTENT_AVAILABLE_OFFLINE = 0x1;
@@ -5514,6 +5511,7 @@
private int mCustomContentHeight;
private int mGravity = DEFAULT_GRAVITY;
private int mHintScreenTimeout;
+ private String mDismissalId;
/**
* Create a {@link android.app.Notification.WearableExtender} with default
@@ -5550,6 +5548,7 @@
mCustomContentHeight = wearableBundle.getInt(KEY_CUSTOM_CONTENT_HEIGHT);
mGravity = wearableBundle.getInt(KEY_GRAVITY, DEFAULT_GRAVITY);
mHintScreenTimeout = wearableBundle.getInt(KEY_HINT_SCREEN_TIMEOUT);
+ mDismissalId = wearableBundle.getString(KEY_DISMISSAL_ID);
}
}
@@ -5600,6 +5599,9 @@
if (mHintScreenTimeout != 0) {
wearableBundle.putInt(KEY_HINT_SCREEN_TIMEOUT, mHintScreenTimeout);
}
+ if (mDismissalId != null) {
+ wearableBundle.putString(KEY_DISMISSAL_ID, mDismissalId);
+ }
builder.getExtras().putBundle(EXTRA_WEARABLE_EXTENSIONS, wearableBundle);
return builder;
@@ -5620,6 +5622,7 @@
that.mCustomContentHeight = this.mCustomContentHeight;
that.mGravity = this.mGravity;
that.mHintScreenTimeout = this.mHintScreenTimeout;
+ that.mDismissalId = this.mDismissalId;
return that;
}
@@ -6107,6 +6110,29 @@
return (mFlags & FLAG_HINT_CONTENT_INTENT_LAUNCHES_ACTIVITY) != 0;
}
+ /**
+ * When you post a notification, if you set the dismissal id field, then when that
+ * notification is canceled, notifications on other wearables and the paired Android phone
+ * having that same dismissal id will also be canceled. Note that this only works if you
+ * have notification bridge mode set to NO_BRIDGING in your Wear app manifest. See
+ * <a href="{@docRoot}wear/notifications/index.html">Adding Wearable Features to
+ * Notifications</a> for more information on how to use the bridge mode feature.
+ * @param dismissalId the dismissal id of the notification.
+ * @return this object for method chaining
+ */
+ public WearableExtender setDismissalId(String dismissalId) {
+ mDismissalId = dismissalId;
+ return this;
+ }
+
+ /**
+ * Returns the dismissal id of the notification.
+ * @return the dismissal id of the notification or null if it has not been set.
+ */
+ public String getDismissalId() {
+ return mDismissalId;
+ }
+
private void setFlag(int mask, boolean value) {
if (value) {
mFlags |= mask;
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index 167befc..bdea1e0 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -188,7 +188,7 @@
* See {@link android.R.attr#resizeableActivity}.
* @hide
*/
- public int resizeMode;
+ public int resizeMode = RESIZE_MODE_RESIZEABLE;
/**
* Name of the VrListenerService component to run for this activity.
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 585d2a3..51a7be4 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -728,7 +728,7 @@
* The minimum SDK version this application can run on. It will not run
* on earlier versions.
*/
- public String minSdkVersion;
+ public int minSdkVersion;
/**
* The minimum SDK version this application targets. It may run on earlier
@@ -965,7 +965,7 @@
dest.writeString(deviceProtectedDataDir);
dest.writeString(credentialProtectedDataDir);
dest.writeInt(uid);
- dest.writeString(minSdkVersion);
+ dest.writeInt(minSdkVersion);
dest.writeInt(targetSdkVersion);
dest.writeInt(versionCode);
dest.writeInt(enabled ? 1 : 0);
@@ -1020,7 +1020,7 @@
deviceEncryptedDataDir = deviceProtectedDataDir = source.readString();
credentialEncryptedDataDir = credentialProtectedDataDir = source.readString();
uid = source.readInt();
- minSdkVersion = source.readString();
+ minSdkVersion = source.readInt();
targetSdkVersion = source.readInt();
versionCode = source.readInt();
enabled = source.readInt() != 0;
diff --git a/core/java/android/content/pm/IShortcutService.aidl b/core/java/android/content/pm/IShortcutService.aidl
index 9c90346..2ba24f6 100644
--- a/core/java/android/content/pm/IShortcutService.aidl
+++ b/core/java/android/content/pm/IShortcutService.aidl
@@ -49,6 +49,8 @@
void resetThrottling(); // system only API for developer opsions
+ void onApplicationActive(String packageName, int userId); // system only API for sysUI
+
byte[] getBackupPayload(int user);
void applyRestore(in byte[] payload, int user);
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 66c5000..7ee7044 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -79,7 +79,6 @@
import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE;
import static android.content.pm.ActivityInfo.FLAG_IMMERSIVE;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_CROP_WINDOWS;
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE;
import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE;
@@ -120,6 +119,7 @@
private static final boolean DEBUG_PARSER = false;
private static final boolean DEBUG_BACKUP = false;
+ private static final boolean MULTI_PACKAGE_APK_ENABLED = false;
private static final int MAX_PACKAGES_PER_APK = 5;
public static final int APK_SIGNING_UNKNOWN = 0;
@@ -159,6 +159,7 @@
private static final String TAG_SUPPORTS_INPUT = "supports-input";
private static final String TAG_EAT_COMMENT = "eat-comment";
private static final String TAG_PACKAGE = "package";
+ private static final String TAG_RESTRICT_UPDATE = "restrict-update";
// These are the tags supported by child packages
private static final Set<String> CHILD_PACKAGE_TAGS = new ArraySet<>();
@@ -1639,9 +1640,9 @@
/**
* This is the common parsing routing for handling parent and child
* packages in a base APK. The difference between parent and child
- * parsing is that some targs are not supported by child packages as
+ * parsing is that some tags are not supported by child packages as
* well as some manifest attributes are ignored. The implementation
- * assumes the calling code already handled the manifest tag if needed
+ * assumes the calling code has already handled the manifest tag if needed
* (this applies to the parent only).
*
* @param pkg The package which to populate
@@ -1925,14 +1926,15 @@
mParseError = PackageManager.INSTALL_FAILED_OLDER_SDK;
return null;
}
- pkg.applicationInfo.minSdkVersion = minCode;
+ pkg.applicationInfo.minSdkVersion =
+ android.os.Build.VERSION_CODES.CUR_DEVELOPMENT;
} else if (minVers > SDK_VERSION) {
outError[0] = "Requires newer sdk version #" + minVers
+ " (current version is #" + SDK_VERSION + ")";
mParseError = PackageManager.INSTALL_FAILED_OLDER_SDK;
return null;
} else {
- pkg.applicationInfo.minSdkVersion = Integer.toString(minVers);
+ pkg.applicationInfo.minSdkVersion = minVers;
}
if (targetCode != null) {
@@ -2085,10 +2087,37 @@
continue;
} else if (tagName.equals(TAG_PACKAGE)) {
+ if (!MULTI_PACKAGE_APK_ENABLED) {
+ XmlUtils.skipCurrentTag(parser);
+ continue;
+ }
if (!parseBaseApkChild(pkg, res, parser, flags, outError)) {
// If parsing a child failed the error is already set
return null;
}
+
+ } else if (tagName.equals(TAG_RESTRICT_UPDATE)) {
+ if ((flags & PARSE_IS_SYSTEM_DIR) != 0) {
+ sa = res.obtainAttributes(parser,
+ com.android.internal.R.styleable.AndroidManifestRestrictUpdate);
+ final String hash = sa.getNonConfigurationString(
+ com.android.internal.R.styleable.AndroidManifestRestrictUpdate_hash, 0);
+ sa.recycle();
+
+ pkg.restrictUpdateHash = null;
+ if (hash != null) {
+ final int hashLength = hash.length();
+ final byte[] hashBytes = new byte[hashLength / 2];
+ for (int i = 0; i < hashLength; i += 2){
+ hashBytes[i/2] = (byte) ((Character.digit(hash.charAt(i), 16) << 4)
+ + Character.digit(hash.charAt(i + 1), 16));
+ }
+ pkg.restrictUpdateHash = hashBytes;
+ }
+ }
+
+ XmlUtils.skipCurrentTag(parser);
+
} else if (RIGID_PARSER) {
outError[0] = "Bad element under <manifest>: "
+ parser.getName();
@@ -4822,6 +4851,8 @@
*/
public boolean use32bitAbi;
+ public byte[] restrictUpdateHash;
+
public Package(String packageName) {
this.packageName = packageName;
applicationInfo.packageName = packageName;
diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java
index 9b1d0f7..bd8cae2 100644
--- a/core/java/android/content/pm/ShortcutInfo.java
+++ b/core/java/android/content/pm/ShortcutInfo.java
@@ -20,7 +20,6 @@
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.ComponentName;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Icon;
@@ -35,8 +34,6 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Set;
// TODO Enhance javadoc
@@ -307,14 +304,6 @@
case Icon.TYPE_RESOURCE:
case Icon.TYPE_BITMAP:
break; // OK
- case Icon.TYPE_URI:
- if (ContentResolver.SCHEME_CONTENT.equals(icon.getUri().getScheme())) {
- break;
- }
- // Note "file:" is not supported, because depending on the path, system server
- // cannot access it. // TODO Revisit "file:" icon support
-
- // fall through
default:
throw getInvalidIconException();
}
@@ -374,6 +363,12 @@
* Optionally sets the target activity. If it's not set, and if the caller application
* has multiple launcher icons, this shortcut will be shown on all those icons.
* If it's set, this shortcut will be only shown on this activity.
+ *
+ * <p>The package name of the target activity must match the package name of the shortcut
+ * publisher.
+ *
+ * <p>This has nothing to do with the activity that this shortcut will launch. This is
+ * a hint to the launcher app about which launcher icon to associate this shortcut with.
*/
@NonNull
public Builder setActivityComponent(@NonNull ComponentName activityComponent) {
@@ -385,11 +380,8 @@
* Optionally sets an icon.
*
* <ul>
- * <li>Tints are not supported.
- * <li>Bitmaps, resources and "content:" URIs are supported.
- * <li>"content:" URI will be fetched when a shortcut is registered to
- * {@link ShortcutManager}. Changing the content from the same URI later will
- * not be reflected to launcher icons.
+ * <li>Tints set by {@link Icon#setTint} or {@link Icon#setTintList} are not supported.
+ * <li>Bitmaps and resources are supported, but "content:" URIs are not supported.
* </ul>
*
* <p>For performance reasons, icons will <b>NOT</b> be available on instances
@@ -498,6 +490,11 @@
/**
* Return the target activity, which may be null, in which case the shortcut is not associated
* with a specific activity.
+ *
+ * <p>This has nothing to do with the activity that this shortcut will launch. This is
+ * a hint to the launcher app that on which launcher icon this shortcut should be shown.
+ *
+ * @see Builder#setActivityComponent
*/
@Nullable
public ComponentName getActivityComponent() {
@@ -550,6 +547,10 @@
*
* <p>All shortcuts must have an intent, but this method will return null when
* {@link #hasKeyFieldsOnly()} is true.
+ *
+ * <p>Launcher apps <b>cannot</b> see the intent. If a {@link ShortcutInfo} is obtained via
+ * {@link LauncherApps}, then this method will always return null. Launcher apps can only
+ * start a shortcut intent with {@link LauncherApps#startShortcut}.
*/
@Nullable
public Intent getIntent() {
diff --git a/core/java/android/content/pm/ShortcutManager.java b/core/java/android/content/pm/ShortcutManager.java
index 75803d3..ab0367d 100644
--- a/core/java/android/content/pm/ShortcutManager.java
+++ b/core/java/android/content/pm/ShortcutManager.java
@@ -62,13 +62,17 @@
* <h3>Rate limiting</h3>
*
* Calls to {@link #setDynamicShortcuts(List)}, {@link #addDynamicShortcuts(List)},
- * and {@link #updateShortcuts(List)} will be
+ * and {@link #updateShortcuts(List)} from <b>background applications</b> will be
* rate-limited. An application can call these methods at most
* {@link #getRemainingCallCount()} times until the rate-limiting counter is reset,
- * which happens every hour.
+ * which happens at a certain time every day.
*
* <p>An application can use {@link #getRateLimitResetTime()} to get the next reset time.
*
+ * <p>Foreground applications (i.e. ones with a foreground activity or a foreground services)
+ * will not be throttled. Also, when an application comes to foreground,
+ * {@link #getRemainingCallCount()} will be reset to the initial value.
+ *
* <p>For testing purposes, use "Developer Options" (found in the Settings menu) to reset the
* internal rate-limiting counter. Automated tests can use the following ADB shell command to
* achieve the same effect:</p>
diff --git a/core/java/android/content/pm/ShortcutServiceInternal.java b/core/java/android/content/pm/ShortcutServiceInternal.java
index dc3d317..3f8bad1 100644
--- a/core/java/android/content/pm/ShortcutServiceInternal.java
+++ b/core/java/android/content/pm/ShortcutServiceInternal.java
@@ -23,7 +23,6 @@
import android.content.Intent;
import android.content.pm.LauncherApps.ShortcutQuery;
import android.os.ParcelFileDescriptor;
-import android.os.UserHandle;
import java.util.List;
@@ -68,4 +67,10 @@
public abstract boolean hasShortcutHostPermission(int launcherUserId,
@NonNull String callingPackage);
+
+ /**
+ * Called by AM when the system locale changes *within the AM lock*. ABSOLUTELY do not take
+ * any locks in this method.
+ */
+ public abstract void onSystemLocaleChangedNoLock();
}
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index 177374c..2d0e74c 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -744,7 +744,7 @@
private void fixUpLocaleList() {
if ((locale == null && !mLocaleList.isEmpty()) ||
(locale != null && !locale.equals(mLocaleList.get(0)))) {
- mLocaleList = new LocaleList(locale);
+ mLocaleList = locale == null ? LocaleList.getEmptyLocaleList() : new LocaleList(locale);
}
}
@@ -1481,7 +1481,7 @@
* @param loc The locale. Can be null.
*/
public void setLocale(@Nullable Locale loc) {
- setLocales(new LocaleList(loc));
+ setLocales(loc == null ? LocaleList.getEmptyLocaleList() : new LocaleList(loc));
}
/**
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 2c63be2..959b309 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -1157,6 +1157,8 @@
public short batteryTemperature;
public char batteryVoltage;
+
+ public int batteryChargeCoulombs;
// Constants from SCREEN_BRIGHTNESS_*
public static final int STATE_BRIGHTNESS_SHIFT = 0;
@@ -1181,6 +1183,8 @@
public static final int STATE_WIFI_SCAN_FLAG = 1<<27;
public static final int STATE_WIFI_RADIO_ACTIVE_FLAG = 1<<26;
public static final int STATE_MOBILE_RADIO_ACTIVE_FLAG = 1<<25;
+ // Do not use, this is used for coulomb delta count.
+ private static final int STATE_RESERVED_0 = 1<<24;
// These are on the lower bits used for the command; if they change
// we need to write another int of data.
public static final int STATE_SENSOR_ON_FLAG = 1<<23;
@@ -1352,6 +1356,7 @@
bat = (((int)batteryTemperature)&0xffff)
| ((((int)batteryVoltage)<<16)&0xffff0000);
dest.writeInt(bat);
+ dest.writeInt(batteryChargeCoulombs);
dest.writeInt(states);
dest.writeInt(states2);
if (wakelockTag != null) {
@@ -1380,6 +1385,7 @@
int bat2 = src.readInt();
batteryTemperature = (short)(bat2&0xffff);
batteryVoltage = (char)((bat2>>16)&0xffff);
+ batteryChargeCoulombs = src.readInt();
states = src.readInt();
states2 = src.readInt();
if ((bat&0x10000000) != 0) {
@@ -1419,6 +1425,7 @@
batteryPlugType = 0;
batteryTemperature = 0;
batteryVoltage = 0;
+ batteryChargeCoulombs = 0;
states = 0;
states2 = 0;
wakelockTag = null;
@@ -1446,6 +1453,7 @@
batteryPlugType = o.batteryPlugType;
batteryTemperature = o.batteryTemperature;
batteryVoltage = o.batteryVoltage;
+ batteryChargeCoulombs = o.batteryChargeCoulombs;
states = o.states;
states2 = o.states2;
if (o.wakelockTag != null) {
@@ -1477,6 +1485,7 @@
&& batteryPlugType == o.batteryPlugType
&& batteryTemperature == o.batteryTemperature
&& batteryVoltage == o.batteryVoltage
+ && batteryChargeCoulombs == o.batteryChargeCoulombs
&& states == o.states
&& states2 == o.states2
&& currentTime == o.currentTime;
@@ -4527,6 +4536,7 @@
int oldPlug = -1;
int oldTemp = -1;
int oldVolt = -1;
+ int oldCharge = -1;
long lastTime = -1;
void reset() {
@@ -4537,6 +4547,7 @@
oldPlug = -1;
oldTemp = -1;
oldVolt = -1;
+ oldCharge = -1;
}
public void printNextItem(PrintWriter pw, HistoryItem rec, long baseTime, boolean checkin,
@@ -4698,6 +4709,11 @@
pw.print(checkin ? ",Bv=" : " volt=");
pw.print(oldVolt);
}
+ if (oldCharge != rec.batteryChargeCoulombs) {
+ oldCharge = rec.batteryChargeCoulombs;
+ pw.print(checkin ? ",Bcc=" : " charge=");
+ pw.print(oldCharge);
+ }
printBitDescriptions(pw, oldState, rec.states, rec.wakelockTag,
HISTORY_STATE_DESCRIPTIONS, !checkin);
printBitDescriptions(pw, oldState2, rec.states2, null,
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index 68b0a9f..b546da0 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -324,6 +324,11 @@
void removeIdleTimer(String iface);
/**
+ * Configure name servers, search paths, and resolver parameters for the given network.
+ */
+ void setDnsConfigurationForNetwork(int netId, in String[] servers, String domains);
+
+ /**
* Bind name servers to a network in the DNS resolver.
*/
void setDnsServersForNetwork(int netId, in String[] servers, String domains);
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index b25b33d..403e06c 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -434,6 +434,9 @@
String filename = packageFile.getCanonicalPath();
Log.w(TAG, "!!! REBOOTING TO INSTALL " + filename + " !!!");
+ // If the package name ends with "_s.zip", it's a security update.
+ boolean securityUpdate = filename.endsWith("_s.zip");
+
// If the package is on the /data partition, the package needs to
// be processed (i.e. uncrypt'd). The caller specifies if that has
// been done in 'processed' parameter.
@@ -468,7 +471,12 @@
final String filenameArg = "--update_package=" + filename + "\n";
final String localeArg = "--locale=" + Locale.getDefault().toString() + "\n";
- final String command = filenameArg + localeArg;
+ final String securityArg = "--security\n";
+
+ String command = filenameArg + localeArg;
+ if (securityUpdate) {
+ command += securityArg;
+ }
RecoverySystem rs = (RecoverySystem) context.getSystemService(
Context.RECOVERY_SERVICE);
@@ -501,6 +509,7 @@
public static void scheduleUpdateOnBoot(Context context, File packageFile)
throws IOException {
String filename = packageFile.getCanonicalPath();
+ boolean securityUpdate = filename.endsWith("_s.zip");
// If the package is on the /data partition, use the block map file as
// the package name instead.
@@ -510,7 +519,12 @@
final String filenameArg = "--update_package=" + filename + "\n";
final String localeArg = "--locale=" + Locale.getDefault().toString() + "\n";
- final String command = filenameArg + localeArg;
+ final String securityArg = "--security\n";
+
+ String command = filenameArg + localeArg;
+ if (securityUpdate) {
+ command += securityArg;
+ }
RecoverySystem rs = (RecoverySystem) context.getSystemService(Context.RECOVERY_SERVICE);
if (!rs.setupBcb(command)) {
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index d98e217..700c2d2 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6974,6 +6974,33 @@
public static final String STORAGE_BENCHMARK_INTERVAL = "storage_benchmark_interval";
/**
+ * Sample validity in seconds to configure for the system DNS resolver.
+ * {@hide}
+ */
+ public static final String DNS_RESOLVER_SAMPLE_VALIDITY_SECONDS =
+ "dns_resolver_sample_validity_seconds";
+
+ /**
+ * Success threshold in percent for use with the system DNS resolver.
+ * {@hide}
+ */
+ public static final String DNS_RESOLVER_SUCCESS_THRESHOLD_PERCENT =
+ "dns_resolver_success_threshold_percent";
+
+ /**
+ * Minimum number of samples needed for statistics to be considered meaningful in the
+ * system DNS resolver.
+ * {@hide}
+ */
+ public static final String DNS_RESOLVER_MIN_SAMPLES = "dns_resolver_min_samples";
+
+ /**
+ * Maximum number taken into account for statistics purposes in the system DNS resolver.
+ * {@hide}
+ */
+ public static final String DNS_RESOLVER_MAX_SAMPLES = "dns_resolver_max_samples";
+
+ /**
* Whether to disable the automatic scheduling of system updates.
* 1 = system updates won't be automatically scheduled (will always
* present notification instead).
diff --git a/core/java/android/text/style/LocaleSpan.java b/core/java/android/text/style/LocaleSpan.java
index 4f687c8..91990df 100644
--- a/core/java/android/text/style/LocaleSpan.java
+++ b/core/java/android/text/style/LocaleSpan.java
@@ -50,7 +50,7 @@
* @see #LocaleSpan(LocaleList)
*/
public LocaleSpan(@Nullable Locale locale) {
- mLocales = new LocaleList(locale);
+ mLocales = locale == null ? LocaleList.getEmptyLocaleList() : new LocaleList(locale);
}
/**
diff --git a/core/java/android/util/LocaleList.java b/core/java/android/util/LocaleList.java
index b153e92..3c3db58 100644
--- a/core/java/android/util/LocaleList.java
+++ b/core/java/android/util/LocaleList.java
@@ -169,8 +169,8 @@
* @throws NullPointerException if any of the input locales is <code>null</code>.
* @throws IllegalArgumentException if any of the input locales repeat.
*/
- public LocaleList(@Nullable Locale... list) {
- if (list == null || list.length == 0) {
+ public LocaleList(@NonNull Locale... list) {
+ if (list.length == 0) {
mList = sEmptyList;
mStringRepresentation = "";
} else {
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index e598113..85c16b8 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -593,6 +593,12 @@
*/
void exitFreeformMode() throws RemoteException;
+ /**
+ * Puts the activity in picture-in-picture mode if the activity supports.
+ * @see android.R.attr#supportsPictureInPicture
+ */
+ void enterPictureInPictureModeIfPossible();
+
/** Returns the current stack Id for the window. */
int getWindowStackId() throws RemoteException;
}
@@ -1257,18 +1263,6 @@
}
/**
- * Puts the activity in picture-in-picture mode.
- * @see android.R.attr#supportsPictureInPicture
- * @hide
- */
- protected void enterPictureInPictureMode() {
- try {
- ActivityManagerNative.getDefault().enterPictureInPictureMode(mAppToken);
- } catch (IllegalArgumentException|RemoteException e) {
- }
- }
-
- /**
* Convenience for
* {@link #setContentView(View, android.view.ViewGroup.LayoutParams)}
* to set the screen content from a layout resource. The resource will be
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 106fec0..682d685 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -2888,6 +2888,7 @@
private boolean mPositionHasChanged = true;
// Absolute position of the TextView with respect to its parent window
private int mPositionX, mPositionY;
+ private int mPositionXOnScreen, mPositionYOnScreen;
private int mNumberOfListeners;
private boolean mScrollHasChanged;
final int[] mTempCoords = new int[2];
@@ -2937,6 +2938,14 @@
return mPositionY;
}
+ public int getPositionXOnScreen() {
+ return mPositionXOnScreen;
+ }
+
+ public int getPositionYOnScreen() {
+ return mPositionYOnScreen;
+ }
+
@Override
public boolean onPreDraw() {
updatePosition();
@@ -2962,6 +2971,11 @@
mPositionX = mTempCoords[0];
mPositionY = mTempCoords[1];
+
+ mTextView.getLocationOnScreen(mTempCoords);
+
+ mPositionXOnScreen = mTempCoords[0];
+ mPositionYOnScreen = mTempCoords[1];
}
public void onScrollChanged() {
@@ -3998,6 +4012,8 @@
private float mIdealVerticalOffset;
// Parent's (TextView) previous position in window
private int mLastParentX, mLastParentY;
+ // Parent's (TextView) previous position on screen
+ private int mLastParentXOnScreen, mLastParentYOnScreen;
// Previous text character offset
protected int mPreviousOffset = -1;
// Previous text character offset
@@ -4236,6 +4252,7 @@
return (int) (getHorizontal(layout, offset) - 0.5f);
}
+ @Override
public void updatePosition(int parentPositionX, int parentPositionY,
boolean parentPositionChanged, boolean parentScrolled) {
positionAtCursorOffset(getCurrentCursorOffset(), parentScrolled);
@@ -4312,24 +4329,30 @@
switch (ev.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
startTouchUpFilter(getCurrentCursorOffset());
- mTouchToWindowOffsetX = ev.getRawX() - mPositionX;
- mTouchToWindowOffsetY = ev.getRawY() - mPositionY;
final PositionListener positionListener = getPositionListener();
mLastParentX = positionListener.getPositionX();
mLastParentY = positionListener.getPositionY();
+ mLastParentXOnScreen = positionListener.getPositionXOnScreen();
+ mLastParentYOnScreen = positionListener.getPositionYOnScreen();
+
+ final float xInWindow = ev.getRawX() - mLastParentXOnScreen + mLastParentX;
+ final float yInWindow = ev.getRawY() - mLastParentYOnScreen + mLastParentY;
+ mTouchToWindowOffsetX = xInWindow - mPositionX;
+ mTouchToWindowOffsetY = yInWindow - mPositionY;
+
mIsDragging = true;
mPreviousLineTouched = UNSET_LINE;
break;
}
case MotionEvent.ACTION_MOVE: {
- final float rawX = ev.getRawX();
- final float rawY = ev.getRawY();
+ final float xInWindow = ev.getRawX() - mLastParentXOnScreen + mLastParentX;
+ final float yInWindow = ev.getRawY() - mLastParentYOnScreen + mLastParentY;
// Vertical hysteresis: vertical down movement tends to snap to ideal offset
final float previousVerticalOffset = mTouchToWindowOffsetY - mLastParentY;
- final float currentVerticalOffset = rawY - mPositionY - mLastParentY;
+ final float currentVerticalOffset = yInWindow - mPositionY - mLastParentY;
float newVerticalOffset;
if (previousVerticalOffset < mIdealVerticalOffset) {
newVerticalOffset = Math.min(currentVerticalOffset, mIdealVerticalOffset);
@@ -4341,8 +4364,8 @@
mTouchToWindowOffsetY = newVerticalOffset + mLastParentY;
final float newPosX =
- rawX - mTouchToWindowOffsetX + mHotspotX + getHorizontalOffset();
- final float newPosY = rawY - mTouchToWindowOffsetY + mTouchOffsetY;
+ xInWindow - mTouchToWindowOffsetX + mHotspotX + getHorizontalOffset();
+ final float newPosY = yInWindow - mTouchToWindowOffsetY + mTouchOffsetY;
updatePosition(newPosX, newPosY);
break;
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index a2a135b..42b89d5 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -122,7 +122,8 @@
void noteNetworkInterfaceType(String iface, int type);
void noteNetworkStatsEnabled();
void noteDeviceIdleMode(int mode, String activeReason, int activeUid);
- void setBatteryState(int status, int health, int plugType, int level, int temp, int volt);
+ void setBatteryState(int status, int health, int plugType, int level, int temp, int volt,
+ int chargeCount);
long getAwakeTimeBattery();
long getAwakeTimePlugged();
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 5358d78..654a4f1 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -108,7 +108,7 @@
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
// Current on-disk Parcel version
- private static final int VERSION = 143 + (USE_OLD_HISTORY ? 1000 : 0);
+ private static final int VERSION = 144 + (USE_OLD_HISTORY ? 1000 : 0);
// Maximum number of items we will record in the history.
private static final int MAX_HISTORY_ITEMS = 2000;
@@ -2089,27 +2089,111 @@
tag.poolIdx = index;
}
+ /*
+ The history delta format uses flags to denote further data in subsequent ints in the parcel.
+
+ There is always the first token, which may contain the delta time, or an indicator of
+ the length of the time (int or long) following this token.
+
+ First token: always present,
+ 31 23 15 7 0
+ █M|L|K|J|I|H|G|F█E|D|C|B|A|T|T|T█T|T|T|T|T|T|T|T█T|T|T|T|T|T|T|T█
+
+ T: the delta time if it is <= 0x7fffd. Otherwise 0x7fffe indicates an int immediately
+ follows containing the time, and 0x7ffff indicates a long immediately follows with the
+ delta time.
+ A: battery level changed and an int follows with battery data.
+ B: state changed and an int follows with state change data.
+ C: state2 has changed and an int follows with state2 change data.
+ D: wakelock/wakereason has changed and an wakelock/wakereason struct follows.
+ E: event data has changed and an event struct follows.
+ F: battery charge in coulombs has changed and an int with the charge follows.
+ G: state flag denoting that the mobile radio was active.
+ H: state flag denoting that the wifi radio was active.
+ I: state flag denoting that a wifi scan occurred.
+ J: state flag denoting that a wifi full lock was held.
+ K: state flag denoting that the gps was on.
+ L: state flag denoting that a wakelock was held.
+ M: state flag denoting that the cpu was running.
+
+ Time int/long: if T in the first token is 0x7ffff or 0x7fffe, then an int or long follows
+ with the time delta.
+
+ Battery level int: if A in the first token is set,
+ 31 23 15 7 0
+ █L|L|L|L|L|L|L|T█T|T|T|T|T|T|T|T█T|V|V|V|V|V|V|V█V|V|V|V|V|V|V|D█
+
+ D: indicates that extra history details follow.
+ V: the battery voltage.
+ T: the battery temperature.
+ L: the battery level (out of 100).
+
+ State change int: if B in the first token is set,
+ 31 23 15 7 0
+ █S|S|S|H|H|H|P|P█F|E|D|C|B| | |A█ | | | | | | | █ | | | | | | | █
+
+ A: wifi multicast was on.
+ B: battery was plugged in.
+ C: screen was on.
+ D: phone was scanning for signal.
+ E: audio was on.
+ F: a sensor was active.
+
+ State2 change int: if C in the first token is set,
+ 31 23 15 7 0
+ █M|L|K|J|I|H|H|G█F|E|D|C| | | | █ | | | | | | | █ |B|B|B|A|A|A|A█
+
+ A: 4 bits indicating the wifi supplicant state: {@link BatteryStats#WIFI_SUPPL_STATE_NAMES}.
+ B: 3 bits indicating the wifi signal strength: 0, 1, 2, 3, 4.
+ C: a bluetooth scan was active.
+ D: the camera was active.
+ E: bluetooth was on.
+ F: a phone call was active.
+ G: the device was charging.
+ H: 2 bits indicating the device-idle (doze) state: off, light, full
+ I: the flashlight was on.
+ J: wifi was on.
+ K: wifi was running.
+ L: video was playing.
+ M: power save mode was on.
+
+ Wakelock/wakereason struct: if D in the first token is set,
+ TODO(adamlesinski): describe wakelock/wakereason struct.
+
+ Event struct: if E in the first token is set,
+ TODO(adamlesinski): describe the event struct.
+
+ History step details struct: if D in the battery level int is set,
+ TODO(adamlesinski): describe the history step details struct.
+
+ Battery charge int: if F in the first token is set, an int representing the battery charge
+ in coulombs follows.
+ */
+
// Part of initial delta int that specifies the time delta.
static final int DELTA_TIME_MASK = 0x7ffff;
static final int DELTA_TIME_LONG = 0x7ffff; // The delta is a following long
static final int DELTA_TIME_INT = 0x7fffe; // The delta is a following int
static final int DELTA_TIME_ABS = 0x7fffd; // Following is an entire abs update.
// Flag in delta int: a new battery level int follows.
- static final int DELTA_BATTERY_LEVEL_FLAG = 0x00080000;
+ static final int DELTA_BATTERY_LEVEL_FLAG = 0x00080000;
// Flag in delta int: a new full state and battery status int follows.
- static final int DELTA_STATE_FLAG = 0x00100000;
+ static final int DELTA_STATE_FLAG = 0x00100000;
// Flag in delta int: a new full state2 int follows.
- static final int DELTA_STATE2_FLAG = 0x00200000;
+ static final int DELTA_STATE2_FLAG = 0x00200000;
// Flag in delta int: contains a wakelock or wakeReason tag.
- static final int DELTA_WAKELOCK_FLAG = 0x00400000;
+ static final int DELTA_WAKELOCK_FLAG = 0x00400000;
// Flag in delta int: contains an event description.
- static final int DELTA_EVENT_FLAG = 0x00800000;
+ static final int DELTA_EVENT_FLAG = 0x00800000;
+ // Flag in delta int: contains a coulomb charge count.
+ static final int DELTA_BATTERY_CHARGE_COULOMBS_FLAG = 0x01000000;
// These upper bits are the frequently changing state bits.
- static final int DELTA_STATE_MASK = 0xff000000;
+ static final int DELTA_STATE_MASK = 0xfe000000;
// These are the pieces of battery state that are packed in to the upper bits of
// the state int that have been packed in to the first delta int. They must fit
- // in DELTA_STATE_MASK.
+ // in STATE_BATTERY_MASK.
+ static final int STATE_BATTERY_MASK = 0xff000000;
static final int STATE_BATTERY_STATUS_MASK = 0x00000007;
static final int STATE_BATTERY_STATUS_SHIFT = 29;
static final int STATE_BATTERY_HEALTH_MASK = 0x00000007;
@@ -2165,6 +2249,12 @@
if (cur.eventCode != HistoryItem.EVENT_NONE) {
firstToken |= DELTA_EVENT_FLAG;
}
+
+ final boolean batteryChargeCoulombsChanged = cur.batteryChargeCoulombs
+ != last.batteryChargeCoulombs;
+ if (batteryChargeCoulombsChanged) {
+ firstToken |= DELTA_BATTERY_CHARGE_COULOMBS_FLAG;
+ }
dest.writeInt(firstToken);
if (DEBUG) Slog.i(TAG, "WRITE DELTA: firstToken=0x" + Integer.toHexString(firstToken)
+ " deltaTime=" + deltaTime);
@@ -2247,6 +2337,12 @@
mLastHistoryStepDetails = null;
}
mLastHistoryStepLevel = cur.batteryLevel;
+
+ if (batteryChargeCoulombsChanged) {
+ if (DEBUG) Slog.i(TAG, "WRITE DELTA: batteryChargeCoulombs="
+ + cur.batteryChargeCoulombs);
+ dest.writeInt(cur.batteryChargeCoulombs);
+ }
}
private int buildBatteryLevelInt(HistoryItem h) {
@@ -2273,7 +2369,7 @@
return ((h.batteryStatus&STATE_BATTERY_STATUS_MASK)<<STATE_BATTERY_STATUS_SHIFT)
| ((h.batteryHealth&STATE_BATTERY_HEALTH_MASK)<<STATE_BATTERY_HEALTH_SHIFT)
| ((plugType&STATE_BATTERY_PLUG_MASK)<<STATE_BATTERY_PLUG_SHIFT)
- | (h.states&(~DELTA_STATE_MASK));
+ | (h.states&(~STATE_BATTERY_MASK));
}
private void computeHistoryStepDetails(final HistoryStepDetails out,
@@ -2412,7 +2508,7 @@
if ((firstToken&DELTA_STATE_FLAG) != 0) {
int stateInt = src.readInt();
- cur.states = (firstToken&DELTA_STATE_MASK) | (stateInt&(~DELTA_STATE_MASK));
+ cur.states = (firstToken&DELTA_STATE_MASK) | (stateInt&(~STATE_BATTERY_MASK));
cur.batteryStatus = (byte)((stateInt>>STATE_BATTERY_STATUS_SHIFT)
& STATE_BATTERY_STATUS_MASK);
cur.batteryHealth = (byte)((stateInt>>STATE_BATTERY_HEALTH_SHIFT)
@@ -2438,7 +2534,7 @@
+ " batteryPlugType=" + cur.batteryPlugType
+ " states=0x" + Integer.toHexString(cur.states));
} else {
- cur.states = (firstToken&DELTA_STATE_MASK) | (cur.states&(~DELTA_STATE_MASK));
+ cur.states = (firstToken&DELTA_STATE_MASK) | (cur.states&(~STATE_BATTERY_MASK));
}
if ((firstToken&DELTA_STATE2_FLAG) != 0) {
@@ -2493,6 +2589,10 @@
} else {
cur.stepDetails = null;
}
+
+ if ((firstToken&DELTA_BATTERY_CHARGE_COULOMBS_FLAG) != 0) {
+ cur.batteryChargeCoulombs = src.readInt();
+ }
}
@Override
@@ -5611,12 +5711,12 @@
mWifiControllerActivity.reset(false);
}
- if (mBsi.mBluetoothActivity != null) {
- mBsi.mBluetoothActivity.reset(false);
+ if (mBluetoothControllerActivity != null) {
+ mBluetoothControllerActivity.reset(false);
}
- if (mBsi.mModemActivity != null) {
- mBsi.mModemActivity.reset(false);
+ if (mModemControllerActivity != null) {
+ mModemControllerActivity.reset(false);
}
mUserCpuTime.reset(false);
@@ -9210,7 +9310,7 @@
public static final int BATTERY_PLUGGED_NONE = 0;
public void setBatteryStateLocked(int status, int health, int plugType, int level,
- int temp, int volt) {
+ int temp, int volt, int chargeCount) {
final boolean onBattery = plugType == BATTERY_PLUGGED_NONE;
final long uptime = mClocks.uptimeMillis();
final long elapsedRealtime = mClocks.elapsedRealtime();
@@ -9254,6 +9354,7 @@
if (mDischargePlugLevel < 0) {
mDischargePlugLevel = level;
}
+
if (onBattery != mOnBattery) {
mHistoryCur.batteryLevel = (byte)level;
mHistoryCur.batteryStatus = (byte)status;
@@ -9261,6 +9362,7 @@
mHistoryCur.batteryPlugType = (byte)plugType;
mHistoryCur.batteryTemperature = (short)temp;
mHistoryCur.batteryVoltage = (char)volt;
+ mHistoryCur.batteryChargeCoulombs = chargeCount;
setOnBatteryLocked(elapsedRealtime, uptime, onBattery, oldStatus, level);
} else {
boolean changed = false;
@@ -9294,6 +9396,11 @@
mHistoryCur.batteryVoltage = (char)volt;
changed = true;
}
+ if (chargeCount >= (mHistoryCur.batteryChargeCoulombs+10)
+ || chargeCount <= (mHistoryCur.batteryChargeCoulombs-10)) {
+ mHistoryCur.batteryChargeCoulombs = chargeCount;
+ changed = true;
+ }
long modeBits = (((long)mInitStepMode) << STEP_LEVEL_INITIAL_MODE_SHIFT)
| (((long)mModStepMode) << STEP_LEVEL_MODIFIED_MODE_SHIFT)
| (((long)(level&0xff)) << STEP_LEVEL_LEVEL_SHIFT);
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 1619843..5bb8969 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -16,6 +16,7 @@
package com.android.internal.policy;
+import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import static android.view.WindowManager.LayoutParams.*;
@@ -80,6 +81,7 @@
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.provider.Settings;
import android.transition.Scene;
import android.transition.Transition;
import android.transition.TransitionInflater;
@@ -204,6 +206,10 @@
*/
int mPanelChordingKey;
+ // This stores if the system supports Picture-in-Picture
+ // to see if KEYCODE_WINDOW should be handled here or not.
+ private boolean mSupportsPictureInPicture;
+
private ImageView mLeftIconView;
private ImageView mRightIconView;
@@ -313,6 +319,12 @@
// the token will not be updated as for a new window.
getAttributes().token = preservedWindow.getAttributes().token;
}
+ // Even though the device doesn't support picture-in-picture mode,
+ // an user can force using it through developer options.
+ boolean forceResizable = Settings.Global.getInt(context.getContentResolver(),
+ DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, 0) != 0;
+ mSupportsPictureInPicture = forceResizable || context.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_PICTURE_IN_PICTURE);
}
@Override
@@ -2004,8 +2016,8 @@
}
case KeyEvent.KEYCODE_WINDOW: {
- if (!event.isCanceled()) {
- enterPictureInPictureMode();
+ if (mSupportsPictureInPicture && !event.isCanceled()) {
+ getWindowControllerCallback().enterPictureInPictureModeIfPossible();
}
return true;
}
diff --git a/core/java/com/android/internal/widget/ImageFloatingTextView.java b/core/java/com/android/internal/widget/ImageFloatingTextView.java
index e2d8ffc..926ebd1 100644
--- a/core/java/com/android/internal/widget/ImageFloatingTextView.java
+++ b/core/java/com/android/internal/widget/ImageFloatingTextView.java
@@ -16,22 +16,19 @@
package com.android.internal.widget;
-import com.android.internal.R;
-
import android.annotation.Nullable;
import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.TypedArray;
import android.text.BoringLayout;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextUtils;
import android.util.AttributeSet;
-import android.util.TypedValue;
import android.view.RemotableViewMethod;
import android.widget.RemoteViews;
import android.widget.TextView;
+import com.android.internal.R;
+
/**
* A TextView that can float around an image on the end.
*
@@ -96,9 +93,7 @@
@RemotableViewMethod
public void setHasImage(boolean hasImage) {
- mIndentLines = hasImage ? 2 : 0;
- // The new layout will be automatically created when the text is
- // set again by the notification.
+ setNumIndentLines(hasImage ? 2 : 0);
}
/**
diff --git a/core/java/com/android/internal/widget/NotificationActionListLayout.java b/core/java/com/android/internal/widget/NotificationActionListLayout.java
new file mode 100644
index 0000000..9dd118c
--- /dev/null
+++ b/core/java/com/android/internal/widget/NotificationActionListLayout.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.internal.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Pair;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RemoteViews;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+
+/**
+ * Layout for notification actions that ensures that no action consumes more than their share of
+ * the remaining available width, and the last action consumes the remaining space.
+ */
+@RemoteViews.RemoteView
+public class NotificationActionListLayout extends ViewGroup {
+
+ private int mTotalWidth = 0;
+ private ArrayList<Pair<Integer, TextView>> mMeasureOrderTextViews = new ArrayList<>();
+ private ArrayList<View> mMeasureOrderOther = new ArrayList<>();
+
+ public NotificationActionListLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int N = getChildCount();
+ int textViews = 0;
+ int otherViews = 0;
+ int notGoneChildren = 0;
+
+ View lastNotGoneChild = null;
+ for (int i = 0; i < N; i++) {
+ View c = getChildAt(i);
+ if (c instanceof TextView) {
+ textViews++;
+ } else {
+ otherViews++;
+ }
+ if (c.getVisibility() != GONE) {
+ notGoneChildren++;
+ lastNotGoneChild = c;
+ }
+ }
+
+ // Rebuild the measure order if the number of children changed or the text length of
+ // any of the children changed.
+ boolean needRebuild = false;
+ if (textViews != mMeasureOrderTextViews.size()
+ || otherViews != mMeasureOrderOther.size()) {
+ needRebuild = true;
+ }
+ if (!needRebuild) {
+ final int size = mMeasureOrderTextViews.size();
+ for (int i = 0; i < size; i++) {
+ Pair<Integer, TextView> pair = mMeasureOrderTextViews.get(i);
+ if (pair.first != pair.second.getText().length()) {
+ needRebuild = true;
+ }
+ }
+ }
+ if (notGoneChildren > 1 && needRebuild) {
+ rebuildMeasureOrder(textViews, otherViews);
+ }
+
+ final boolean constrained =
+ MeasureSpec.getMode(widthMeasureSpec) != MeasureSpec.UNSPECIFIED;
+
+ final int innerWidth = MeasureSpec.getSize(widthMeasureSpec) - mPaddingLeft - mPaddingRight;
+ final int otherSize = mMeasureOrderOther.size();
+ int usedWidth = 0;
+
+ // Optimization: Don't do this if there's only one child.
+ int measuredChildren = 0;
+ for (int i = 0; i < N && notGoneChildren > 1; i++) {
+ // Measure shortest children first. To avoid measuring twice, we approximate by looking
+ // at the text length.
+ View c;
+ if (i < otherSize) {
+ c = mMeasureOrderOther.get(i);
+ } else {
+ c = mMeasureOrderTextViews.get(i - otherSize).second;
+ }
+ if (c.getVisibility() == GONE) {
+ continue;
+ }
+ MarginLayoutParams lp = (MarginLayoutParams) c.getLayoutParams();
+
+ int usedWidthForChild = usedWidth;
+ if (constrained) {
+ // Make sure that this child doesn't consume more than its share of the remaining
+ // total available space. Not used space will benefit subsequent views. Since we
+ // measure in the order of (approx.) size, a large view can still take more than its
+ // share if the others are small.
+ int availableWidth = innerWidth - usedWidth;
+ int maxWidthForChild = availableWidth / (notGoneChildren - measuredChildren);
+
+ usedWidthForChild = innerWidth - maxWidthForChild;
+ }
+
+ measureChildWithMargins(c, widthMeasureSpec, usedWidthForChild,
+ heightMeasureSpec, 0 /* usedHeight */);
+
+ usedWidth += c.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
+ measuredChildren++;
+ }
+
+ // Make sure to measure the last child full-width if we didn't use up the entire width,
+ // or we didn't measure yet because there's just one child.
+ if (lastNotGoneChild != null && (constrained && usedWidth < innerWidth
+ || notGoneChildren == 1)) {
+ MarginLayoutParams lp = (MarginLayoutParams) lastNotGoneChild.getLayoutParams();
+ if (notGoneChildren > 1) {
+ // Need to make room, since we already measured this once.
+ usedWidth -= lastNotGoneChild.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
+ }
+
+ int originalWidth = lp.width;
+ lp.width = LayoutParams.MATCH_PARENT;
+ measureChildWithMargins(lastNotGoneChild, widthMeasureSpec, usedWidth,
+ heightMeasureSpec, 0 /* usedHeight */);
+ lp.width = originalWidth;
+
+ usedWidth += lastNotGoneChild.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
+ }
+
+ mTotalWidth = usedWidth + mPaddingRight + mPaddingLeft;
+ setMeasuredDimension(resolveSize(getSuggestedMinimumWidth(), widthMeasureSpec),
+ resolveSize(getSuggestedMinimumHeight(), heightMeasureSpec));
+ }
+
+ private void rebuildMeasureOrder(int capacityText, int capacityOther) {
+ clearMeasureOrder();
+ mMeasureOrderTextViews.ensureCapacity(capacityText);
+ mMeasureOrderOther.ensureCapacity(capacityOther);
+ final int childCount = getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ View c = getChildAt(i);
+ if (c instanceof TextView && ((TextView) c).getText().length() > 0) {
+ mMeasureOrderTextViews.add(Pair.create(((TextView) c).getText().length(),
+ (TextView)c));
+ } else {
+ mMeasureOrderOther.add(c);
+ }
+ }
+ mMeasureOrderTextViews.sort(MEASURE_ORDER_COMPARATOR);
+ }
+
+ private void clearMeasureOrder() {
+ mMeasureOrderOther.clear();
+ mMeasureOrderTextViews.clear();
+ }
+
+ @Override
+ public void onViewAdded(View child) {
+ super.onViewAdded(child);
+ clearMeasureOrder();
+ }
+
+ @Override
+ public void onViewRemoved(View child) {
+ super.onViewRemoved(child);
+ clearMeasureOrder();
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ final boolean isLayoutRtl = isLayoutRtl();
+ final int paddingTop = mPaddingTop;
+
+ int childTop;
+ int childLeft;
+
+ // Where bottom of child should go
+ final int height = bottom - top;
+
+ // Space available for child
+ int innerHeight = height - paddingTop - mPaddingBottom;
+
+ final int count = getChildCount();
+
+ final int layoutDirection = getLayoutDirection();
+ switch (Gravity.getAbsoluteGravity(Gravity.START, layoutDirection)) {
+ case Gravity.RIGHT:
+ // mTotalWidth contains the padding already
+ childLeft = mPaddingLeft + right - left - mTotalWidth;
+ break;
+
+ case Gravity.LEFT:
+ default:
+ childLeft = mPaddingLeft;
+ break;
+ }
+
+ int start = 0;
+ int dir = 1;
+ //In case of RTL, start drawing from the last child.
+ if (isLayoutRtl) {
+ start = count - 1;
+ dir = -1;
+ }
+
+ for (int i = 0; i < count; i++) {
+ final int childIndex = start + dir * i;
+ final View child = getChildAt(childIndex);
+ if (child.getVisibility() != GONE) {
+ final int childWidth = child.getMeasuredWidth();
+ final int childHeight = child.getMeasuredHeight();
+
+ final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
+
+ childTop = paddingTop + ((innerHeight - childHeight) / 2)
+ + lp.topMargin - lp.bottomMargin;
+
+ childLeft += lp.leftMargin;
+ child.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);
+ childLeft += childWidth + lp.rightMargin;
+ }
+ }
+ }
+
+ @Override
+ public LayoutParams generateLayoutParams(AttributeSet attrs) {
+ return new MarginLayoutParams(getContext(), attrs);
+ }
+
+ @Override
+ protected LayoutParams generateDefaultLayoutParams() {
+ return new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
+ }
+
+ @Override
+ protected LayoutParams generateLayoutParams(LayoutParams p) {
+ if (p instanceof MarginLayoutParams) {
+ return new MarginLayoutParams((MarginLayoutParams)p);
+ }
+ return new MarginLayoutParams(p);
+ }
+
+ @Override
+ protected boolean checkLayoutParams(LayoutParams p) {
+ return p instanceof MarginLayoutParams;
+ }
+
+ public static final Comparator<Pair<Integer, TextView>> MEASURE_ORDER_COMPARATOR
+ = (a, b) -> a.first.compareTo(b.first);
+}
diff --git a/core/jni/android_graphics_drawable_VectorDrawable.cpp b/core/jni/android_graphics_drawable_VectorDrawable.cpp
index 0de6549..9e69f79 100644
--- a/core/jni/android_graphics_drawable_VectorDrawable.cpp
+++ b/core/jni/android_graphics_drawable_VectorDrawable.cpp
@@ -92,14 +92,14 @@
/**
* Draw
*/
-static void draw(JNIEnv* env, jobject, jlong treePtr, jlong canvasPtr,
+static int draw(JNIEnv* env, jobject, jlong treePtr, jlong canvasPtr,
jlong colorFilterPtr, jobject jrect, jboolean needsMirroring, jboolean canReuseCache) {
VectorDrawable::Tree* tree = reinterpret_cast<VectorDrawable::Tree*>(treePtr);
Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr);
SkRect rect;
GraphicsJNI::jrect_to_rect(env, jrect, &rect);
SkColorFilter* colorFilter = reinterpret_cast<SkColorFilter*>(colorFilterPtr);
- tree->draw(canvas, colorFilter, rect, needsMirroring, canReuseCache);
+ return tree->draw(canvas, colorFilter, rect, needsMirroring, canReuseCache);
}
/**
@@ -349,7 +349,7 @@
{"nGetRootAlpha", "!(J)F", (void*)getRootAlpha},
{"nSetAllowCaching", "!(JZ)V", (void*)setAllowCaching},
- {"nDraw", "(JJJLandroid/graphics/Rect;ZZ)V", (void*)draw},
+ {"nDraw", "(JJJLandroid/graphics/Rect;ZZ)I", (void*)draw},
{"nCreateFullPath", "!()J", (void*)createEmptyFullPath},
{"nCreateFullPath", "!(J)J", (void*)createFullPath},
{"nUpdateFullPathProperties", "!(JFIFIFFFFFIII)V", (void*)updateFullPathPropertiesAndStrokeStyles},
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 91f003d..9459257 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -77,6 +77,7 @@
virtual void postData(int32_t msgType, const sp<IMemory>& dataPtr,
camera_frame_metadata_t *metadata);
virtual void postDataTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr);
+ virtual void postRecordingFrameHandleTimestamp(nsecs_t timestamp, native_handle_t* handle);
void postMetadata(JNIEnv *env, int32_t msgType, camera_frame_metadata_t *metadata);
void addCallbackBuffer(JNIEnv *env, jbyteArray cbb, int msgType);
void setCallbackMode(JNIEnv *env, bool installed, bool manualMode);
@@ -349,6 +350,11 @@
postData(msgType, dataPtr, NULL);
}
+void JNICameraContext::postRecordingFrameHandleTimestamp(nsecs_t, native_handle_t*) {
+ // This is not needed at app layer. This should not be called because JNICameraContext cannot
+ // start video recording.
+}
+
void JNICameraContext::postMetadata(JNIEnv *env, int32_t msgType, camera_frame_metadata_t *metadata)
{
jobjectArray obj = NULL;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 22cf279..040da4d 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1989,6 +1989,11 @@
<permission android:name="android.permission.UPDATE_CONFIG"
android:protectionLevel="signature|privileged" />
+ <!-- Allows the system to reset throttling in shortcut manager.
+ @hide -->
+ <permission android:name="android.permission.RESET_SHORTCUT_MANAGER_THROTTLING"
+ android:protectionLevel="signature" />
+
<!-- ========================================= -->
<!-- Permissions for special development tools -->
<!-- ========================================= -->
diff --git a/core/res/res/layout/notification_material_action_list.xml b/core/res/res/layout/notification_material_action_list.xml
index ac37c4a..547d3ca 100644
--- a/core/res/res/layout/notification_material_action_list.xml
+++ b/core/res/res/layout/notification_material_action_list.xml
@@ -18,7 +18,7 @@
android:id="@+id/actions_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
- <LinearLayout
+ <com.android.internal.widget.NotificationActionListLayout
android:id="@+id/actions"
android:layout_width="match_parent"
android:layout_height="56dp"
@@ -29,5 +29,5 @@
android:background="@color/notification_action_list"
>
<!-- actions will be added here -->
- </LinearLayout>
+ </com.android.internal.widget.NotificationActionListLayout>
</FrameLayout>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 1bc1ed1..64aa609 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Haal venster-inhoud op"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ondersoek die inhoud van \'n venster waarmee jy interaksie het."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Skakel Verken deur raak aan"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Aangeraakte items sal hardop gesê word en die skerm kan verken word met behulp van gebare."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Skakel verbeterde webtoeganklikheid aan"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skripte kan geïnstalleer word om program-inhoud meer toeganklik te maak."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Neem teks wat jy tik waar"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Voer PUK en nuwe PIN-kode in"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuwe PIN-kode"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Raak om wagwoord in te voer"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Voer wagwoord in om te ontsluit"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Voer PIN in om te ontsluit"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Verkeerde PIN-kode."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 uur</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"nou"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> m.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> u.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> u.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> j.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> j.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">oor <xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="one">oor <xliff:g id="COUNT_0">%d</xliff:g> m.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">oor <xliff:g id="COUNT_1">%d</xliff:g> u.</item>
+ <item quantity="one">oor <xliff:g id="COUNT_0">%d</xliff:g> u.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">oor <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="one">oor <xliff:g id="COUNT_0">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">oor <xliff:g id="COUNT_1">%d</xliff:g> j.</item>
+ <item quantity="one">oor <xliff:g id="COUNT_0">%d</xliff:g> j.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Videoprobleem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Hierdie video is nie geldig vir stroming na hierdie toestel nie."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Kan nie hierdie video speel nie."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Sommige stelselfunksies werk moontlik nie"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nie genoeg berging vir die stelsel nie. Maak seker jy het 250 MB spasie beskikbaar en herbegin."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> loop tans"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Raak vir meer inligting of om die program te stop."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Kanselleer"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Begin programme."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Voltooi herlaai."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> loop"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Raak om na program te wissel"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Wissel programme?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"\'n Ander program loop reeds wat gestop moet word voor jy \'n nuwe een kan begin."</string>
<string name="old_app_action" msgid="493129172238566282">"Keer terug na <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Begin <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop die ou program sonder om te stoor."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> het berginglimiet oorskry"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Hoopstorting is ingesamel; raak om te deel"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Deel hoopstorting?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Die proses <xliff:g id="PROC">%1$s</xliff:g> het sy prosesberginglimiet van <xliff:g id="SIZE">%2$s</xliff:g> oorskry. \'n Hoopstorting is beskikbaar wat jy met sy ontwikkelaar kan deel. Pas op: Hierdie hoopstorting kan enige van jou persoonlike inligting bevat waartoe die program toegang het."</string>
<string name="sendText" msgid="5209874571959469142">"Kies \'n handeling vir teks"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi het geen internettoegang nie"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Raak vir opsies"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kon nie aan Wi-Fikoppel nie"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" het \'n swak internetverbinding."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Laat verbinding toe?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Begin Wi-Fi Direct. Dit sal die Wi-Fi-kliënt/warmkol afskakel."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kon nie Wi-Fi Direct begin nie."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direk is aan"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Raak vir instellings"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Aanvaar"</string>
<string name="decline" msgid="2112225451706137894">"Weier"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Uitnodiging gestuur"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB vir foto-oordrag"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB vir MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Gekoppel aan \'n USB-toebehoorsel"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Raak vir meer opsies."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-ontfouter gekoppel"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Raak om USB-ontfouting te deaktiveer."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Neem tans foutverslag …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Deel foutverslag?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deel tans foutverslag …"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nuwe <xliff:g id="NAME">%s</xliff:g> bespeur"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Om foto\'s en media oor te dra"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Gekorrupteerde <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> is korrup. Raak om reg te maak."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Niegesteunde <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Hierdie toestel steun nie hierdie <xliff:g id="NAME">%s</xliff:g> nie. Raak om in \'n gesteunde formaat op te stel."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> is onverwags verwyder"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Demonteer <xliff:g id="NAME">%s</xliff:g> voordat dit verwyder word om dataverlies te voorkom"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Het <xliff:g id="NAME">%s</xliff:g> verwyder"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Laat \'n program toe om installasiesessies te lees. Dit laat dit toe om besonderhede van aktiewe pakketinstallasies te sien."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"versoek installeerpakkette"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Laat \'n program toe om te versoek dat pakkette geïnstalleer word."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Raak twee keer vir zoembeheer"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Klop twee keer vir zoembeheer"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Kon nie legstuk byvoeg nie."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Gaan"</string>
<string name="ime_action_search" msgid="658110271822807811">"Soek"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Kennisgewingklassifiseringsdiens"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN geaktiveer"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN is geaktiveer deur <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Raak om die netwerk te bestuur."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Gekoppel aan <xliff:g id="SESSION">%s</xliff:g>. Raak om die netwerk te bestuur."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tik om netwerk te bestuur."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Gekoppel aan <xliff:g id="SESSION">%s</xliff:g>. Tik om die netwerk te bestuur."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Altydaan-VPN koppel tans..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Altydaan-VPN gekoppel"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Altydaan-VPN-fout"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Raak om op te stel"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Kies lêer"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Geen lêer gekies nie"</string>
<string name="reset" msgid="2448168080964209908">"Stel terug"</string>
<string name="submit" msgid="1602335572089911941">"Dien in"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Motormodus geaktiveer"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Raak om motormodus te verlaat."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Verbinding of Wi-Fi-warmkol aktief"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Raak om op te stel."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Terug"</string>
<string name="next_button_label" msgid="1080555104677992408">"Volgende"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Slaan oor"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Voeg rekening by"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Vermeerder"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Verminder"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> raak en hou."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Gly op om te vermeeder en af om te verminder."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Vermeerder minuut"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Verminder minute"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-berging"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redigeer"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Dataverbruik-waarskuwing"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Raak gebruik/instellings te sien."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G-datalimiet bereik"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-datalimiet bereik"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Sellulêredata-limiet bereik"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi se datalimiet oorskry"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> oor gespesifiseerde limiet."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Agtergronddata is beperk"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Raak om beperking te verwyder."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sekuriteitsertifikaat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Die sertifikaat is geldig."</string>
<string name="issued_to" msgid="454239480274921032">"Uitgereik aan:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Kies jaar"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> uitgevee"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Werk-<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Raak en hou Terug om hierdie skerm te ontspeld."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Om hierdie skerm te ontspeld, raak en hou Oorsig."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Program is vasgespeld: Dit mag nie op hierdie toestel ontspeld word nie."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skerm vasgespeld"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skerm ontspeld"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index c325062..d88315a 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"የተነኩ ንጥሎች ጮክ ተብለው ይነገሩና የጣት ምልክቶችን በመጠቀም ማያ ገጹ ሊታሰስ ይችላል።"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"የተሻሻለ የድር ተደራሽነት ያብሩ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"የመተግበሪያ ይዘት ይበልጥ የሚገኙ ለማድረግ ስክሪፕቶች ሊጫኑ ይችላሉ።"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"የሚተይቡት ጽሑፍ ይመልከቱ"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK እና አዲስ ፒን ተይብ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"የPUK ኮድ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"አዲስ Pin ኮድ"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"የይለፍ ቃል ለመተየብ ንካ"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ለመክፈት የይለፍ ቃል ተይብ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ለመክፈት ፒን ተይብ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ትክክል ያልሆነ ፒን ኮድ።"</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ሰዓቶች</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"አሁን"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ደ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ደ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ሰ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ሰ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ቀ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ቀ</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ዓ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ዓ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">በ<xliff:g id="COUNT_1">%d</xliff:g> ደ ውስጥ</item>
+ <item quantity="other">በ<xliff:g id="COUNT_1">%d</xliff:g> ደ ውስጥ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">በ<xliff:g id="COUNT_1">%d</xliff:g> ሰ ውስጥ</item>
+ <item quantity="other">በ<xliff:g id="COUNT_1">%d</xliff:g> ሰ ውስጥ</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">በ<xliff:g id="COUNT_1">%d</xliff:g> ቀ ውስጥ</item>
+ <item quantity="other">በ<xliff:g id="COUNT_1">%d</xliff:g> ቀ ውስጥ</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">በ<xliff:g id="COUNT_1">%d</xliff:g> ዓ ውስጥ</item>
+ <item quantity="other">በ<xliff:g id="COUNT_1">%d</xliff:g> ዓ ውስጥ</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"የቪዲዮ ችግር"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ይቅርታ፣ ይህ ቪዲዮ በዚህ መሣሪያ ለመልቀቅ ትክክል አይደለም።"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ይሄን ቪዲዮ ማጫወት አልተቻለም።"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"አንዳንድ የስርዓት ተግባራት ላይሰሩ ይችላሉ"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ለስርዓቱ የሚሆን በቂ ቦታ የለም። 250 ሜባ ነጻ ቦታ እንዳለዎት ያረጋግጡና ዳግም ያስጀምሩ።"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> እያሄደ ነው"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"ተጨማሪ መረጃ ለማግኘት ወይም መተግበሪያውን ለማቆም ይንኩ።"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"እሺ"</string>
<string name="cancel" msgid="6442560571259935130">"ይቅር"</string>
<string name="yes" msgid="5362982303337969312">"እሺ"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"መተግበሪያዎችን በማስጀመር ላይ፡፡"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"አጨራረስ ማስነሻ፡፡"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> አሂድ"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"መተግበሪያውን ለመለወጥ ዳስ"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"መተግበሪያዎችን ለውጥ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"አዲስ ከመጀመርህ በፊት መቆም ያለበት ሌላ መተግበሪያ እየሄደ ነው።"</string>
<string name="old_app_action" msgid="493129172238566282">"ወደ <xliff:g id="OLD_APP">%1$s</xliff:g> ተመለስ"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"ጀምር <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"የድሮውን ትግበራ ሳታስቀምጥ አቁም።"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> የማህደረ ትውስታ ገደብን አልፏል"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"የቆሻሻ ቁልል ተሰብስቧል፦ ለማጋራት ይንኩ"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"የቆሻሻ ቁልል ይጋራ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"የ<xliff:g id="PROC">%1$s</xliff:g> ሂደት የማህደረ ትውስታ ሂደት <xliff:g id="SIZE">%2$s</xliff:g> ገደቡን አልፏል። የቆሻሻ ቁልል ከገንቢው ጋር እንዲያጋሩ ለእርስዎ ሊገኝ ይችላል። ጥንቃቄ ያድርጉ፦ ይህ የቆሻሻ ቁልል መተግበሪያው መዳረሻ ያለው የሆነ የእርስዎ የግል መረጃን ሊይዝ ይችላል።"</string>
<string name="sendText" msgid="5209874571959469142">"ለፅሁፍ ድርጊት ምረጥ"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi በይነመረብ መዳረሻ የለውም"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ለአማራጮች ይንኩ"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ወደ Wi-Fi ለማያያዝ አልተቻለም"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ደካማ የበይነመረብ ግንኙነት ኣለው።"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ግንኙነት ይፈቀድ?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"የWi-Fi በቀጥታ ጀምር።ይህ የWi-Fi ደንበኛ /ድረስ ነጥብ ያጠፋል።"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"በቀጥታ Wi-Fi ማስጀመር አልተቻለም።"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"የWi-Fi ቀጥታ በርቷል"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ለቅንብሮች ንካ"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ተቀበል"</string>
<string name="decline" msgid="2112225451706137894">"ውድቅ አድርግ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ግብዣ ተልኳል"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ዩኤስቢ ለፎቶ ሽግግር"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"ዩኤስቢ ለMIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ለUSB ተቀጥላ ተያይዟል"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"ለተጨማሪ አማራጮች ነካ ያድርጉ።"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB አድስ ተያይዟል"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ማረሚያ ላለማንቃት ዳስስ።"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"የሳንካ ሪፖርትን በመውሰድ ላይ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"የሳንካ ሪፖርት ይጋራ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"የሳንካ ሪፖርትን በማጋራት ላይ…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"አዲስ <xliff:g id="NAME">%s</xliff:g> ተገኝቷል"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ፎቶዎችን እና ማህደረመረጃን ለማስተላለፍ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ተበላሽቷል <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> የተባለሸ ነው። ለመጠገን ይንኩ።"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ያልተደገፈ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ይህ መሳሪያ ይህን <xliff:g id="NAME">%s</xliff:g> አይደግፍም። በሚደገፍ ቅርጸት ለማዘጋጀት ዝግጅትን ይንኩ።"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ሳይታሰብ ተወግዷል"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ውሂብ እንዳይጠፋ ለመከላከል ከማስወገድዎ በፊት <xliff:g id="NAME">%s</xliff:g>ን ያላቅቁት"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"«<xliff:g id="NAME">%s</xliff:g>» ተወግዷል"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"መተግበሪያው የመጫን ክፍለ ጊዜዎችን እንዲያነብ ይፈቅድለታል። ይህም ስለ ገቢር የጥቅል ጭነቶች ዝርዝር መረጃን እንዲያይ ይፈቅድለታል።"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"የጭነት ጥቅሎችን መጠየቅ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"መተግበሪያ የጥቅሎች መጫንን እንዲጠይቅ ይፈቅዳል።"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ለአጉላ መቆጣጠሪያ ሁለት ጊዜ ነካ አድርግ"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"ለአጉላ መቆጣጠሪያ ሁለት ጊዜ ነካ አድርግ"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ምግብር ማከል አልተቻለም።"</string>
<string name="ime_action_go" msgid="8320845651737369027">"ሂድ"</string>
<string name="ime_action_search" msgid="658110271822807811">"ፍለጋ"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"የማሳወቂያ ደረጃ ሰጪ አገልግሎት"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ነቅቷል።"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN በ<xliff:g id="APP">%s</xliff:g>ገብሯል"</string>
- <string name="vpn_text" msgid="3011306607126450322">"አውታረመረብ ለማደራጀት ንካ።"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"ለ<xliff:g id="SESSION">%s</xliff:g>የተገናኘ። አውታረመረቡን ለማደራጀት ንካ።"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"አውታረመረብ ለማደራጀት ሁለቴ ንካ።"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"ለ<xliff:g id="SESSION">%s</xliff:g> የተገናኘ። አውታረመረቡን ለማደራጀት ሁለቴ ንካ።"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ሁልጊዜ የበራ VPN በመገናኘት ላይ…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ሁልጊዜ የበራ VPN ተገናኝቷል"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ሁልጊዜ የበራ VPN ስህተት"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ለማዋቀር ይንኩ"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ፋይል ምረጥ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ምንም ፋይል አልተመረጠም"</string>
<string name="reset" msgid="2448168080964209908">"ዳግም አስጀምር"</string>
<string name="submit" msgid="1602335572089911941">"አስረክብ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"የመኪና ሁነታ ነቅቷል"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ከመኪና ሁናቴ ለመውጣት ንካ።"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"መሰካት ወይም ገባሪ ድረስ ነጥብ"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"ለማዘጋጀት ንካ።"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"ተመለስ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ቀጥሎ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ዝለል"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"መለያ አክል"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ጨምር"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ቀንስ"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ንካ እና ያዝ።"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ለመጨመር ወደ ላይ እና ለመቀነስ ወደ ታች አንሸራትት።"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ደቂቃ ጨምር"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ደቂቃ ቀንስ"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"የUSB ማከማቻ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"አርትዕ"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"የውሂብ አጠቃቀም ማስጠንቀቂየ"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ቅንብሮችን እና አጠቃቀምን ለማየት ይንኩ።"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"የ2ጂ-3ጂ ውሂብ ገደብ ላይ ተደርሷል"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"የ4ጂ ውሂብ ገደብ ላይ ተደርሷል"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"የተንቀሳቃሽ ስልክ ውሂብ ገደብ ላይ ተደርሷል"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ውሂብ ገደብ ታልፏል"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ከተወሰነለት በላይ።"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ዳራ ውሂብ የተገደበ ነው"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ገደብ ለማስወገድ ንካ።"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"የደህንነት ዕውቅና ማረጋገጫ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ይህ የዐዕውቅና ማረጋገጫ ትክክል ነው።"</string>
<string name="issued_to" msgid="454239480274921032">"ለ፡ ተዘጋጀ"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"ዓመት ይምረጡ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ተሰርዟል"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ስራ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ይህን ማያ ገጽ ለመንቀል ይንኩት እና መልሰው ይያዙት።"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ይህን ማያ ገጽ ለመንቀል አጠቃላይ እይታን ይንኩትና ይያዙት።"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"መተግበሪያ ተሰክቷል፦ በዚህ መሣሪያ ላይ ማላቀቅ አይፈቀድም።"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ማያ ገጽ ተሰክቷል"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ማያ ገጽ ተነቅሏል"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 0841c82..97ba732 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -275,7 +275,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"سيتم نطق العناصر التي تم لمسها بصوت عال ويمكن استكشاف الشاشة باستخدام الإيماءات."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"تشغيل إمكانية الدخول المحسّن عبر الويب"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"قد يتم تثبيت النصوص البرمجية لتسهيل الدخول إلى المحتوى."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ملاحظة النص الذي تكتبه"</string>
@@ -674,7 +675,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"اكتب رمز PUK ورمز رمز PIN الجديد"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"رمز PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"رمز رمز PIN الجديد"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"المس لكتابة كلمة المرور"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"اكتب كلمة المرور لإلغاء التأمين"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"اكتب رمز PIN لإلغاء التأمين"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"رمز PIN غير صحيح."</string>
@@ -887,14 +889,70 @@
<item quantity="one">ساعة واحدة</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"الآن"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> دقيقة</item>
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> دقيقة</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> دقائق</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> دقيقة</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دقيقة</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> دقيقة</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> ساعة</item>
+ <item quantity="two">ساعتان (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> ساعات</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> ساعة</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ساعة</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ساعة</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> يوم</item>
+ <item quantity="two">يومان <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> أيام</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> يومًا</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> يوم</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> يوم</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> عام</item>
+ <item quantity="two">عامان <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> أعوام</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> عامًا</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> عام</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> عام</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="zero">في <xliff:g id="COUNT_1">%d</xliff:g> دقيقة</item>
+ <item quantity="two">في دقيقتين (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+ <item quantity="few">في <xliff:g id="COUNT_1">%d</xliff:g> دقائق</item>
+ <item quantity="many">في <xliff:g id="COUNT_1">%d</xliff:g> دقيقة</item>
+ <item quantity="other">في <xliff:g id="COUNT_1">%d</xliff:g> دقيقة</item>
+ <item quantity="one">في <xliff:g id="COUNT_0">%d</xliff:g> دقيقة</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="zero">في <xliff:g id="COUNT_1">%d</xliff:g> ساعة</item>
+ <item quantity="two">في ساعتين (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+ <item quantity="few">في <xliff:g id="COUNT_1">%d</xliff:g> ساعات</item>
+ <item quantity="many">في <xliff:g id="COUNT_1">%d</xliff:g> ساعة</item>
+ <item quantity="other">في <xliff:g id="COUNT_1">%d</xliff:g> ساعة</item>
+ <item quantity="one">في <xliff:g id="COUNT_0">%d</xliff:g> ساعة</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="zero">في <xliff:g id="COUNT_1">%d</xliff:g> يوم</item>
+ <item quantity="two">في يومين (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+ <item quantity="few">في <xliff:g id="COUNT_1">%d</xliff:g> أيام</item>
+ <item quantity="many">في <xliff:g id="COUNT_1">%d</xliff:g> يومًا</item>
+ <item quantity="other">في <xliff:g id="COUNT_1">%d</xliff:g> يوم</item>
+ <item quantity="one">في <xliff:g id="COUNT_0">%d</xliff:g> يوم</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="zero">في <xliff:g id="COUNT_1">%d</xliff:g> عام</item>
+ <item quantity="two">في عامين (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+ <item quantity="few">في <xliff:g id="COUNT_1">%d</xliff:g> أعوام</item>
+ <item quantity="many">في <xliff:g id="COUNT_1">%d</xliff:g> عامًا</item>
+ <item quantity="other">في <xliff:g id="COUNT_1">%d</xliff:g> عام</item>
+ <item quantity="one">في <xliff:g id="COUNT_0">%d</xliff:g> عام</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"مشكلة في الفيديو"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"عذرًا، هذا الفيديو غير صالح للبث على هذا الجهاز."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"لا يمكنك تشغيل هذا الفيديو."</string>
@@ -926,7 +984,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"قد لا تعمل بعض وظائف النظام"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ليست هناك سعة تخزينية كافية للنظام. تأكد من أنه لديك مساحة خالية تبلغ ۲۵۰ ميغابايت وأعد التشغيل."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> قيد التشغيل"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"المس للحصول على مزيد من المعلومات أو لإيقاف التطبيق."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"موافق"</string>
<string name="cancel" msgid="6442560571259935130">"إلغاء"</string>
<string name="yes" msgid="5362982303337969312">"موافق"</string>
@@ -1000,7 +1059,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"بدء التطبيقات."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"جارٍ إعادة التشغيل."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> يعمل"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"المس لتبديل التطبيق"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"تبديل التطبيقات؟"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"يوجد تطبيق آخر قيد التشغيل فعلاً ويجب إيقافه حتى تتمكن من بدء تطبيق جديد."</string>
<string name="old_app_action" msgid="493129172238566282">"عودة إلى <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,7 +1068,8 @@
<string name="new_app_action" msgid="5472756926945440706">"بدء <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"إيقاف التطبيق القديم بدون الحفظ."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"لقد تجاوزت <xliff:g id="PROC">%1$s</xliff:g> حد الذاكرة."</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"تم نسخ الذاكرة، المس للمشاركة."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"هل تريد مشاركة نَسْخ الذاكرة؟"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"تجاوزت عملية <xliff:g id="PROC">%1$s</xliff:g> حد الذاكرة المخصص لها وقدره <xliff:g id="SIZE">%2$s</xliff:g>، ويتوفر نَسْخ للذاكرة لمشاركته مع مطور برامج العملية ولكن توخ الحذر حيث قد يحتوي نَسْخ الذاكرة هذا على معلومات شخصية يملك التطبيق حق الوصول إليها."</string>
<string name="sendText" msgid="5209874571959469142">"اختيار إجراء للنص"</string>
@@ -1052,7 +1113,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"شبكة Wi-Fi غير متصلة بالإنترنت"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"المس لعرض الخيارات"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"تعذر الاتصال بـ Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" لديها اتصال إنترنت رديء."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"هل تريد السماح بالاتصال؟"</string>
@@ -1062,7 +1124,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ابدأ Wi-Fi Direct. يؤدي هذا إلى إيقاف عميل/نقطة اتصال Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"تعذر بدء Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"تم تشغيل اتصال Wi-Fi المباشر"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"المس للحصول على الإعدادات"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"قبول"</string>
<string name="decline" msgid="2112225451706137894">"رفض"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"تم إرسال الدعوة"</string>
@@ -1114,9 +1177,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB لنقل الصور"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB لـ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"الاتصال بجهاز USB ملحق"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"المس للحصول على مزيد من الخيارات."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"تم توصيل تصحيح أخطاء USB"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"المس لتعطيل تصحيح أخطاء USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"جارٍ الحصول على تقرير الخطأ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"هل تريد مشاركة تقرير الخطأ؟"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"جارٍ مشاركة تقرير الخطأ…"</string>
@@ -1136,9 +1201,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"تم اكتشاف <xliff:g id="NAME">%s</xliff:g> جديدة"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"لنقل الصور والوسائط"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"أصاب <xliff:g id="NAME">%s</xliff:g> التلف"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> تالف. المس لإصلاحه."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> غير متوافق"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"هذا الجهاز غير متوافق مع <xliff:g id="NAME">%s</xliff:g> هذه. المس للإعداد بتنسيق متوافق."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"تمت إزالة <xliff:g id="NAME">%s</xliff:g> بشكل غير متوقع"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"إلغاء تحميل <xliff:g id="NAME">%s</xliff:g> قبل الإزالة لتجنب فقد البيانات"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"تمت إزالة <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1174,7 +1241,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"للسماح لأحد التطبيقات بقراءة جلسات التثبيت. ويسمح لك هذا بالاطلاع على تفاصيل بشأن عمليات تثبيت الحزم النشطة."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"طلب حزم التثبيت"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"للسماح لتطبيق ما بطلب تثبيت الحزم."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"المس مرتين للتحكم في التكبير/التصغير"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"اضغط مرتين للتحكم في التكبير/التصغير"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"تعذرت إضافة أداة."</string>
<string name="ime_action_go" msgid="8320845651737369027">"تنفيذ"</string>
<string name="ime_action_search" msgid="658110271822807811">"بحث"</string>
@@ -1205,20 +1272,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"خدمة ترتيب أهمية الإشعارات"</string>
<string name="vpn_title" msgid="19615213552042827">"تم تنشيط الشبكة الظاهرية الخاصة (VPN)"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"تم تنشيط VPN بواسطة <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"المس لإدارة الشبكة."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"تم الاتصال بـ <xliff:g id="SESSION">%s</xliff:g>. المس لإدارة الشبكة."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"انقر لإدارة الشبكة."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"تم الاتصال بـ <xliff:g id="SESSION">%s</xliff:g>. انقر لإدارة الشبكة."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"جارٍ الاتصال بشبكة ظاهرية خاصة (VPN) دائمة التشغيل..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"تم الاتصال بشبكة ظاهرية خاصة (VPN) دائمة التشغيل"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"خطأ بشبكة ظاهرية خاصة (VPN) دائمة التشغيل"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"المس للتهيئة"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"اختيار ملف"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"لم يتم اختيار أي ملف"</string>
<string name="reset" msgid="2448168080964209908">"إعادة تعيين"</string>
<string name="submit" msgid="1602335572089911941">"إرسال"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"تم تمكين وضع السيارة"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"المس لإنهاء وضع السيارة."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"النطاق أو نقطة الاتصال نشطة"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"المس للإعداد."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"رجوع"</string>
<string name="next_button_label" msgid="1080555104677992408">"التالي"</string>
<string name="skip_button_label" msgid="1275362299471631819">"تخطٍ"</string>
@@ -1255,7 +1325,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"إضافة حساب"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"زيادة"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"تقليل"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> المس مع الاستمرار."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"مرر لأعلى للزيادة ولأسفل للتقليل."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"زيادة الدقائق"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"تقليل الدقائق"</string>
@@ -1299,7 +1370,8 @@
<string name="storage_usb" msgid="3017954059538517278">"وحدة تخزين USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"تعديل"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"تحذير استخدام البيانات"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"المس لعرض الاستخدام والإعدادات."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"تم بلوغ حد بيانات اتصال 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"تم بلوغ حد بيانات اتصال 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"تم بلوغ حد بيانات الجوّال"</string>
@@ -1311,7 +1383,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"تم تجاوز حد بيانات شبكة Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> فوق الحد المعين."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"تم تقييد بيانات الخلفية"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"المس لإزالة التقييد."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"شهادة الأمان"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"هذه الشهادة صالحة."</string>
<string name="issued_to" msgid="454239480274921032">"إصدار لـ:"</string>
@@ -1531,8 +1604,10 @@
<string name="select_year" msgid="7952052866994196170">"تحديد العام"</string>
<string name="deleted_key" msgid="7659477886625566590">"تم حذف <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> المخصص للعمل"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"لإزالة تثبيت علامة التبويب على هذه الشاشة، يمكنك لمس زر الرجوع مع الاستمرار."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"لإلغاء تثبيت هذه الشاشة، يمكنك لمس \"نظرة عامة\" مع الاستمرار."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"التطبيق مقيد: ولا يسمح بإلغاء التقييد على هذا الجهاز."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"تم تثبيت الشاشة"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"تم إلغاء تثبيت الشاشة"</string>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
index a612641..effdc45 100644
--- a/core/res/res/values-az-rAZ/strings.xml
+++ b/core/res/res/values-az-rAZ/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pəncərənin məzmununu əldə edin"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Əlaqədə olduğunuz pəncərənin məzmununu nəzərdən keçirin."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Toxunaraq Kəşf et funksiyasını yandırın"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Toxunulan hissələr səsləndiriləcək və ekran jestlərlə idarə oluna biləcək."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"İnkişaf etmiş veb əlçatımlılığı yandırın"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skriptlər tətbiq məzmununun daha əlçatımlı olması üçün quraşdırıla bilər."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Yazdığınız mətni izləyin"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK və yeni PİN kod daxil edin"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kod"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Yeni PIN kodu"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Şifrə daxil etmək üçün toxunun"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Kilidi açmaq üçün parol yazın"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Kilidi açmaq üçün PIN daxil edin"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Yanlış PIN kodu."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 saat</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"indi"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>dəq</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>dəq</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>saat</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>saat</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>gün</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>gün</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>il</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>il</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>dəqiqədə</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>dəqiqədə</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>saata</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>saata</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>gündə</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>gündə</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ildə</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ildə</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video problemi"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bu video bu cihaza strim olunmaq üçün uyğun deyil."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Bu video oxumur"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bəzi sistem funksiyaları işləməyə bilər"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistem üçün yetərincə yaddaş ehtiyatı yoxdur. 250 MB yaddaş ehtiyatının olmasına əmin olun və yenidən başladın."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> işlənir"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Daha çox məlumat üçün və ya tətbiqi dayandırmaq üçün toxunun."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Ləğv et"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Tətbiqlər başladılır."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Yükləmə başa çatır."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> çalışır"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Tətbiqə keçmək üçün toxunun"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Tətbiqlərə keçilsin?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Bir tətbiq artıq işləyir. Digərini başlatmaq üçün onu dayandırmalısınız."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> bölməsinə qayıdın"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> tətbiqini başladın"</string>
<string name="new_app_description" msgid="1932143598371537340">"Köhnə tətbiqi yadda saxlamadan dayandırın."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> yaddaş limitini keçdi"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Yığın toplanıb; paylaşmaq üçün toxunun"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Yığın paylaşılsın?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> prosesi <xliff:g id="SIZE">%2$s</xliff:g> ölçüsünün yaddaş limitini prosesini keçib. Yığın tərtibatçısı ilə paylaşmaq üçün sizə istifadəsi mümkündür. Ehtiyatlı olun: bu yığında proqramın giriş icazəsi olduğu şəxsi məlumatlarınız ola bilər."</string>
<string name="sendText" msgid="5209874571959469142">"Mətn üçün əməliyyat seçin"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-ın İnternetə girişi yoxdur"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Seçənəkləri görmək üçün toxunun"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi\'a qoşulmaq alınmadı"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" internet bağlantısı keyfiyyətsizdir."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Bağlantıya icazə verilsin?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct əməliyyatını başlat. Bu Wi-Fi müştəri/hotspotu bağlayacaq."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct başladıla bilmədi."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct aktivdir"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Ayarlar üçün toxunun"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Qəbul edin"</string>
<string name="decline" msgid="2112225451706137894">"İmtina edin"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Dəvətnamə göndərildi"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Foto transfer üçün USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI üçün USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuara qoşuldu"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Əlavə seçimlər üçün toxunun."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB sazlama qoşuludur"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB debaqı deaktivasiya etmək üçün toxunun."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Baq hesabatı verilir..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Baq hesabatı paylaşılsın?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Baq hesabatı paylaşılır..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Yeni <xliff:g id="NAME">%s</xliff:g> aşkarlandı"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotoların və medianın köçürülməsi üçün"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Zədələnmiş <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> zədələnib. Düzəltmək üçün toxunun."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Dəstəklənməyən <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"<xliff:g id="NAME">%s</xliff:g> bu cihaz tərəfindən dəstəklənmir. Dəstəklənən formatda ayarlamaq üçün toxunun."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> gözlənilmədən çıxarıldı"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Data itkisinin qarşısını almaq üçün <xliff:g id="NAME">%s</xliff:g> kartını çıxarın"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> çıxarıldı"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Tətbiqə quraşdırma sessiyalarını oxumağa yardım edir. Bu da aktiv paket quraşdırmaları haqqında məlumatları görməyə imkan verir."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"paketləri quraşdırma sorğusu"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Tətbiqə paketləri quraşdırma sorğusu göndərməyə icazə verir."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Zoom nəzarəti üçün iki dəfə toxunun"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Zoom kontrolu üçün iki dəfə toxunun"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget əlavə edilə bilmədi."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Get"</string>
<string name="ime_action_search" msgid="658110271822807811">"Axtar"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Bildiriş qiymətləndirici xidmət"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN aktivləşdirildi"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g> tərəfindən aktivləşdirilib"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Şəbəkəni idarə etmək üçün toxunun."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> sessiyaya qoşuludur. Şəbəkəni idarə etmək üçün toxunun."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Şəbəkəni idarə etmək üçün tıklayın."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g> sessiyaya qoşulun. Şəbəkəni idarə etmək üçün tıklayın."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Həmişə aktiv VPN bağlanır..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN bağlantısı həmişə aktiv"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Həmişə aktiv VPN xətası"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Konfiqurə etmək üçün toxun"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Fayl seçin"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Heç bir fayl seçilməyib"</string>
<string name="reset" msgid="2448168080964209908">"Sıfırlayın"</string>
<string name="submit" msgid="1602335572089911941">"Göndər"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Avtomobil rejimi aktivdir"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Avtomobil rejimindən çıxmaq üçün toxunun."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tezerinq və ya hotspot aktivdir"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Quraşdırmaq üçün toxunun."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Geri"</string>
<string name="next_button_label" msgid="1080555104677992408">"Növbəti"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Keç"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Hesab əlavə edin"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Artır"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Azaldın"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> toxunun və basaraq saxlayın."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Artırmaq üçün yuxarı, azaltmaq üçün aşağı sürüşdürün."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Dəqiqə artırın"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Dəqiqəni azalt"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB yaddaş"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Düzəliş edin"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data istifadə xəbərdarlığı"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"İstifadə və ayarları görmək üçün toxunun"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limitinə çatdı"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limitinə çatdı"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Şəbəkə data limitinə çatdı"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limiti keçildi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> müəyyən edilmiş limit aşır."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Arxaplan datası məhdudlaşdırıldı"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Məhdudiyyəti aradan qaldırmaq üçün toxunun"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Təhlükəsizlik sertifikatı"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Bu sertifikat etibarlıdır."</string>
<string name="issued_to" msgid="454239480274921032">"Verilib:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"İl seçin"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> silindi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"İş <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Sancağı götürmək üçün Geri düyməsinə toxunun və saxlayın."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Sancağı götürmək üçün İcmala toxunun və saxlayın."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Tətbiq sancılıb: Açmağa bu cihazda icazə verilmir."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 876ee89..abf6609 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -266,7 +266,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Preuzima sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Proverava sadržaj prozora sa kojim ostvarujete interakciju."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključi Istraživanja dodirom"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Stavke koje dodirnete će biti izgovorene, a možete da se krećete po ekranu pokretima."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Uključi poboljšanu pristupačnost veba"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Mogu da se instaliraju skripte da bi sadržaj aplikacija bio pristupačniji."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Prati tekst koji unosite"</string>
@@ -665,7 +666,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Unesite PUK i novi PIN kôd"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kôd"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novi PIN kôd"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dodirnite da biste uneli lozinku"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Otkucajte lozinku da biste otključali"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Unesite PIN za otključavanje"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN kôd je netačan."</string>
@@ -866,14 +868,46 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"sada"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> č</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> č</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> č</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dan</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dana</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dana</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> god</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> god</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> god</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> č</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> č</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> č</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> dan</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> dana</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> dana</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> god</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> god</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> god</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problem sa video snimkom"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Ovaj video ne može da se strimuje na ovom uređaju."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Ne možete da pustite ovaj video."</string>
@@ -905,7 +939,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Neke sistemske funkcije možda ne funkcionišu"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nema dovoljno memorijskog prostora za sistem. Uverite se da imate 250 MB slobodnog prostora i ponovo pokrenite."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je pokrenuta"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Dodirnite za više informacija ili zaustavljanje aplikacije."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Potvrdi"</string>
<string name="cancel" msgid="6442560571259935130">"Otkaži"</string>
<string name="yes" msgid="5362982303337969312">"Potvrdi"</string>
@@ -979,7 +1014,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Završavanje pokretanja."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je pokrenuta"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Dodirnite da biste prešli na aplikaciju"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Želite li da pređete na drugu aplikaciju?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Već je pokrenuta druga aplikacija koja mora da bude zaustavljena da biste mogli da pokrenete novu."</string>
<string name="old_app_action" msgid="493129172238566282">"Vrati se u <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -987,7 +1023,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Pokreni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zaustavlja staru aplikaciju bez čuvanja."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> premašuje ograničenje memorije"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Snimak dinamičkog dela memorije je napravljen; dodirnite za deljenje"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Želite li da delite snimak dinamičkog dela memorije?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> je premašio ograničenje memorije za proces od <xliff:g id="SIZE">%2$s</xliff:g>. Snimak dinamičkog dela memorije je dostupan i možete da ga delite sa programerom. Budite oprezni: ovaj snimak dinamičkog dela memorije može da sadrži neke lične podatke kojima aplikacija može da pristupa."</string>
<string name="sendText" msgid="5209874571959469142">"Izaberite radnju za tekst"</string>
@@ -1025,7 +1062,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nema pristup internetu"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Dodirnite za opcije"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nije moguće povezati sa Wi-Fi mrežom"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima lošu internet vezu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Želite li da dozvolite povezivanje?"</string>
@@ -1035,7 +1073,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Pokrenite Wi-Fi Direct. Time ćete isključiti klijenta/hotspot za Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nije moguće pokrenuti Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je uključen"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Dodirnite za podešavanja"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Prihvati"</string>
<string name="decline" msgid="2112225451706137894">"Odbij"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozivnica je poslata"</string>
@@ -1087,9 +1126,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prenos slika"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Povezano sa USB dodatkom"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Dodirnite za još opcija."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Otklanjanje grešaka sa USB-a je uspostavljeno"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Dodirnite da biste onemogućili otklanjanje grešaka sa USB-a."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Izveštaj o grešci se generiše…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Želite li da podelite izveštaj o grešci?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deli se izveštaj o grešci…"</string>
@@ -1109,9 +1150,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novi uređaj <xliff:g id="NAME">%s</xliff:g> je otkriven"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prenos slika i medija"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen. Dodirnite da biste ga popravili."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Uređaj <xliff:g id="NAME">%s</xliff:g> nije podržan"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Ovaj uređaj ne podržava uređaj <xliff:g id="NAME">%s</xliff:g>. Dodirnite da biste podesili podržani format."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Uređaj <xliff:g id="NAME">%s</xliff:g> je neočekivano uklonjen"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Isključite uređaj <xliff:g id="NAME">%s</xliff:g> pre uklanjanja da ne biste izgubili podatke"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Uređaj <xliff:g id="NAME">%s</xliff:g> je uklonjen"</string>
@@ -1147,7 +1190,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Dozvoljava aplikaciji da čita sesije instaliranja. To joj dozvoljava da vidi detalje o aktivnim instalacijama paketa."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"zahtevanje paketa za instaliranje"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Omogućava da aplikacija zahteva instalaciju paketa."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dodirnite dvaput da biste kontrolisali zum"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Dodirnite dvaput za kontrolu zumiranja"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nije moguće dodati vidžet."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Idi"</string>
<string name="ime_action_search" msgid="658110271822807811">"Pretraži"</string>
@@ -1178,20 +1221,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Usluga rangiranja obaveštenja"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN je aktiviran"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Aplikacija <xliff:g id="APP">%s</xliff:g> je aktivirala VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Dodirnite da biste upravljali mrežom."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Povezano sa sesijom <xliff:g id="SESSION">%s</xliff:g>. Dodirnite da biste upravljali mrežom."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Dodirnite da biste upravljali mrežom."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Povezano sa sesijom <xliff:g id="SESSION">%s</xliff:g>. Dodirnite da biste upravljali mrežom."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezivanje stalno uključenog VPN-a..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Stalno uključeni VPN je povezan"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Greška stalno uključenog VPN-a"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Dodirnite da biste konfigurisali"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Odaberi datoteku"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nije izabrana nijedna datoteka"</string>
<string name="reset" msgid="2448168080964209908">"Ponovo postavi"</string>
<string name="submit" msgid="1602335572089911941">"Pošalji"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Režim rada u automobilu je omogućen"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Dodirnite da biste izašli iz režima rada u automobilu."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Aktivno povezivanje sa internetom preko mobilnog uređaja ili hotspot"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Dodirnite da biste podesili."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Nazad"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1225,7 +1271,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj nalog"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Povećavanje"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Smanjivanje"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> dodirnite i zadržite."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Prevucite nagore da biste povećali, a nadole da biste smanjili."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povećavanje minuta"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Smanjivanje minuta"</string>
@@ -1269,7 +1316,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB memorija"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Izmeni"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozorenje o potrošnji podataka"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Dodirnite za pregled kor. i pod."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Nema više 2G-3G podataka"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Nema više 4G podataka"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Nema više podataka za mobilne"</string>
@@ -1281,7 +1329,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Prekoračenje prenosa Wi-Fi podat."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> preko navedenog ograničenja."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pozadinski podaci su ograničeni"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Dodirnite da biste uklonili ograničenje."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Bezbednosni sertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ovaj sertifikat je važeći."</string>
<string name="issued_to" msgid="454239480274921032">"Izdato za:"</string>
@@ -1498,8 +1547,10 @@
<string name="select_year" msgid="7952052866994196170">"Izaberite godinu"</string>
<string name="deleted_key" msgid="7659477886625566590">"Izbrisali ste <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> na poslu"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Da biste otkačili ovaj ekran, dodirnite i zadržite Nazad."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Da biste otkačili ovaj ekran, dodirnite i zadržite Pregled."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je zakačena: otkačinjanje nije dozvoljeno na ovom uređaju."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran je zakačen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran je otkačen"</string>
diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml
index 871685b..072b83a 100644
--- a/core/res/res/values-be-rBY/strings.xml
+++ b/core/res/res/values-be-rBY/strings.xml
@@ -222,7 +222,7 @@
<string name="bugreport_title" msgid="2667494803742548533">"Справаздача пра памылку"</string>
<string name="bugreport_message" msgid="398447048750350456">"Будзе збiрацца iнфармацыя пра бягучы стан прылады, якая будзе адпраўляцца на электронную пошту. Стварэнне справаздачы пра памылкi зойме некаторы час."</string>
<string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Інтэрактыўная справаздача"</string>
- <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Выкарыстоўвайце ў большасці выпадкаў. Гэта дазваляе сачыць за ходам справаздачы, уводзіць дадатковыя звесткі аб праблеме і рабіць здымкі экрана. Могуць быць прапушчаны некаторыя раздзелы, якія выкарыстоўваюцца менш і паведаміць пра якія зойме шмат часу."</string>
+ <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Выкарыстоўвайце ў большасці выпадкаў. Гэта дазваляе сачыць за ходам справаздачы, уводзіць дадатковыя звесткі аб праблеме і рабіць здымкі экрана. Могуць быць прапушчаны некаторыя раздзелы, якія выкарыстоўваюцца менш і паведамленне пра якія займае шмат часу."</string>
<string name="bugreport_option_full_title" msgid="6354382025840076439">"Поўная справаздача"</string>
<string name="bugreport_option_full_summary" msgid="7210859858969115745">"Выкарыстоўвайце гэту опцыю, каб забяспечыць мінімальнае ўмяшанне сістэмы, калі прылада не адказвае ці працуе занадта павольна, або калі вам патрэбны ўсе раздзелы справаздачы. Выкарыстоўваючы гэту опцыю, вы не зможаце ўвесці больш падрабязную інфармацыю або зрабіць дадатковыя здымкі экрана."</string>
<plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
@@ -269,7 +269,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Атрымайце змесцiва акна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Вывучыце змесцiва акна, з якiм вы працуеце."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Уключыце Explore by Touch"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Элемент, да якiх дакраналiся, могуць быць агучаны, а экран будзе працаваць з жэстамi."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Уключыце паляпшэнне вэб-даступнасці"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Сцэнарыi могуць быць усталяваны, каб зрабіць змесцiва прыкладання больш даступным."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Глядзiце, што набiраеце"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Увядзіце PUK-код і новы PIN-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новы PIN-код"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Дакраніцеся, каб увесці пароль"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Увядзіце пароль для разблакавання"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Каб разблакаваць, увядзіце PIN-код"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Няправільны PIN-код."</string>
@@ -873,14 +875,54 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> гадзіны</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"зараз"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> дз.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> дні</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> дз.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> дня</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">праз <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="few">праз <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="many">праз <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="other">праз <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">праз <xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ <item quantity="few">праз <xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ <item quantity="many">праз <xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ <item quantity="other">праз <xliff:g id="COUNT_1">%d</xliff:g> гадз</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">праз <xliff:g id="COUNT_1">%d</xliff:g> дз.</item>
+ <item quantity="few">праз <xliff:g id="COUNT_1">%d</xliff:g> дні</item>
+ <item quantity="many">праз <xliff:g id="COUNT_1">%d</xliff:g> дз.</item>
+ <item quantity="other">праз <xliff:g id="COUNT_1">%d</xliff:g> дня</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="few">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="many">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="other">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Праблема з відэа"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Відэа не падыходзіць для патокавай перадачы на гэту прыладу."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Немагчыма прайграць гэта відэа."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Некаторыя сістэмныя функцыі могуць не працаваць"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Не хапае сховішча для сістэмы. Пераканайцеся, што ў вас ёсць 250 МБ свабоднага месца, і перазапусціце."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Прыкладанне <xliff:g id="APP_NAME">%1$s</xliff:g> працуе"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Націсніце, каб атрымаць дадатковую інфармацыю або спыніць праграму."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ОК"</string>
<string name="cancel" msgid="6442560571259935130">"Адмяніць"</string>
<string name="yes" msgid="5362982303337969312">"ОК"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск прыкладанняў."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Завяршэнне загрузкі."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Прыкладанне \"<xliff:g id="APP">%1$s</xliff:g>\" запушчанае"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Націсніце, каб перайсці да прыкладання"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Пераключыць прыкладанні?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Ужо запушчана іншае прыкладанне, якое павінна быць спынена перад запускам новага."</string>
<string name="old_app_action" msgid="493129172238566282">"Вярнуцца да <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Запусціць <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Спыніць старыя прыкладанні без захавання."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Працэс <xliff:g id="PROC">%1$s</xliff:g> перавысіў ліміт памяці"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Быў сабраны дамп кучы; дакраніцеся, каб абагуліць"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Абагуліць дамп дынамічнай вобласці?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Працэс <xliff:g id="PROC">%1$s</xliff:g> перавысіў ліміт памяці працэсу <xliff:g id="SIZE">%2$s</xliff:g>. Дамп дынамічнай вобласці даступны для вас, вы можаце абагуліць яго з распрацоўшчыкам. Будзьце асцярожныя: гэты дамп дынамічнай вобласці можа ўтрымліваць асабістую інфармацыю, да якой маюць доступ праграмы."</string>
<string name="sendText" msgid="5209874571959469142">"Выберыце дзеянне для тэкста"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"У Wi-Fi няма доступу да Інтэрнэту"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Дакраніцеся, каб убачыць параметры"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Немагчыма падключыцца да Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" дрэннае падключэнне да Інтэрнэту."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Дазволіць падключэнне?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Пачаць работу Wi-Fi Direct. Гэта адключыць кліента або кропку доступу Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Немагчыма запусціць Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct уключаны"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Дакраніцеся, каб наладзіць"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Прыняць"</string>
<string name="decline" msgid="2112225451706137894">"Адхіліць"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Запрашэнне адпраўлена"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB для перадачы фота"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB для MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Падключаны да USB-прылады"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Дакраніцеся, каб атрымаць больш параметраў."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Прылада адладкі USB падключана"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Націсніце, каб адключыць адладку USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Стварэнне справаздачы пра памылку…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Падзяліцца справаздачай пра памылку?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Перадача справаздачы пра памылку..."</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Выяўлены новы носьбіт <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Для перадачы фатаграфій і медыяфайлаў"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Пашкоджаны носьбіт <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Носьбіт <xliff:g id="NAME">%s</xliff:g> пашкоджаны. Дакраніцеся, каб выправіць."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> не падтрымліваецца"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Гэта прылада не падтрымлівае носьбіт <xliff:g id="NAME">%s</xliff:g>. Дакраніцеся, каб наладзіць яго ў фармаце, які падтрымліваецца."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Носьбіт <xliff:g id="NAME">%s</xliff:g> нечакана выняты"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Адключыце носьбіт <xliff:g id="NAME">%s</xliff:g>, перш чым вымаць яго, каб пазбегнуць страты даных."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Носьбіт <xliff:g id="NAME">%s</xliff:g> выдалены"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Дазваляе праграме счытваць сеансы ўсталёўкі. Гэта дазваляе ёй праглядаць інфармацыю аб актыўных усталёўках пакета."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"запытваць усталёўку пакетаў"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Дазваляе праграме запытваць усталёўку пакетаў."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Двойчы дакраніцеся, каб змянiць маштаб"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Націсніце двойчы, каб кіраваць маштабаваннем"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Немагчыма дадаць віджэт."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Пачаць"</string>
<string name="ime_action_search" msgid="658110271822807811">"Пошук"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Служба ацэнкі важнасці апавяшчэнняў"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN актываваны"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN актывуецца прыкладаннем <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Дакраніцеся, каб кіраваць сеткай."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Падлучаны да сеанса \"<xliff:g id="SESSION">%s</xliff:g>\". Дакраніцеся, каб кiраваць сеткай."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Націсніце, каб кіраваць сеткай."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Падлучаны да <xliff:g id="SESSION">%s</xliff:g>. Націсніце, каб кiраваць сеткай."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Падключэнне заўсёды ўключанага VPN..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Заўсёды ўключаны i падключаны VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Памылка заўсёды ўключанага VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Націсніце, каб змяніць налады"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Выберыце файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Файл не выбраны"</string>
<string name="reset" msgid="2448168080964209908">"Скінуць"</string>
<string name="submit" msgid="1602335572089911941">"Перадаць"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Рэжым \"У машыне\" ўключаны"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Дакраніцеся, каб выйсці з рэжыму \"Штурман\"."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"USB-мадэм або кропка доступу Wi-Fi актыўныя"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Націсніце, каб наладзіць."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Далей"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Прапусціць"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Дадаць уліковы запіс"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Павялічыць"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Паменшыць"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Націсніце і ўтрымлівайце <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Правядзіце пальцам уверх, каб павялічыць, або ўніз, каб паменшыць."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Павялічыць лічбу хвілін."</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Паменшыць лічбу хвілін."</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-назапашвальнік"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Рэдагаваць"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Папярэджанне выкарыстання дадзеных"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Дакраніцеся, каб прагледзець гісторыю выкарыстання і налады."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Дасягнуты ліміт трафіку 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Дасягнуты ліміт трафіку 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Дасягн. ліміт маб.перадачы даных"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Перав. ліміт па дадзеным Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Аб\'ём <xliff:g id="SIZE">%s</xliff:g> перавышае устаноўл. мяжу."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Зыходныя дадзеныя абмежаваныя"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Націсніце, каб зняць абмежаванне."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Сертыфікат бяспекі"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Гэты сертыфікат сапраўдны."</string>
<string name="issued_to" msgid="454239480274921032">"Выдадзены:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Выберыце год"</string>
<string name="deleted_key" msgid="7659477886625566590">"Выдалена: <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (праца)"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Каб адмацаваць гэты экран, краніце і ўтрымлівайце кнопку \"Назад\"."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Каб адмацаваць гэты экран, краніце і ўтрымлівайце кнопку «Агляд»."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Праграма замацавана: адмацаванне на гэтай прыладзе не дапускаецца."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Экран замацаваны"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Экран адмацаваны"</string>
@@ -1522,7 +1581,7 @@
<string name="package_deleted_device_owner" msgid="7650577387493101353">"Выдалена вашым адміністратарам"</string>
<string name="battery_saver_description" msgid="1960431123816253034">"Каб падоўжыць час працы акумулятара, у рэжыме эканоміі зараду памяншаецца прадукцыйнасць вашай прылады, абмяжоўваецца выкарыстанне вібрацыі, службаў вызначэння месцазнаходжання і большасці задач фонавай перадачы даных. Электронная пошта, абмен паведамленнямі і іншыя праграмы, якія выкарыстоўваюць сінхранізацыю, могуць не абнаўляцца, пакуль вы іх не адкрыеце.\n\nРэжым эканоміі зараду адключаецца аўтаматычна, калі прылада зараджаецца."</string>
<string name="data_saver_description" msgid="6015391409098303235">"Каб паменшыць выкарыстанне даных, Эканомія трафіку не дазваляе некаторым праграмам адпраўляць ці атрымліваць даныя ў фонавым рэжыме. Праграма, якую вы зараз выкарыстоўваеце, можа атрымліваць доступ да даных, але можа рабіць гэта радзей. Гэта можа азначаць, напрыклад, што відарысы не паказваюцца, пакуль вы не дакраняцеся да іх."</string>
- <string name="data_saver_enable_title" msgid="4674073932722787417">"Уключыць Эканомію трафіку?"</string>
+ <string name="data_saver_enable_title" msgid="4674073932722787417">"Уключыць Эканомію трафіка?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"Уключыць"</string>
<plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
<item quantity="one">На %1$d хвіліну (да <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index f6b746d..b1fa65d 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Докосваните елементи ще бъдат изговаряни на глас и екранът може да бъде изследван посредством жестове."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Включване на подобрената достъпност в мрежата"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Скриптовете може да бъдат инсталирани, за да направят съдържанието от приложенията по-достъпно."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Наблюдение на въвеждания от вас текст"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Въведете PUK и новия ПИН код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нов ПИН код"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Докоснете и въведете парола"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Въведете парола, за да отключите"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Въведете ПИН, за да отключите"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неправилен ПИН код."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 час</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"сега"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> м</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> м</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ч</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> д</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> д</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> г</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> г</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">след <xliff:g id="COUNT_1">%d</xliff:g> м</item>
+ <item quantity="one">след <xliff:g id="COUNT_0">%d</xliff:g> м</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">след <xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ <item quantity="one">след <xliff:g id="COUNT_0">%d</xliff:g> ч</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">след <xliff:g id="COUNT_1">%d</xliff:g> д</item>
+ <item quantity="one">след <xliff:g id="COUNT_0">%d</xliff:g> д</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">след <xliff:g id="COUNT_1">%d</xliff:g> г</item>
+ <item quantity="one">след <xliff:g id="COUNT_0">%d</xliff:g> г</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Проблем с видеоклипа"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Този видеоклип не е валиден за поточно предаване към това устройство."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Този видеоклип не може да се пусне."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Възможно е някои функции на системата да не работят"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"За системата няма достатъчно място в хранилището. Уверете се, че имате свободни 250 МБ, и рестартирайте."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> се изпълнява"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Докоснете за още информация или за да спрете приложението."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Отказ"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Приложенията се стартират."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Зареждането завършва."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> се изпълнява"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Докоснете за превключване към приложение"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Да се превключат ли приложенията?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Вече се изпълнява друго приложение, което трябва да бъде спряно, преди да можете да стартирате ново."</string>
<string name="old_app_action" msgid="493129172238566282">"Назад към <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Стартиране на <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Спиране на старото приложение без запазване."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> надхвърли ограничението за памет"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Извлечена е моментна снимка на паметта. Докоснете, за да я споделите"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Да се сподели ли моментната снимка на паметта?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процесът <xliff:g id="PROC">%1$s</xliff:g> надхвърли ограничението си от <xliff:g id="SIZE">%2$s</xliff:g>. Налице е моментна снимка на паметта, която да споделите със съответния програмист. Бъдете внимателни, защото тя може да съдържа ваши лични данни, до които приложението има достъп."</string>
<string name="sendText" msgid="5209874571959469142">"Избиране на действие за текст"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi мрежата няма достъп до интернет"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Докоснете за опции"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не можа да се свърже с Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" има лоша връзка с интернет."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Да се разреши ли връзката?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Стартиране на Wi-Fi Direct. Това ще изключи клиентската програма/точката за достъп до Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct не можа да се стартира."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct е включено"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Докоснете за настройки"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Приемам"</string>
<string name="decline" msgid="2112225451706137894">"Отхвърлям"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Поканата е изпратена"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB за прехвърляне на снимки"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB за MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Установена е връзка с аксесоар за USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Докоснете за още опции."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Отстраняване на грешки през USB"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Докоснете за деактивиране"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Сигналът за програмна грешка се извлича…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Да се сподели ли сигналът за програмна грешка?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Сигналът за програмна грешка се споделя…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Открито е ново хранилище (<xliff:g id="NAME">%s</xliff:g>)"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"За прехвърляне на снимки и мултимедия"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>: Има повреда"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Хранилището (<xliff:g id="NAME">%s</xliff:g>) е повредено. Докоснете за поправяне."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g>: Не се поддържа"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Устройството не поддържа това хранилище (<xliff:g id="NAME">%s</xliff:g>). Докоснете, за да настроите в поддържан формат."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>: Неочаквано премахване"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Спрете хранилището (<xliff:g id="NAME">%s</xliff:g>), преди да го извадите, за да не загубите данни"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Премахнахте <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Разрешава на приложението да чете сесии за инсталиране. Това му позволява да вижда подробности за активните инсталирания на пакети."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"заявка на пакети за инсталиране"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Разрешава на приложението да заявява инсталиране на пакети."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Докоснете двукратно за управление на промяната на мащаба"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Докоснете двукратно за управление на промяната на мащаба"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Приспособлението не можа да бъде добавено."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Старт"</string>
<string name="ime_action_search" msgid="658110271822807811">"Търсене"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Услуга за класифициране на известията"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN е активирана"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN е активирана от <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Докоснете за управление на мрежата."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Свързана със: <xliff:g id="SESSION">%s</xliff:g>. Докоснете, за да управлявате мрежата."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Докоснете за управление на мрежата."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Свързана с/ъс <xliff:g id="SESSION">%s</xliff:g>. Докоснете, за да управлявате мрежата."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Установява се връзка с винаги включената виртуална частна мрежа (VPN)…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Установена е връзка с винаги включената виртуална частна мрежа (VPN)"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Грешка във винаги включената виртуална частна мрежа (VPN)"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Докоснете, за да конфигурирате"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Избор на файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Няма избран файл"</string>
<string name="reset" msgid="2448168080964209908">"Повторно задаване"</string>
<string name="submit" msgid="1602335572089911941">"Изпращане"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Мото режимът е активиран"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Докоснете, за да излезете от моторежим."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Има активна споделена връзка или безжична точка за достъп"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Докоснете, за да настроите."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Напред"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Пропускане"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Добавяне на профил"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Увеличаване"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Намаляване"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Докоснете <xliff:g id="VALUE">%s</xliff:g> път/и и задръжте."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Плъзнете нагоре за увеличаване и надолу за намаляване."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Увеличаване на минутите"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Намаляване на минутите"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB хранилище"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Редактиране"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Предупрежд. за ползване на данни"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Ползване и настройки: Докоснете"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Достигнат лимит за 2G/3G данните"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Достигнат лимит за 4G данните"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Достигнат лимит за мобилни данни"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Превишен лимит на Wi-Fi данните"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> над определения лимит."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Ограничени данни на заден план"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Докоснете и махнете огранич."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Сертификат за сигурност"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Този сертификат е валиден."</string>
<string name="issued_to" msgid="454239480274921032">"Издаден на:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Избиране на година"</string>
<string name="deleted_key" msgid="7659477886625566590">"Изтрихте <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> за работа"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"За да освободите този екран, докоснете и задръжте бутона за връщане назад."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"За да освободите този екран, докоснете и задръжте бутона „Общ преглед“."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Приложението е фиксирано. Освобождаването му не е разрешено на това устройство."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екранът е фиксиран"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екранът е освободен"</string>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index 6ec49dd..bcec328 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"কোন আইটেমে স্পর্শ করেছেন তা সশব্দে বলে এবং ইঙ্গিতগুলি ব্যবহার করে স্ক্রীণ অন্বেষণ করা যাবে৷"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"উন্নত ওয়েব অ্যাক্সেসযোগ্যতা চালু করুন"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"অ্যাপ্লিকেশানের সামগ্রীকে আরো অ্যাক্সেসযোগ্য করতে স্ক্রিপ্টগুলি ইনস্টল করা হতে পারে৷"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"আপনার লেখা পাঠ্যকে নিরীক্ষণ করে"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK এবং নতুন পিন কোড লিখুন"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK কোড"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"নতুন পিন কোড"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"পাসওয়ার্ড লিখতে স্পর্শ করুন"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"আনলক করতে পাসওয়ার্ড লিখুন"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"আনলক করতে পিন লিখুন"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ভুল পিন কোড৷"</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ঘণ্টা</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"এখন"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>মিনিট</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>মিনিট</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ঘণ্টা</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ঘণ্টা</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>দিন</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>দিন</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>বছর</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>বছর</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>মিনিটের মধ্যে</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>মিনিটের মধ্যে</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ঘন্টার মধ্যে</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ঘন্টার মধ্যে</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>দিনের মধ্যে</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>দিনের মধ্যে</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>বছরের মধ্যে</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>বছরের মধ্যে</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ভিডিও সমস্যা"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"এই ভিডিওটি এই ডিভাইসে স্ট্রিমিং করার জন্য বৈধ নয়৷"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"এই ভিডিওটি চালানো যাবে না৷"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"কিছু কিছু সিস্টেম ক্রিয়াকলাপ কাজ নাও করতে পারে"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"সিস্টেমের জন্য যথেষ্ট সঞ্চয়স্থান নেই৷ আপনার কাছে ২৫০MB ফাঁকা স্থান রয়েছে কিনা সে বিষয়ে নিশ্চিত হওয়ার পর পুনরায় চালু করুন৷"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> চলছে"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"আরো তথ্যের জন্য বা অ্যাপ্লিকেশানটি বন্ধ করার জন্য স্পর্শ করুন৷"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ঠিক আছে"</string>
<string name="cancel" msgid="6442560571259935130">"বাতিল করুন"</string>
<string name="yes" msgid="5362982303337969312">"ঠিক আছে"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"অ্যাপ্লিকেশানগুলি শুরু করা হচ্ছে৷"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"চালু করা সম্পূর্ণ হচ্ছে৷"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> চলছে"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"একটি থেকে অন্য অ্যাপ্লিকেশানে পরিবর্তন করতে স্পর্শ করুন"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"একটি থেকে অন্য অ্যাপ্লিকেশানগুলিতে পরিবর্তন করবেন?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"অন্য একটি অ্যাপ্লিকেশান ইতিমধ্যেই চলছে, নতুন একটি চালু করতে আপনাকে অবশ্যই সেটি বন্ধ করতে হবে৷"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> এ ফিরুন"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> শুরু করুন"</string>
<string name="new_app_description" msgid="1932143598371537340">"সংরক্ষণ না করেই পুরোনো অ্যাপ্লিকেশানটি বন্ধ করুন৷"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> মেমরি সীমা অতিক্রম করেছে"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"অনেক ডাটা সংগ্রহ করা হয়েছে; শেয়ার করার জন্য স্পর্শ করুন"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"হিপ ডাম্প শেয়ার করবেন?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> প্রক্রিয়াটি তার <xliff:g id="SIZE">%2$s</xliff:g> এর মেমরি সীমা অতিক্রম করেছে৷ তার বিকাশকারীর সাথে শেয়ার করার জন্য একটি হিপ ডাম্প উপলব্ধ৷ সতর্কতা অবলম্বন করুন: এই হিপ ডাম্পে অ্যাপ্লিকেশানটির অ্যাক্সেস আছে এমন আপনার যেকোন ব্যক্তিগত তথ্য থাকতে পারে৷"</string>
<string name="sendText" msgid="5209874571959469142">"পাঠ্যের জন্য একটি কাজ বেছে নিন"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi -তে কোনো ইন্টারনেট অ্যাক্সেস নেই"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"বিকল্পগুলির জন্য স্পর্শ করুন"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi এর সাথে সংযোগ করা যায়নি"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" একটি দুর্বল ইন্টারনেট সংযোগ রয়েছে৷"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"সংযোগের মঞ্জুরি দেবেন?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ডাইরেক্ট আরম্ভ করুন৷ এটি Wi-Fi client/hotspot কে বন্ধ করবে৷"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ডাইরেক্ট শুরু করা যায়নি৷"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ডাইরেক্ট চালু রয়েছে"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"সেটিংস এর জন্য স্পর্শ করুন"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"গ্রহণ করুন"</string>
<string name="decline" msgid="2112225451706137894">"অস্বীকার করুন"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"আমন্ত্রণ পাঠানো হয়েছে"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ফটো স্থানান্তরের জন্য USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI এর জন্য USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"একটি USB যন্ত্রাংশতে সংযুক্ত হয়েছে"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"আরো বিকল্পের জন্য স্পর্শ করুন৷"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ডিবাগিং সংযুক্ত হয়েছে"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ডিবাগিং অক্ষম করতে স্পর্শ করুন৷"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ত্রুটির প্রতিবেদন নেওয়া হচ্ছে..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ত্রুটির প্রতিবেদন শেয়ার করবেন?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ত্রুটির প্রতিবেদন শেয়ার করা হচ্ছে..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"নতুন <xliff:g id="NAME">%s</xliff:g> সনাক্ত করা হয়েছে"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ফটো এবং মিডিয়া ট্রান্সফার"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> ত্রুটিপূর্ণ"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> হল ত্রুটিপূর্ণ। ঠিক করতে স্পর্শ করুন।"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> অসমর্থিত"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"এই ডিভাইসটি <xliff:g id="NAME">%s</xliff:g> সমর্থন করে না। একটি সমর্থিত ফর্ম্যাটে সেট আপ করতে স্পর্শ করুন।"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> অপ্রত্যাশিতভাবে মুছে ফেলা হয়েছে"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ডেটা যাতে হারিয়ে না যায় তার জন্য সরানোর আগে <xliff:g id="NAME">%s</xliff:g> আনমাউন্ট করুন"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> সরানো হয়েছে"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"কোনো অ্যাপ্লিকেশানকে সেশনগুলি পড়ার অনুমতি দেয়। এটি সক্রিয় প্যাকেজ ইনস্টলেশনের বিশদ বিবরণ দেখতে দেয়।"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"প্যাকেজগুলি ইনস্টল করার অনুরোধ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"একটি অ্যাপ্লিকেশানকে প্যাকেজগুলির ইনস্টল করার অনুরোধ জানাতে অনুমতি দেয়৷"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"জুম নিয়ন্ত্রণের জন্য দুবার স্পর্শ করুন"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"উইজেট যোগ করা যায়নি৷"</string>
<string name="ime_action_go" msgid="8320845651737369027">"যান"</string>
<string name="ime_action_search" msgid="658110271822807811">"অনুসন্ধান করুন"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"বিজ্ঞপ্তি র্যাঙ্কার পরিষেবা"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN সক্রিয়"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> এর দ্বারা VPN সক্রিয় করা হয়েছে"</string>
- <string name="vpn_text" msgid="3011306607126450322">"নেটওয়ার্ক পরিচালনা করতে স্পর্শ করুন৷"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> তে সংযুক্ত৷ নেটওয়ার্ক পরিচালনা করতে স্পর্শ করুন৷"</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"সর্বদা-চালু VPN সংযুক্ত হচ্ছে..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"সর্বদা-চালু VPN সংযুক্ত হয়েছে"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"সর্বদা-চালু VPN ত্রুটি"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"কনফিগার করতে স্পর্শ করুন"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ফাইল চয়ন করুন"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"কোনো ফাইল নির্বাচন করা হয়নি"</string>
<string name="reset" msgid="2448168080964209908">"পুনরায় সেট করুন"</string>
<string name="submit" msgid="1602335572089911941">"জমা দিন"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"গাড়ি মোড সক্ষম করা হয়েছে"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"গাড়ি মোড থেকে প্রস্থান করতে স্পর্শ করুন৷"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"টিথারিং বা হটস্পট সক্রিয় আছে"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"সেট আপ করতে স্পর্শ করুন৷"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"ফিরুন"</string>
<string name="next_button_label" msgid="1080555104677992408">"পরবর্তী"</string>
<string name="skip_button_label" msgid="1275362299471631819">"এড়িয়ে যান"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"অ্যাকাউন্ট যোগ করুন"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"বাড়ান"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"কমান"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> স্পর্শ করুন ও ধরে থাকুন৷"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"বাড়ানোর জন্য উপরের দিকে এবং কমানোর জন্য নীচের দিকে স্লাইড করুন৷"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"মিনিট বাড়ান"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"মিনিট কমান"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB সঞ্চয়স্থান"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"সম্পাদনা করুন"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ডেটা ব্যবহারের সতর্কতা"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ব্যবহার এবং সেটিংস দেখতে স্পর্শ করুন৷"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ডেটা সীমা ছাড়িয়েছে"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ডেটা সীমা ছাড়িয়েছে"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"সেলুলার ডেটা সীমা ছাড়িয়েছে"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ডেটার সীমা ছাড়িয়ে গেছে"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"নির্দিষ্ট সীমার থেকে <xliff:g id="SIZE">%s</xliff:g> বেশি৷"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"পটভূমি ডেটা সীমিত করা আছে"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"সীমাবদ্ধতা সরাতে স্পর্শ করুন৷"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"নিরাপত্তার শংসাপত্র"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"শংসাপত্রটি বৈধ৷"</string>
<string name="issued_to" msgid="454239480274921032">"এর জন্য ইস্যু করা হয়েছে:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"বছর নির্বাচন করুন"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> মুছে ফেলা হয়েছে"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"কর্মক্ষেত্র <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"এই স্ক্রীনটিকে আনপিন করতে, \'ফিরুন\' স্পর্শ করুন এবং ধরে রাখুন৷"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"এই স্ক্রীনটিকে আনপিন করতে, \'এক নজরে\' স্পর্শ করুন এবং ধরে রাখুন৷"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"অ্যাপ্লিকেশান পিন করা আছে: এই ডিভাইস এটিকে পিনমুক্ত করা মঞ্জুরিপ্রাপ্ত নয়৷"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"স্ক্রীন পিন করা হয়েছে"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"পিন না করা স্ক্রীন"</string>
diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml
index b2e908f..8021435 100644
--- a/core/res/res/values-bs-rBA/strings.xml
+++ b/core/res/res/values-bs-rBA/strings.xml
@@ -266,7 +266,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ponovo prikaži sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Istražite sadržaj prozora koji trenutno koristite."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključite Istraživanje dodirom"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Stavke koje dotaknete će biti izgovorene naglas, a ekran možete istražiti pokretima"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Uključite poboljšanu web pristupačnost"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Možda će biti instalirana skripta kako bi sadržaj aplikacije bio dostupniji."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obratite pažnju na tekst koji tipkate"</string>
@@ -665,7 +666,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Unesite PUK i novi PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novi PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dodirnite za unos lozinke"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Unesite lozinku za otključavanje tipkovnice"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Unesite PIN za otključavanje tipkovnice"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Pogrešan PIN."</string>
@@ -866,14 +868,46 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"sada"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problem sa prikazom video sadržaja"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Prijenos ovog video sadržaja ne može se izvršiti na ovom uređaju."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Greška prilikom reproduciranja video sadržaja."</string>
@@ -905,7 +939,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Neke funkcije sistema možda neće raditi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nema dovoljno prostora za sistem. Obezbijedite 250MB slobodnog prostora i ponovo pokrenite uređaj."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je pokrenuta"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Dodirnite za više informacija ili da zaustavite aplikaciju."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Uredu"</string>
<string name="cancel" msgid="6442560571259935130">"Prekini"</string>
<string name="yes" msgid="5362982303337969312">"Uredu"</string>
@@ -981,7 +1016,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Pokretanje pri kraju."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Pokrenuta je aplikacija <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Dodirnite kako biste otvorili aplikaciju"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Želite se prebaciti na drugu aplikaciju?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Već je pokrenuta jedna aplikacija koju morate zaustaviti prije pokretanja nove."</string>
<string name="old_app_action" msgid="493129172238566282">"Vrati se na aplikaciju <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -989,7 +1025,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Pokreni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zaustaviti staru aplikaciju bez spašavanja podataka."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> premašuje ograničenje memorije"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Snimak dinamičkog dijela memorije je napravljen; dodirnite za dijeljenje"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Želite li dijeliti snimak dinamičkog dijela memorije?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> je premašio ograničenje procesne memorije od <xliff:g id="SIZE">%2$s</xliff:g>. Snimak dinamičkog dijela memorije vam je dostupan i možete ga dijeliti sa njegovim programerom. Budite oprezni: ovaj snimak dinamičkog dijela memorije može sadržavati vaše lične podatke kojima aplikacija ima pristup."</string>
<string name="sendText" msgid="5209874571959469142">"Biranje akcije za tekst"</string>
@@ -1027,7 +1064,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nema pristup Internetu"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Dodirnite za opcije"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Problem prilikom spajanja na Wi-Fi mrežu"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima lošu internet vezu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Želite li dozvoliti povezivanje?"</string>
@@ -1037,7 +1075,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Pokreni Wi-Fi Direct. To će isključiti Wi-Fi klijenta/pristupnu tačku."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Greška u pokretanju opcije Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je uključen"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Dodirnite za postavke"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Prihvati"</string>
<string name="decline" msgid="2112225451706137894">"Odbijte"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozivnica poslana"</string>
@@ -1089,9 +1128,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prijenos slika"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Uspostavljena veza sa USB pohranom"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Dodirnite za više opcija."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Uređaj za USB otklanjanje grešaka povezan"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Dodirnite da biste onemogućili USB otklanjanje grešaka."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Prijem izvještaja o grešci..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Podijeliti izvještaj o grešci?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Dijeljenje izvještaja o grešci..."</string>
@@ -1111,9 +1152,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novi uređaj <xliff:g id="NAME">%s</xliff:g> je otkriven"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prebacivanje slika i medijskih fajlova"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen. Dodirnite da ga popravite."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Uređaj <xliff:g id="NAME">%s</xliff:g> nije podržan"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Ovaj uređaj ne podržava uređaj <xliff:g id="NAME">%s</xliff:g>. Dodirnite da ga postavite u podržanom formatu."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Neočekivano uklonjen uređaj <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Isključite uređaj <xliff:g id="NAME">%s</xliff:g> prije uklanjanja da izbjegnete gubitak podataka"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Uređaj <xliff:g id="NAME">%s</xliff:g> je uklonjen"</string>
@@ -1149,7 +1192,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Dozvoljava aplikaciji da čita sesije instalacija. Ovim se aplikaciji omogućava da vidi detalje o aktivnim instalacijama paketa."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"zahtijevanje paketa za instaliranje"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Omogućava aplikaciji da zahtijeva instalaciju paket ā."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dodirnite dvaput za kontrolu uvećavanja"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Dodavanje vidžeta nije uspjelo."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Počni"</string>
<string name="ime_action_search" msgid="658110271822807811">"Traži"</string>
@@ -1180,20 +1224,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Usluga rangiranja obavještenja"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN aktiviran"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Aplikacija <xliff:g id="APP">%s</xliff:g> je aktivirala VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Dodirnite za upravljanje mrežom."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Uspostavljena veza sa <xliff:g id="SESSION">%s</xliff:g>. Dodirnite za upravljanje mrežom."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezivanje na uvijek aktivni VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Povezan na uvijek aktivni VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Greška u povezivanju na uvijek aktivni VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Dodirnite da konfigurirate"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Odabir fajla"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nije izabran nijedan fajl"</string>
<string name="reset" msgid="2448168080964209908">"Ponovno pokretanje"</string>
<string name="submit" msgid="1602335572089911941">"Potvrdi"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Način rada u autu omogućen"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Dodirnite kako biste izašli iz načina rada u autu."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Uređaj dijeli vezu ili djeluje kao pristupna tačka"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Dodirnite za postavljanje."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Nazad"</string>
<string name="next_button_label" msgid="1080555104677992408">"Naprijed"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1227,7 +1276,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodajte račun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Povećaj"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Smanji"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Dodirnite <xliff:g id="VALUE">%s</xliff:g> i držite."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Kliznite gore da povećate i dolje da smanjite."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povećaj minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Smanji minute"</string>
@@ -1271,7 +1321,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB pohrana"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Uredi"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozorenje za prijenos podataka"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Podaci o korištenju i postavke"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dostignut limit za 2G-3G podatke"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dostignut limit za 4G podatke"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dostignut limit mob. podataka"</string>
@@ -1283,7 +1334,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Premašeno Wi-Fi ograničenje"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> preko navedenog ograničenja."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pozadinski podaci su ograničeni"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Dodirnuti za uklanjanje ogran."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sigurnosni certifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ovaj certifikat je važeći."</string>
<string name="issued_to" msgid="454239480274921032">"Primalac:"</string>
@@ -1500,8 +1552,10 @@
<string name="select_year" msgid="7952052866994196170">"Odaberite godinu"</string>
<string name="deleted_key" msgid="7659477886625566590">"Broj <xliff:g id="KEY">%1$s</xliff:g> je izbrisan"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Poslovni <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Da biste otkačili ovaj ekran, dodirnite i držite tipku Nazad."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Da otkačite ovaj ekran, dodirnite i držite Pregled."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je prikačena. Na ovom uređaju nije dozvoljeno otkačivanje."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran je zakačen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran je otkačen"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 150271d..5e6828e 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contingut de la finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contingut d\'una finestra amb què estàs interaccionant."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar Exploració tàctil"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Els elements que toquis es diran en veu alta i podràs explorar la pantalla mitjançant gestos."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar l\'accessibilitat web millorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"És possible que s\'instal·lin scripts perquè el contingut de les aplicacions sigui més accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar el text que escrius"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introdueix el codi PUK i el codi PIN nou"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codi PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Codi PIN nou"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toca per introduir contrasenya"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introdueix la contrasenya per desbloquejar"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introdueix la contrasenya per desbloquejar"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Codi PIN incorrecte."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 hora</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ara"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">d\'aquí a <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">d\'aquí a <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">d\'aquí a <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">d\'aquí a <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">d\'aquí a <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">d\'aquí a <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">d\'aquí a <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one">d\'aquí a <xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problema amb el vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Aquest vídeo no és vàlid per a la reproducció en aquest dispositiu."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"No es pot reproduir aquest vídeo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"És possible que algunes funcions del sistema no funcionin"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"No hi ha prou espai d\'emmagatzematge per al sistema. Comprova que tinguis 250 MB d\'espai lliure i reinicia."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> s\'està executant"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Toca per obtenir més informació o bé per aturar l\'aplicació."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"D\'acord"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel·la"</string>
<string name="yes" msgid="5362982303337969312">"D\'acord"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"S\'estan iniciant les aplicacions."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"S\'està finalitzant l\'actualització."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> s\'està executant"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Toca per canviar a l\'aplicació"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vols canviar aplicacions?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Ja s\'està executant una altra aplicació que s\'ha d\'aturar abans de poder iniciar-ne una de nova."</string>
<string name="old_app_action" msgid="493129172238566282">"Torna a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Inicia <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Atura l\'aplicació antiga sense desar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ha superat el límit de memòria"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"S\'ha recopilat un procés \"heap dump\"; toca per compartir"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Vols compartir el \"heap dump\"?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"El procés <xliff:g id="PROC">%1$s</xliff:g> ha superat el límit de <xliff:g id="SIZE">%2$s</xliff:g> de memòria del procés. Hi ha un procés \"heap dump\" disponible perquè el comparteixis amb el desenvolupador. Vés amb compte: aquest \"heap dump\" pot contenir les dades personals a les quals l\'aplicació tingui accés."</string>
<string name="sendText" msgid="5209874571959469142">"Tria una acció per al text"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"La Wi-Fi no té accés a Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Toca per veure les opcions"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No s\'ha pogut connectar a la Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" té una mala connexió a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vols permetre la connexió?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Inicia Wi-Fi Direct. Això desactivarà el client/la zona Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"No s\'ha pogut iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct està activat"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Toca per accedir a la configuració"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accepta"</string>
<string name="decline" msgid="2112225451706137894">"Rebutja"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"S\'ha enviat la invitació"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB per transferir fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB per a MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connectat a un accessori USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Toca per veure més opcions."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuració USB activada"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Toca per desactivar la depuració USB"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"S\'està creant l\'informe d\'errors…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vols compartir l\'informe d\'errors?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"S\'està compartint l\'informe d\'errors…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"S\'ha detectat <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Per transferir fotos i fitxers multimèdia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"S\'ha malmès <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> s\'ha malmès. Toca per solucionar-ho."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> no és compatible"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"El dispositiu no és compatible amb <xliff:g id="NAME">%s</xliff:g>. Toca per aplicar-hi un format compatible."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"S\'ha extret <xliff:g id="NAME">%s</xliff:g> de manera inesperada"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desactiva <xliff:g id="NAME">%s</xliff:g> abans d\'extraure\'l per evitar perdre dades"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"S\'ha extret <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permet que una aplicació llegeixi les sessions d\'instal·lació i això permet veure detalls sobre les instal·lacions de paquet actives."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"sol·licitar la instal·lació de paquets"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permet que una aplicació sol·liciti la instal·lació de paquets."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toca dos cops per controlar el zoom"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Piqueu dos cops per controlar el zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"No s\'ha pogut afegir el widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Vés"</string>
<string name="ime_action_search" msgid="658110271822807811">"Cerca"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Servei de classificació de notificacions"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activada"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> ha activat VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Toca per gestionar la xarxa."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Connectat a <xliff:g id="SESSION">%s</xliff:g>. Toca per gestionar la xarxa."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Pica per gestionar la xarxa."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Connectat a <xliff:g id="SESSION">%s</xliff:g>. Pica per gestionar la xarxa."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"T\'estàs connectant a la VPN sempre activada…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Estàs connectat a la VPN sempre activada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Error de la VPN sempre activada"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Toca per configurar"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Trieu un fitxer"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No s\'ha escollit cap fitxer"</string>
<string name="reset" msgid="2448168080964209908">"Reinicia"</string>
<string name="submit" msgid="1602335572089911941">"Envia"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode de cotxe activat"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toca per sortir del mode de cotxe."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Ancoratge a la xarxa o zona Wi-Fi activat"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toca per configurar."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Enrere"</string>
<string name="next_button_label" msgid="1080555104677992408">"Següent"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omet"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Afegeix un compte"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Incrementa"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Redueix"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Mantén premut <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Llisca cap amunt per augmentar i cap avall per disminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Fes augmentar el minut"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Fes disminuir el minut"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Emmagatzematge USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edita"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advertiment d\'ús de dades"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Toca per veure ús/configuració."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límit de dades 2G-3G assolit"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límit de dades 4G assolit"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límit de dades mòbils assolit"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"S\'ha superat el límit de dades Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> per sobre del límit especif."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dades en segon pla restringides"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toca per suprimir la restricció."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de seguretat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Aquest certificat és vàlid."</string>
<string name="issued_to" msgid="454239480274921032">"Emès per a:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Selecciona un any"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> suprimit"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de la feina"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Toca i mantén premuda l\'opció Enrere per deixar de fixar aquesta pantalla."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Per anul·lar la fixació d\'aquesta pantalla, mantén premuda l\'opció Visió general."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"S\'ha fixat l\'aplicació. En aquest dispositiu no es permet anul·lar-ne la fixació."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Fixació de la pantalla anul·lada"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index c263ac6..7ef7523 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -269,7 +269,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítat obsah oken"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Může prozkoumávat obsah oken, se kterými pracujete."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnout funkci Prozkoumání dotykem"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Položky, na které klepnete, budou přečteny nahlas a obrazovku bude možné procházet pomocí gest."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Zapnout vylepšené usnadnění přístupu k webu"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Za účelem usnadnění přístupu k obsahu aplikací mohou být nainstalovány skripty."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sledovat zadávaný text"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Zadejte kód PUK a nový kód PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kód PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nový kód PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotykem zadáte heslo"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Zadejte heslo pro odemknutí"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Zadejte kód PIN pro odemknutí"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Nesprávný kód PIN."</string>
@@ -873,14 +875,54 @@
<item quantity="one">1 hodina</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"nyní"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> roky</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> roku</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> let</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> rok</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> roky</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> roku</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> let</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> rok</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Potíže s videem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Toto video nelze přenášet datovým proudem do tohoto zařízení."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Toto video nelze přehrát."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Některé systémové funkce nemusí fungovat"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Pro systém není dostatek místa v úložišti. Uvolněte alespoň 250 MB místa a restartujte zařízení."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> je spuštěna"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Klepnutím zobrazíte další informace nebo ukončíte aplikaci."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Zrušit"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Spouštění aplikací."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Dokončování inicializace."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Běží aplikace <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Dotykem přepnete aplikaci"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Přepnout aplikace?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Než spustíte novou aplikaci, je třeba zastavit jinou spuštěnou aplikaci."</string>
<string name="old_app_action" msgid="493129172238566282">"Návrat do aplikace <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Spustit aplikaci <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zastavit starou aplikaci bez uložení."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> překročil limit paměti"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Byl shromážděn výpis haldy, klepnutím jej můžete sdílet"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Sdílet výpis haldy?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> překročil limit paměti procesu <xliff:g id="SIZE">%2$s</xliff:g>. Je k dispozici výpis haldy, který můžete sdílet s vývojářem. Buďte opatrní, výpis haldy může obsahovat osobní údaje, ke kterým má aplikace přístup."</string>
<string name="sendText" msgid="5209874571959469142">"Vyberte akci pro text"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nemá přístup k internetu"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Možnosti zobrazíte klepnutím"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Připojení k síti Wi-Fi se nezdařilo"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" má pomalé připojení k internetu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Povolit připojení?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Spustit Wi-Fi Direct. Tato možnost vypne provoz sítě Wi-Fi v režimu klient/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct se nepodařilo spustit."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je zapnuto"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Nastavení otevřete dotykem"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Přijmout"</string>
<string name="decline" msgid="2112225451706137894">"Odmítnout"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozvánka odeslána."</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB na přenos fotek"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB v režimu MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Připojeno k perifernímu zařízení USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Klepnutím zobrazíte další možnosti."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Ladění přes USB připojeno"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Dotykem zakážete ladění USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Vytváření zprávy o chybě…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Sdílet zprávu o chybě?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sdílení zprávy o chybě…"</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Zjištěno nové úložiště <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"K přenosu fotek a médií"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Úložiště <xliff:g id="NAME">%s</xliff:g> je poškozeno"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Úložiště <xliff:g id="NAME">%s</xliff:g> je poškozeno. Opravíte jej klepnutím."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Úložiště <xliff:g id="NAME">%s</xliff:g> není podporováno"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Úložiště <xliff:g id="NAME">%s</xliff:g> není v tomto zařízení podporováno. Klepnutím provedete nastavení v podporovaném formátu."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Úložiště <xliff:g id="NAME">%s</xliff:g> neočekávaně odpojeno"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Před odebráním úložiště <xliff:g id="NAME">%s</xliff:g> jej nejprve odpojte. Zabráníte tak ztrátě dat."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Úložiště <xliff:g id="NAME">%s</xliff:g> bylo odpojeno."</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Povoluje aplikaci číst instalační relace. Díky tomu můžete zobrazit podrobnosti o aktivních instalacích balíčku."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"odesílání žádostí o přístup k instalačním balíčkům"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Umožňuje aplikaci požádat o instalaci balíčků."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dvojitým dotykem můžete ovládat přiblížení"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Poklepáním můžete ovládat přiblížení"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget nelze přidat."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Přejít"</string>
<string name="ime_action_search" msgid="658110271822807811">"Hledat"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Služba na hodnocení důležitosti oznámení"</string>
<string name="vpn_title" msgid="19615213552042827">"Síť VPN je aktivována"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Aplikace <xliff:g id="APP">%s</xliff:g> aktivovala síť VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Dotykem zobrazíte správu sítě."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Připojeno k relaci <xliff:g id="SESSION">%s</xliff:g>. Dotykem můžete síť spravovat."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Klepnutím zobrazíte správu sítě."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Připojeno k relaci <xliff:g id="SESSION">%s</xliff:g>. Klepnutím můžete síť spravovat."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Připojování k trvalé síti VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Je připojena trvalá síť VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Chyba trvalé sítě VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Dotykem zahájíte konfiguraci"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Zvolit soubor"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Není vybrán žádný soubor"</string>
<string name="reset" msgid="2448168080964209908">"Resetovat"</string>
<string name="submit" msgid="1602335572089911941">"Odeslat"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Aktivován režim V autě"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Dotykem ukončíte režim V autě."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Sdílené připojení nebo hotspot je aktivní."</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Dotykem nastavíte."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Zpět"</string>
<string name="next_button_label" msgid="1080555104677992408">"Další"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Přeskočit"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Přidat účet"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Zvýšit"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Snížit"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> dotkněte se a podržte."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Chcete-li hodnotu zvýšit, přijeďte prstem nahoru, chcete-li hodnotu snížit, přejeďte prstem dolů."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Přidat minutu"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Ubrat minutu"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Úložiště USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Upravit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozornění na využití dat"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Informace o využití a nastavení"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dosáhli jste limitu dat 2G–3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dosáhli jste limitu dat 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dosáhli jste limitu mobilních dat"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Datový limit Wi-Fi byl překročen"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> nad stanoveným limitem."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data na pozadí jsou omezena"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Klepnutím omezení odstraníte."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certifikát zabezpečení"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Tento certifikát je platný."</string>
<string name="issued_to" msgid="454239480274921032">"Vydáno pro:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Vyberte rok"</string>
<string name="deleted_key" msgid="7659477886625566590">"Číslice <xliff:g id="KEY">%1$s</xliff:g> byla smazána"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Pracovní <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Chcete-li tuto obrazovku uvolnit, klepněte na tlačítko Zpět a podržte jej."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Chcete-li tuto obrazovku uvolnit, klepněte na možnost Přehled a podržte ji."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikace je připnutá: Odepnutí v tomto zařízení není povoleno."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Obrazovka připnuta"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Obrazovka uvolněna"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 6432f16..e899149 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"hente indholdet i vinduet"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"undersøge indholdet i et vindue, du interagerer med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"aktivere Udforsk ved berøring"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"De emner, der trykkes på, læses højt, og skærmen kan udforskes ved hjælp af bevægelser."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktivér udvidede webhjælpefunktioner"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Der installeres muligvis scripts for at gøre appindhold mere tilgængeligt."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"observere tekst, du skriver"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Indtast PUK- og pinkode"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny pinkode"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Tryk for at angive adgangskode"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Indtast adgangskoden for at låse op"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Indtast pinkode for at låse op"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Forkert pinkode."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timer</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"nu"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> t.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> t.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dag</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dage</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">om <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">om <xliff:g id="COUNT_1">%d</xliff:g> t.</item>
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> t.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">om <xliff:g id="COUNT_1">%d</xliff:g> dag</item>
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> dage</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">om <xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Videoproblem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Denne video kan ikke streames på denne enhed."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Videoen kan ikke afspilles."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Nogle systemfunktioner virker måske ikke"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Der er ikke nok ledig lagerplads til systemet. Sørg for, at du har 250 MB ledig plads, og genstart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> kører"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Tryk for at få flere oplysninger eller for at stoppe appen."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuller"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Åbner dine apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Gennemfører start."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> er i gang"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Tryk for at skifte til appen"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vil du skifte apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Der kører allerede en anden app, der skal stoppes, før du kan starte en ny."</string>
<string name="old_app_action" msgid="493129172238566282">"Tilbage til <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop den gamle app uden at gemme."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> har overskredet sin hukommelsesgrænse"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"En heap dump er blevet indsamlet. Tryk for at dele"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Vil du dele en heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Processen <xliff:g id="PROC">%1$s</xliff:g> har overskredet sin proceshukommelsesgrænse på <xliff:g id="SIZE">%2$s</xliff:g>. En heap dump er tilgængelig og kan deles med udvikleren. Vær forsigtig: Denne heap dump kan indeholde dine personlige oplysninger, som appen har adgang til."</string>
<string name="sendText" msgid="5209874571959469142">"Vælg en handling for teksten"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi har ingen internetadgang"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Tryk for at se valgmulighederne"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kunne ikke oprette forbindelse til Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" har en dårlig internetforbindelse."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vil du tillade denne forbindelse?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. Dette slår Wi-Fi-klient/hotspot fra."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct kunne ikke startes."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct er slået til"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Tryk for indstillinger"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accepter"</string>
<string name="decline" msgid="2112225451706137894">"Afvis"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitationen er sendt"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB til billedoverførsel"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB til MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tilsluttet et USB-ekstraudstyr"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Tryk for at se flere muligheder."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-fejlretning er tilsluttet"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Tryk for at deaktivere USB-fejlretning."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Opretter fejlrapport…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vil du dele fejlrapporten?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deler fejlrapport…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Der blev registreret et nyt <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Til overførsel af billeder og medier"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> er beskadiget"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> er beskadiget. Tryk for at rette fejlen."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> understøttes ikke"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Denne enhed understøtter ikke dette <xliff:g id="NAME">%s</xliff:g>. Tryk for at konfigurere det til et understøttet format."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> blev fjernet uventet"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"For at undgå datatab skal <xliff:g id="NAME">%s</xliff:g> demonteres inden fjernelse"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> blev fjernet"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Tillader, at en applikation læser installationssessioner. Dermed kan applikationen se oplysninger om aktive pakkeinstallationer."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"anmod om installation af pakker"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Tillader, at en app anmoder om installation af pakker."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Tryk to gange for zoomstyring"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tryk to gange for zoomkontrol"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget kunne ikke tilføjes."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Gå"</string>
<string name="ime_action_search" msgid="658110271822807811">"Søg"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Tjeneste til rangering af underretninger"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN er aktiveret."</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN aktiveres af <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Tryk for at administrere netværket."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Forbundet til <xliff:g id="SESSION">%s</xliff:g>. Tryk for at administrere netværket."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tryk for at administrere netværket."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Forbundet til <xliff:g id="SESSION">%s</xliff:g>. Tryk for at administrere netværket."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Opretter forbindelse til altid aktiveret VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN er forbundet"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Fejl i altid aktiveret VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Tryk for at konfigurere"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Vælg fil"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ingen fil er valgt"</string>
<string name="reset" msgid="2448168080964209908">"Nulstil"</string>
<string name="submit" msgid="1602335572089911941">"Send"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Biltilstand er aktiveret"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Tryk for at afslutte biltilstand."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Netdeling eller hotspot er aktivt"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Tryk for at konfigurere."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Tilbage"</string>
<string name="next_button_label" msgid="1080555104677992408">"Næste"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Spring over"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Tilføj konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Højere"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Lavere"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Tryk <xliff:g id="VALUE">%s</xliff:g> gange, og hold inde."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Glid op for at øge og ned for at mindske."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Forøg minuttal"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Sænk minuttal"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-lager"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Rediger"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advarsel om dataforbrug"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Tryk for at se forbrug og indstillinger."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Grænsen for 2G-3G-data er nået"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Grænsen for 4G-data er nået"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Grænsen for mobildata er nået"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Grænsen for Wi-Fi-data er overskredet"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over den angivne grænse."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Baggrundsdata er begrænsede"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Tryk for at fjerne begrænsn."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sikkerhedscertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Dette certifikat er gyldigt."</string>
<string name="issued_to" msgid="454239480274921032">"Udstedt til:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Vælg år"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> er slettet"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> – arbejde"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Hvis du vil frigøre dette skærmbillede, skal du trykke på Tilbage og holde fingeren nede."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Hvis du vil frigøre dette skærmbillede, skal du trykke på Oversigt og holde fingeren nede."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen er fastgjort: Det er ikke tilladt at frigøre den på denne enhed."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skærmen blev fastgjort"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skærmen blev frigjort"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index a2d3c2a..8addd41 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Fensterinhalte abrufen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Die Inhalte eines Fensters, mit dem du interagierst, werden abgerufen."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\"Tippen & Entdecken\" aktivieren"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Berührte Elemente werden laut vorgelesen und der Bildschirm kann über Gesten erkundet werden."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Verbesserte Web-Bedienung aktivieren"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skripts können installiert werden, um den Zugriff auf App-Inhalte zu erleichtern."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Text bei der Eingabe beobachten"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK und neuen PIN-Code eingeben"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-Code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Neuer PIN-Code"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Zur Passworteingabe berühren"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Passwort zum Entsperren eingeben"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"PIN zum Entsperren eingeben"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Falscher PIN-Code"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 Stunde</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"jetzt"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Videoprobleme"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Dieses Video ist nicht für Streaming auf diesem Gerät gültig."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Video kann nicht wiedergegeben werden."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Einige Systemfunktionen funktionieren möglicherweise nicht."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Der Speicherplatz reicht nicht für das System aus. Stelle sicher, dass 250 MB freier Speicherplatz vorhanden sind, und starte das Gerät dann neu."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> wird ausgeführt"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Für weitere Informationen oder zum Anhalten der App tippen"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Abbrechen"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet..."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Start wird abgeschlossen..."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> läuft"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Zum Wechseln in die App berühren"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Apps wechseln?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Es wird bereits eine andere App ausgeführt, die vor dem Start einer neuen beendet werden muss."</string>
<string name="old_app_action" msgid="493129172238566282">"Zu <xliff:g id="OLD_APP">%1$s</xliff:g> zurückkehren"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> starten"</string>
<string name="new_app_description" msgid="1932143598371537340">"Alte App beenden, ohne zu speichern"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Speicherlimit für \"<xliff:g id="PROC">%1$s</xliff:g>\" überschritten"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Heap-Dump wurde erfasst, zum Teilen tippen"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Heap-Dump teilen?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Für den Prozess \"<xliff:g id="PROC">%1$s</xliff:g>\" wurde das Prozessspeicherlimit von <xliff:g id="SIZE">%2$s</xliff:g> überschritten. Es steht ein Heap-Dump zur Verfügung, den du mit dem Entwickler teilen kannst. Beachte jedoch unbedingt, dass der Heap-Dump personenbezogene Daten von dir enthalten kann, auf die die App zugreifen kann."</string>
<string name="sendText" msgid="5209874571959469142">"Aktion für Text auswählen"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"WLAN hat keinen Internetzugriff"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Für Optionen tippen"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Es konnte keine WLAN-Verbindung hergestellt werden."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" hat eine schlechte Internetverbindung."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Verbindung zulassen?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct-Betrieb starten. Hierdurch wird der WLAN-Client-/-Hotspot-Betrieb deaktiviert."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Starten von Wi-Fi Direct nicht möglich"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ist aktiviert."</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Zum Aufrufen der Einstellungen berühren"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Akzeptieren"</string>
<string name="decline" msgid="2112225451706137894">"Ablehnen"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Einladung gesendet"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB für die Fotoübertragung"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB für MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Mit USB-Zubehör verbunden"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Für weitere Optionen tippen"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-Debugging"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Zum Deaktivieren berühren"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Fehlerbericht wird abgerufen…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Fehlerbericht teilen?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Fehlerbericht wird geteilt…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Neue <xliff:g id="NAME">%s</xliff:g> entdeckt"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Zum Übertragen von Fotos und Medien"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> beschädigt"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> ist beschädigt. Zum Reparieren tippen."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> nicht unterstützt"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"<xliff:g id="NAME">%s</xliff:g> wird von diesem Gerät nicht unterstützt. Zum Einrichten in einem unterstützten Format tippen."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> wurde unerwartet entfernt"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Trenne die <xliff:g id="NAME">%s</xliff:g> vor dem Entfernen, um Datenverluste zu vermeiden."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> wurde entfernt"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Ermöglicht der App, Installationssitzungen zu lesen. Dadurch kann sie Details aktiver Paketinstallationen abrufen."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"Installation von Paketen anfordern"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Ermöglicht der App, die Installation von Paketen anzufordern"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Für Zoomeinstellung zweimal berühren"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Für Zoomeinstellung zweimal berühren"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget konnte nicht hinzugefügt werden."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Los"</string>
<string name="ime_action_search" msgid="658110271822807811">"Suchen"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Service für Einstufung von Benachrichtigungen"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN aktiviert"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN wurde von <xliff:g id="APP">%s</xliff:g> aktiviert."</string>
- <string name="vpn_text" msgid="3011306607126450322">"Zum Verwalten des Netzwerks berühren"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Verbunden mit <xliff:g id="SESSION">%s</xliff:g>. Zum Verwalten des Netzwerks berühren"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Zum Verwalten des Netzwerks tippen"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Verbunden mit <xliff:g id="SESSION">%s</xliff:g>. Zum Verwalten des Netzwerks tippen"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Verbindung zu durchgehend aktivem VPN wird hergestellt…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Mit durchgehend aktivem VPN verbunden"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Durchgehend aktives VPN – Verbindungsfehler"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Zum Konfigurieren berühren"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Datei auswählen"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Keine ausgewählt"</string>
<string name="reset" msgid="2448168080964209908">"Zurücksetzen"</string>
<string name="submit" msgid="1602335572089911941">"Senden"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Automodus aktiviert"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Zum Beenden des Automodus berühren"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering oder Hotspot aktiv"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Zum Einrichten berühren"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Zurück"</string>
<string name="next_button_label" msgid="1080555104677992408">"Weiter"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Überspringen"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Konto hinzufügen"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Verlängern"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Verringern"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> berühren und gedrückt halten"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Zum Verlängern nach oben und zum Verringern nach unten schieben"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minuten verlängern"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minuten verringern"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-Speicher"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Bearbeiten"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Warnung zum Datenverbrauch"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Für Verbrauch/Einstell. berühren"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-/3G-Datenlimit erreicht"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-Datenlimit erreicht"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobilfunkdatenlimit erreicht"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"WLAN-Datenlimit überschritten"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> über dem vorgegebenen Limit"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Hintergrunddaten beschränkt"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Beschränkung durch Berühren entfernen"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sicherheitszertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Dies ist ein gültiges Zertifikat."</string>
<string name="issued_to" msgid="454239480274921032">"Ausgestellt für:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Jahr auswählen"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> gelöscht"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (geschäftlich)"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Um die Fixierung dieses Bildschirms aufzuheben, berühre und halte \"Zurück\"."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Um die Fixierung dieses Bildschirms aufzuheben, berühre und halte \"Übersicht\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Die App ist fixiert. Das Aufheben der Fixierung ist auf diesem Gerät nicht zulässig."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Bildschirm fixiert"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Bildschirm gelöst"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 775e39b..821fbe6 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Τα στοιχεία που αγγίζετε θα εκφωνούνται και η εξερεύνηση της οθόνης μπορεί να γίνει με κινήσεις."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ενεργοποίηση της βελτιωμένης προσβασιμότητας ιστού"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Ενδέχεται να εγκατασταθούν σενάρια για τη βελτίωση της πρόσβασης στο περιεχόμενο της εφαρμογής."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Παρακολούθηση του κειμένου που πληκτρολογείτε"</string>
@@ -425,9 +426,9 @@
<string name="permdesc_changeWimaxState" product="tv" msgid="6022307083934827718">"Επιτρέπει στην εφαρμογή να συνδέει και να αποσυνδέει την τηλεόραση από δίκτυα WiMAX."</string>
<string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"Επιτρέπει στην εφαρμογή τη σύνδεση στο τηλέφωνο και την αποσύνδεση από αυτό, από δίκτυα WiMAX."</string>
<string name="permlab_bluetooth" msgid="6127769336339276828">"σύζευξη με συσκευές Bluetooth"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Επιτρέπει στην εφαρμογή να προβάλλει τη διαμόρφωση του Bluetooth στο tablet, καθώς και να πραγματοποιεί και να αποδέχεται συνδέσεις με συζευγμένες συσκευές."</string>
+ <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Επιτρέπει στην εφαρμογή να προβάλλει τη διαμόρφωση του Bluetooth στο tablet, καθώς και να πραγματοποιεί και να αποδέχεται συνδέσεις με συνδεδεμένες συσκευές."</string>
<string name="permdesc_bluetooth" product="tv" msgid="3974124940101104206">"Επιτρέπει στην εφαρμογή να προβάλλει τη διαμόρφωση του Bluetooth στην τηλεόραση, καθώς και να δημιουργεί και να αποδέχεται συνδέσεις με συσκευές σε σύζευξη."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Επιτρέπει στην εφαρμογή να προβάλλει τη διαμόρφωση του Bluetooth στο τηλέφωνο, καθώς και να πραγματοποιεί και να αποδέχεται συνδέσεις με συζευγμένες συσκευές."</string>
+ <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Επιτρέπει στην εφαρμογή να προβάλλει τη διαμόρφωση του Bluetooth στο τηλέφωνο, καθώς και να πραγματοποιεί και να αποδέχεται συνδέσεις με συνδεδεμένες συσκευές."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"έλεγχος Επικοινωνίας κοντινού πεδίου (Near Field Communication)"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Επιτρέπει στην εφαρμογή την επικοινωνία με ετικέτες, κάρτες και αναγνώστες της Επικοινωνίας κοντινού πεδίου (NFC)."</string>
<string name="permlab_disableKeyguard" msgid="3598496301486439258">"απενεργοποίηση κλειδώματος οθόνης"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Πληκτρολογήστε τον κωδικό PUK και τον νέο κωδικό PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Κωδικός PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Νέος κωδικός PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Αγγίξτε για εισαγ. κωδ. πρόσβ."</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Πληκτρολογήστε τον κωδικό πρόσβασης για ξεκλείδωμα"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Πληκτρολογήστε τον αριθμό PIN για ξεκλείδωμα"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Λανθασμένος κωδικός PIN."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 ώρα</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"τώρα"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> λ.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> λ.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ω.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ω.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ημ.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ημ.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ε.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ε.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">σε <xliff:g id="COUNT_1">%d</xliff:g> λ.</item>
+ <item quantity="one">σε <xliff:g id="COUNT_0">%d</xliff:g> λ.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">σε <xliff:g id="COUNT_1">%d</xliff:g> ω.</item>
+ <item quantity="one">σε <xliff:g id="COUNT_0">%d</xliff:g> ω.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">σε <xliff:g id="COUNT_1">%d</xliff:g> ημ.</item>
+ <item quantity="one">σε <xliff:g id="COUNT_0">%d</xliff:g> ημ.</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">σε <xliff:g id="COUNT_1">%d</xliff:g> ε.</item>
+ <item quantity="one">σε <xliff:g id="COUNT_0">%d</xliff:g> ε.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Πρόβλημα με το βίντεο"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Αυτό το βίντεο δεν είναι έγκυρο για ροή σε αυτή τη συσκευή."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Δεν μπορείτε να αναπαράγετε αυτό το βίντεο."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Ορισμένες λειτουργίες συστήματος ενδέχεται να μην λειτουργούν"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Δεν υπάρχει αρκετός αποθηκευτικός χώρος για το σύστημα. Βεβαιωθείτε ότι διαθέτετε 250 MB ελεύθερου χώρου και κάντε επανεκκίνηση."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> εκτελείται"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Αγγίξτε για περισσότερες πληροφορίες ή για να διακόψετε την εκτέλεση της εφαρμογής."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Ακύρωση"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Έναρξη εφαρμογών."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Ολοκλήρωση εκκίνησης."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Η εφαρμογή <xliff:g id="APP">%1$s</xliff:g> εκτελείται"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Αγγίξτε για εναλλαγή σε εφαρμογή"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Να γίνει εναλλαγή μεταξύ εφαρμογών;"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Εκτελείται ήδη άλλη εφαρμογή την οποία πρέπει να διακόψετε για να είναι δυνατή η εκτέλεση της νέας."</string>
<string name="old_app_action" msgid="493129172238566282">"Επιστροφή σε <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Εκκίνηση της εφαρμογής <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Διακοπή της παλιάς εφαρμογής χωρίς αποθήκευση."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Η διαδικασία <xliff:g id="PROC">%1$s</xliff:g> υπερβαίνει το όριο μνήμης"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Έγινε λήψη του στιγμιότυπου μνήμης, αγγίξτε για κοινή χρήση"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Κοινή χρήση στιγμιότυπου μνήμης;"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Η διαδικασία <xliff:g id="PROC">%1$s</xliff:g> υπερβαίνει το όριο μνήμης <xliff:g id="SIZE">%2$s</xliff:g>. Είναι διαθέσιμο ένα στιγμιότυπο μνήμης για να μοιραστείτε με τον προγραμματιστή. Να είστε προσεκτικοί: αυτό το στιγμιότυπο μνήμης μπορεί να περιέχει οποιοδήποτε από τα προσωπικά σας στοιχεία στα οποία έχει πρόσβαση η εφαρμογή."</string>
<string name="sendText" msgid="5209874571959469142">"Επιλέξτε μια ενέργεια για το κείμενο"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Το δίκτυο Wi-Fi δεν έχει πρόσβαση στο διαδίκτυο"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Αγγίξτε για επιλογές"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Δεν είναι δυνατή η σύνδεση στο Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" έχει κακή σύνδεση στο Διαδίκτυο."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Να επιτρέπεται η σύνδεση;"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Ξεκινήστε τη λειτουργία Wi-Fi Direct. Θα απενεργοποιηθεί η λειτουργία πελάτη/φορητού σημείου πρόσβασης Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Δεν ήταν δυνατή η εκκίνηση του Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Το Wi-Fi Direct έχει ενεργοποιηθεί"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Αγγίξτε για ρυθμίσεις"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Αποδοχή"</string>
<string name="decline" msgid="2112225451706137894">"Απόρριψη"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Η πρόσκληση στάλθηκε"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB για μεταφορά φωτογραφιών"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB για MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Σύνδεση σε αξεσουάρ USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Αγγίξτε για περισσότερες επιλογές."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Συνδέθηκε ο εντοπισμός σφαλμάτων USB"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Απεν. του εντοπ. σφαλμάτων USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Λήψη αναφοράς σφάλματος…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Κοινή χρήση αναφοράς σφάλματος;"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Κοινή χρήση αναφοράς σφάλματος…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Εντοπίστηκε νέο μέσο αποθήκευσης <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Για μεταφορά φωτ./πολυμέσων"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Η κάρτα <xliff:g id="NAME">%s</xliff:g> είναι κατεστραμμένη"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Η κάρτα <xliff:g id="NAME">%s</xliff:g> είναι κατεστραμμένη. Αγγίξτε για διόρθωση."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Η κάρτα <xliff:g id="NAME">%s</xliff:g> δεν υποστηρίζεται"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Η συσκευή δεν υποστηρίζει την κάρτα <xliff:g id="NAME">%s</xliff:g>. Αγγίξτε για να τη ρυθμίσετε σε μια υποστηριζόμενη μορφή."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Μη αναμενόμενη αφαίρεση <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Αποπροσαρτήστε το μέσο αποθήκευσης <xliff:g id="NAME">%s</xliff:g> πριν τον αφαιρέσετε, προς αποφυγή απώλειας δεδομένων."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Καταργήθηκε το <xliff:g id="NAME">%s</xliff:g>."</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Επιτρέπει σε μια εφαρμογή την ανάγνωση των περιόδων σύνδεσης εγκατάστασης. Αυτό της επιτρέπει να βλέπει λεπτομέρειες σχετικά με τις εγκαταστάσεις του ενεργού πακέτου."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"αίτημα εγκατάστασης πακέτων"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Επιτρέπει σε μια εφαρμογή να ζητά εγκατάσταση πακέτων."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Αγγίξτε δύο φορές για έλεγχο εστίασης"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Πατήστε δύο φορές για έλεγχο εστίασης"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Δεν ήταν δυνατή η προσθήκη του γραφικού στοιχείου."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Μετάβαση"</string>
<string name="ime_action_search" msgid="658110271822807811">"Αναζήτηση"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Υπηρεσία κατάταξης ειδοποιήσεων"</string>
<string name="vpn_title" msgid="19615213552042827">"Το VPN ενεργοποιήθηκε"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Το VPN ενεργοποιήθηκε από την εφαρμογή <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Αγγίξτε για τη διαχείριση του δικτύου."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Συνδέθηκε με <xliff:g id="SESSION">%s</xliff:g>. Αγγίξτε για τη διαχείριση του δικτύου."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Πατήστε για να διαχειριστείτε το δίκτυο."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Συνδέθηκε με <xliff:g id="SESSION">%s</xliff:g>. Πατήστε για να διαχειριστείτε το δίκτυο."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Σύνδεση πάντα ενεργοποιημένου VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Έχει συνδεθεί πάντα ενεργοποιημένο VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Σφάλμα πάντα ενεργοποιημένου VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Αγγίξτε για διαμόρφωση"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Επιλογή αρχείου"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Δεν επιλέχθηκε κανένα αρχείο."</string>
<string name="reset" msgid="2448168080964209908">"Επαναφορά"</string>
<string name="submit" msgid="1602335572089911941">"Υποβολή"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Η λειτουργία αυτοκινήτου είναι ενεργοποιημένη"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Αγγίξτε για έξοδο από τη λειτουργία αυτοκινήτου."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Πρόσδεση ή σύνδεση σημείου πρόσβασης ενεργή"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Αγγίξτε για ρύθμιση."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Πίσω"</string>
<string name="next_button_label" msgid="1080555104677992408">"Επόμενο"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Παράλειψη"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Προσθήκη λογαριασμού"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Αύξηση"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Μείωση"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Πατήστε παρατεταμένα το <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Πραγματοποιήστε κύλιση προς τα πάνω για αύξηση και προς τα κάτω για μείωση."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Αύξηση λεπτού"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Μείωση λεπτού"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Αποθηκευτικός χώρος USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Επεξεργασία"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Προειδοποίηση χρήσης δεδομένων"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Αγγίξτε για προβολή χρήσης/ρυθμ."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Συμπλ. το όριο δεδομένων 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Συμπλ. το όριο δεδομένων 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Συμπλ. το όριο δεδ. κιν. τηλ."</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Υπέρβ. ορίου Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> πάνω από το καθορισμένο όριο."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Περ.δεδομ.παρασκ."</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Αγγίξτε για κατάργ. περιορισμού."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Πιστοποιητικό ασφαλείας"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Αυτό το πιστοποιητικό είναι έγκυρο."</string>
<string name="issued_to" msgid="454239480274921032">"Εκδόθηκε σε:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Επιλογή έτους"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> διαγράφηκε"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Εργασία <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Για να ξεκαρφιτσώσετε αυτήν την οθόνη, αγγίξτε παρατεταμένα \"Επιστροφή\"."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Για να ξεκαρφιτσώσετε αυτήν την οθόνη, αγγίξτε παρατεταμένα \"Επισκόπηση\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Η εφαρμογή καρφιτσώθηκε: Το ξεκαρφίτσωμα δεν επιτρέπεται σε αυτήν τη συσκευή."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Η οθόνη καρφιτσώθηκε"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Η οθόνη ξεκαρφιτσώθηκε"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 33d61dc..84834db 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Touched items will be spoken aloud and the screen can be explored using gestures."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Turn on enhanced web accessibility"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts may be installed to make app content more accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observe text that you type"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Type PUK and new PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"New PIN Code"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Touch to type password"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Type password to unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Type PIN to unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Incorrect PIN code."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 hour</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"now"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>y</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>y</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video problem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"This video isn\'t valid for streaming to this device."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Can\'t play this video."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Some system functions may not work"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Not enough storage for the system. Make sure that you have 250 MB of free space and restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> is running"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Touch for more information or to stop the app."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> running"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Touch to switch to app"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Switch apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Another app is already running that must be stopped before you can start a new one."</string>
<string name="old_app_action" msgid="493129172238566282">"Return to <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop the old app without saving."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> exceeded memory limit"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Heap dump has been collected; touch to share"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Share heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"The process <xliff:g id="PROC">%1$s</xliff:g> has exceeded its process memory limit of <xliff:g id="SIZE">%2$s</xliff:g>. A heap dump is available for you to share with its developer. Be careful: this heap dump can contain any of your personal information that the application has access to."</string>
<string name="sendText" msgid="5209874571959469142">"Choose an action for text"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi has no Internet access"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Touch for options"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Couldn\'t connect to Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" has a poor Internet connection."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Allow connection?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. This will turn off Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Couldn\'t start Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct is on"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Touch for settings"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accept"</string>
<string name="decline" msgid="2112225451706137894">"Decline"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation sent"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Touch for more options."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Touch to disable USB debugging."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Taking bug report…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Share bug report?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sharing bug report…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"New <xliff:g id="NAME">%s</xliff:g> detected"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For transferring photos and media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrupted <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Touch to fix."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Touch to set up in a supported format."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Unmount <xliff:g id="NAME">%s</xliff:g> before removing to avoid data loss"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Removed <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Allows an application to read install sessions. This allows it to see details about active package installations."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"request install packages"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Allows an application to request installation of packages."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Touch twice for zoom control"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tap twice for zoom control"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Couldn\'t add widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Go"</string>
<string name="ime_action_search" msgid="658110271822807811">"Search"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Notification ranker service"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activated"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN is activated by <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Touch to manage the network."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Connected to <xliff:g id="SESSION">%s</xliff:g>. Touch to manage the network."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tap to manage the network."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Connected to <xliff:g id="SESSION">%s</xliff:g>. Tap to manage the network."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN connecting…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN connected"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Always-on VPN error"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Touch to configure"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Choose file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No file chosen"</string>
<string name="reset" msgid="2448168080964209908">"Reset"</string>
<string name="submit" msgid="1602335572089911941">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Car mode enabled"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Touch to exit car mode."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Touch to set up."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Back"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Skip"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Add account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Increase"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Decrease"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> touch and hold."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slide up to increase and down to decrease."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Increase minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Decrease minute"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data usage warning"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Touch to view usage and settings."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limit reached"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limit reached"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobile data limit reached"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limit exceeded"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over specified limit."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Background data restricted"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Touch to remove restriction."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Security certificate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"This certificate is valid."</string>
<string name="issued_to" msgid="454239480274921032">"Issued to:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Select year"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"To unpin this screen, touch and hold Back."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"To unpin this screen, touch and hold Overview."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 33d61dc..84834db 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Touched items will be spoken aloud and the screen can be explored using gestures."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Turn on enhanced web accessibility"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts may be installed to make app content more accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observe text that you type"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Type PUK and new PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"New PIN Code"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Touch to type password"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Type password to unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Type PIN to unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Incorrect PIN code."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 hour</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"now"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>y</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>y</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video problem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"This video isn\'t valid for streaming to this device."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Can\'t play this video."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Some system functions may not work"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Not enough storage for the system. Make sure that you have 250 MB of free space and restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> is running"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Touch for more information or to stop the app."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> running"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Touch to switch to app"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Switch apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Another app is already running that must be stopped before you can start a new one."</string>
<string name="old_app_action" msgid="493129172238566282">"Return to <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop the old app without saving."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> exceeded memory limit"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Heap dump has been collected; touch to share"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Share heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"The process <xliff:g id="PROC">%1$s</xliff:g> has exceeded its process memory limit of <xliff:g id="SIZE">%2$s</xliff:g>. A heap dump is available for you to share with its developer. Be careful: this heap dump can contain any of your personal information that the application has access to."</string>
<string name="sendText" msgid="5209874571959469142">"Choose an action for text"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi has no Internet access"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Touch for options"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Couldn\'t connect to Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" has a poor Internet connection."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Allow connection?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. This will turn off Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Couldn\'t start Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct is on"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Touch for settings"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accept"</string>
<string name="decline" msgid="2112225451706137894">"Decline"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation sent"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Touch for more options."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Touch to disable USB debugging."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Taking bug report…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Share bug report?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sharing bug report…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"New <xliff:g id="NAME">%s</xliff:g> detected"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For transferring photos and media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrupted <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Touch to fix."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Touch to set up in a supported format."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Unmount <xliff:g id="NAME">%s</xliff:g> before removing to avoid data loss"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Removed <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Allows an application to read install sessions. This allows it to see details about active package installations."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"request install packages"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Allows an application to request installation of packages."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Touch twice for zoom control"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tap twice for zoom control"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Couldn\'t add widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Go"</string>
<string name="ime_action_search" msgid="658110271822807811">"Search"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Notification ranker service"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activated"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN is activated by <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Touch to manage the network."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Connected to <xliff:g id="SESSION">%s</xliff:g>. Touch to manage the network."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tap to manage the network."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Connected to <xliff:g id="SESSION">%s</xliff:g>. Tap to manage the network."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN connecting…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN connected"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Always-on VPN error"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Touch to configure"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Choose file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No file chosen"</string>
<string name="reset" msgid="2448168080964209908">"Reset"</string>
<string name="submit" msgid="1602335572089911941">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Car mode enabled"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Touch to exit car mode."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Touch to set up."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Back"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Skip"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Add account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Increase"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Decrease"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> touch and hold."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slide up to increase and down to decrease."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Increase minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Decrease minute"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data usage warning"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Touch to view usage and settings."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limit reached"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limit reached"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobile data limit reached"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limit exceeded"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over specified limit."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Background data restricted"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Touch to remove restriction."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Security certificate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"This certificate is valid."</string>
<string name="issued_to" msgid="454239480274921032">"Issued to:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Select year"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"To unpin this screen, touch and hold Back."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"To unpin this screen, touch and hold Overview."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 33d61dc..84834db 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Touched items will be spoken aloud and the screen can be explored using gestures."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Turn on enhanced web accessibility"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts may be installed to make app content more accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observe text that you type"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Type PUK and new PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"New PIN Code"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Touch to type password"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Type password to unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Type PIN to unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Incorrect PIN code."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 hour</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"now"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>y</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">in <xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="one">in <xliff:g id="COUNT_0">%d</xliff:g>y</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video problem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"This video isn\'t valid for streaming to this device."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Can\'t play this video."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Some system functions may not work"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Not enough storage for the system. Make sure that you have 250 MB of free space and restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> is running"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Touch for more information or to stop the app."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> running"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Touch to switch to app"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Switch apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Another app is already running that must be stopped before you can start a new one."</string>
<string name="old_app_action" msgid="493129172238566282">"Return to <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop the old app without saving."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> exceeded memory limit"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Heap dump has been collected; touch to share"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Share heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"The process <xliff:g id="PROC">%1$s</xliff:g> has exceeded its process memory limit of <xliff:g id="SIZE">%2$s</xliff:g>. A heap dump is available for you to share with its developer. Be careful: this heap dump can contain any of your personal information that the application has access to."</string>
<string name="sendText" msgid="5209874571959469142">"Choose an action for text"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi has no Internet access"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Touch for options"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Couldn\'t connect to Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" has a poor Internet connection."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Allow connection?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. This will turn off Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Couldn\'t start Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct is on"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Touch for settings"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accept"</string>
<string name="decline" msgid="2112225451706137894">"Decline"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation sent"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Touch for more options."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Touch to disable USB debugging."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Taking bug report…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Share bug report?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sharing bug report…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"New <xliff:g id="NAME">%s</xliff:g> detected"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For transferring photos and media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrupted <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Touch to fix."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Touch to set up in a supported format."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Unmount <xliff:g id="NAME">%s</xliff:g> before removing to avoid data loss"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Removed <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Allows an application to read install sessions. This allows it to see details about active package installations."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"request install packages"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Allows an application to request installation of packages."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Touch twice for zoom control"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tap twice for zoom control"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Couldn\'t add widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Go"</string>
<string name="ime_action_search" msgid="658110271822807811">"Search"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Notification ranker service"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activated"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN is activated by <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Touch to manage the network."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Connected to <xliff:g id="SESSION">%s</xliff:g>. Touch to manage the network."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tap to manage the network."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Connected to <xliff:g id="SESSION">%s</xliff:g>. Tap to manage the network."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN connecting…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN connected"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Always-on VPN error"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Touch to configure"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Choose file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No file chosen"</string>
<string name="reset" msgid="2448168080964209908">"Reset"</string>
<string name="submit" msgid="1602335572089911941">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Car mode enabled"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Touch to exit car mode."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Touch to set up."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Back"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Skip"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Add account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Increase"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Decrease"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> touch and hold."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slide up to increase and down to decrease."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Increase minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Decrease minute"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data usage warning"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Touch to view usage and settings."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limit reached"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limit reached"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobile data limit reached"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limit exceeded"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over specified limit."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Background data restricted"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Touch to remove restriction."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Security certificate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"This certificate is valid."</string>
<string name="issued_to" msgid="454239480274921032">"Issued to:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Select year"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"To unpin this screen, touch and hold Back."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"To unpin this screen, touch and hold Overview."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 44267c9..a4f3554 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de las ventanas"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de la ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la Exploración táctil"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Los elementos que toques se dirán en voz alta, y podrás explorar la pantalla mediante gestos."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar la accesibilidad web mejorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Es posible que se instalen secuencias de comandos para que el contenido de las aplicaciones sea más accesible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar el texto que escribes"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escribe el código PUK y un nuevo código PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuevo código PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toca para ingresar la contraseña"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ingresar contraseña para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ingresa el PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 hora</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ahora"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> días</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> día</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> años</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> año</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> días</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> día</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> años</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> año</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problemas de video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"No es posible transmitir este video al dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"No se puede reproducir el video."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Es posible que algunas funciones del sistema no estén disponibles."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"No hay espacio suficiente para el sistema. Asegúrate de que haya 250 MB libres y reinicia el dispositivo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> se está ejecutando"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Toca para obtener más información o para detener la aplicación."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Aceptar"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"Aceptar"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalizando el inicio"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Toca para cambiar a la aplicación"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"¿Deseas cambiar aplicaciones?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Ya se está ejecutando una aplicación que debe detenerse antes de iniciar una nueva."</string>
<string name="old_app_action" msgid="493129172238566282">"Regresar a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Inicio <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Interrumpe la aplicación anterior sin guardar los cambios."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> superó el límite de memoria."</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Se recopiló el volcado de pila. Toca para compartir."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"¿Compartir volcado de pila?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"El proceso <xliff:g id="PROC">%1$s</xliff:g> superó el límite de memoria de proceso de <xliff:g id="SIZE">%2$s</xliff:g>. Hay un volcado de pila disponible para que puedas compartirlo con el programador. Ten cuidado, este volcado de pila puede contener información personal a la que la aplicación tiene acceso."</string>
<string name="sendText" msgid="5209874571959469142">"Seleccionar una acción para el texto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"La red Wi-Fi no tiene acceso a Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Toca la pantalla para ver las opciones"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No se pudo conectar a la red Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tiene una mala conexión a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"¿Permitir la conexión?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar Wi-Fi Direct. Se desactivará el funcionamiento de la zona o del cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"No se pudo iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Se activó Wi-Fi Direct."</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Tocar para ajustar los parámetros de configuración"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Aceptar"</string>
<string name="decline" msgid="2112225451706137894">"Rechazar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Se envió la invitación."</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferir fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Toca para ver más opciones."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración por USB conectada"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Toca para desactivar la depuración por USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Realizando un informe de errores…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"¿Compartir informe de errores?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartiendo informe de errores…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Se detectó un nuevo medio (<xliff:g id="NAME">%s</xliff:g>)."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos y contenido multimedia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> está dañado"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> está dañado. Toca la pantalla para solucionar el problema."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> no es compatible"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"El dispositivo no es compatible con <xliff:g id="NAME">%s</xliff:g>. Toca la pantalla para configurarlo en un formato compatible."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Se extrajo <xliff:g id="NAME">%s</xliff:g> de forma inesperada."</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Para evitar que se pierdan datos, desactiva el dispositivo <xliff:g id="NAME">%s</xliff:g> antes de extraerlo."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Se extrajo el medio <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permite que una aplicación lea sesiones de instalación. Esto le permite ver detalles acerca de instalaciones de paquetes activas."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"solicitar la instalación de paquetes"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permite que una aplicación solicite la instalación de paquetes."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toca dos veces para acceder al control de zoom."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Presiona dos veces para obtener el control del zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"No se pudo agregar el widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ir"</string>
<string name="ime_action_search" msgid="658110271822807811">"Buscar"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Servicio de clasificación de notificaciones"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activada"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN está activado por <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Toca para administrar la red."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toca para administrar la red."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Pulsa para gestionar la red."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Pulsa para gestionar la red."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Estableciendo conexión con la VPN siempre activada..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Se estableció conexión con la VPN siempre activada."</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Se produjo un error al establecer conexión con la VPN siempre activada."</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Toca para configurar."</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Elegir archivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No se seleccionó un archivo."</string>
<string name="reset" msgid="2448168080964209908">"Restablecer"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo Auto habilitado"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toca para salir del modo Auto."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Anclaje a red o zona activa conectados"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toca para configurar."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Atrás"</string>
<string name="next_button_label" msgid="1080555104677992408">"Siguiente"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omitir"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Agregar una cuenta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reducir"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Mantén presionado <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Desliza el dedo hacia arriba para aumentar los valores y hacia abajo para reducirlos."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minutos"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reducir minutos"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Almacenamiento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advertencia de uso de datos"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Toca para ver uso y config."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límite de datos 2G-3G alcanzado"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límite de datos 4G alcanzado"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límite datos móviles alcanzado"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Límite de datos Wi-Fi superado"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Límite superado en <xliff:g id="SIZE">%s</xliff:g>"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Datos de referencia restringidos"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toca para eliminar la restricc."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de seguridad"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado es válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido a:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Seleccionar año"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> borrado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabajo"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Para dejar de fijar esta pantalla, mantén presionado el botón Atrás."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Para dejar de fijar esta pantalla, mantén presionado el botón Recientes."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"La aplicación está fijada, no se puede anular la fijación en este dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fija"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Pantalla no fija"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 758ef3c..5af3175 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de la ventana"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de una ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la exploración táctil"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Los elementos seleccionados se dirán en voz alta y podrás explorar la pantalla mediante gestos."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar la accesibilidad web mejorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Es posible que se instalen secuencias de comandos para que el contenido de las aplicaciones sea más accesible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar el texto que escribes"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introduce el código PUK y un nuevo código PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuevo código PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toca para introducir contraseña"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introduce la contraseña para desbloquear."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introduce el código PIN para desbloquear."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 hora</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ahora"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Incidencias con el vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Este vídeo no se puede transmitir al dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"No se puede reproducir el vídeo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Es posible que algunas funciones del sistema no funcionen."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"No hay espacio suficiente para el sistema. Comprueba que haya 250 MB libres y reinicia el dispositivo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> se está ejecutando"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Toca para obtener más información o para detener la aplicación."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Aceptar"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"Aceptar"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalizando inicio..."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Toca esta opción para cambiar a la aplicación."</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"¿Cambiar aplicaciones?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Se está ejecutando otra aplicación. Para iniciar una aplicación nueva, debes detenerla."</string>
<string name="old_app_action" msgid="493129172238566282">"Volver a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Detener la aplicación anterior sin guardar"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ha superado el límite de memoria"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Se ha recopilado un volcado de pila. Toca para compartirlo"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"¿Compartir volcado de pila?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"El proceso <xliff:g id="PROC">%1$s</xliff:g> ha superado su límite de memoria de <xliff:g id="SIZE">%2$s</xliff:g>. Hay un volcado de pila disponible que puedes compartir con su desarrollador (ten cuidado, ya que puede incluir información personal a la que tenga acceso la aplicación)."</string>
<string name="sendText" msgid="5209874571959469142">"Selecciona una acción para el texto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi sin acceso a Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Toca para ver opciones"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No se ha podido establecer conexión con la red Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tiene una conexión inestable a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"¿Permitir la conexión?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar Wi-Fi Direct. Se desactivará el funcionamiento de la zona o del cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"No se ha podido iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct activado"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Toca para acceder a Ajustes"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Aceptar"</string>
<string name="decline" msgid="2112225451706137894">"Rechazar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitación enviada"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferir fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Toca para obtener más opciones"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración USB habilitada"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Toca aquí para inhabilitarla"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Creando informe de errores…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"¿Compartir informe de errores?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartiendo informe de errores…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nueva <xliff:g id="NAME">%s</xliff:g> detectada"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos y multimedia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Medio externo (<xliff:g id="NAME">%s</xliff:g>) dañado"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"El medio externo (<xliff:g id="NAME">%s</xliff:g>) está dañado. Toca para solucionar el problema."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Medio externo (<xliff:g id="NAME">%s</xliff:g>) no admitido"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"El dispositivo no admite este medio externo (<xliff:g id="NAME">%s</xliff:g>). Toca para configurarlo con un formato admitido."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Extracción inesperada de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desactiva tu <xliff:g id="NAME">%s</xliff:g> antes de extraer la unidad para evitar pérdidas de datos"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Tu <xliff:g id="NAME">%s</xliff:g> se ha extraído"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permite que una aplicación consulte sesiones de instalación para ver detalles sobre instalaciones de paquetes activos."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"solicitar instalación de paquetes"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permite a una aplicación solicitar la instalación de paquetes."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toca dos veces para acceder al control de zoom."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Da dos toques para acceder al control de zoom."</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"No se ha podido añadir el widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ir"</string>
<string name="ime_action_search" msgid="658110271822807811">"Buscar"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Servicio de clasificación de notificaciones"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activada"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN activada por <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Toca para administrar la red."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toca para administrar la red."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Toca para administrar la red."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toca para administrar la red."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Conectando VPN siempre activada…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN siempre activada conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Error de VPN siempre activada"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Toca para configurar"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Seleccionar archivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Archivo no seleccionado"</string>
<string name="reset" msgid="2448168080964209908">"Restablecer"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Se ha habilitado el modo coche"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toca para salir del modo coche."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Compartir Internet/Zona Wi-Fi activado"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toca para configurar"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Atrás"</string>
<string name="next_button_label" msgid="1080555104677992408">"Siguiente"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Saltar"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Añadir cuenta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reducir"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Mantén pulsado <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Desliza el dedo hacia arriba para aumentar y hacia abajo para disminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minutos"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reducir minutos"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Almacenamiento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advertencia de uso de datos"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Toca para ver el uso y ajustes."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límite de datos 2G-3G alcanzado"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límite de datos 4G alcanzado"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límite datos móviles alcanzado"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Límite de datos Wi-Fi superado"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Límite superado en <xliff:g id="SIZE">%s</xliff:g>"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Conexiones automáticas restringidas"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toca para quitar la restricción"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de seguridad"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado es válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Seleccionar año"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabajo"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Para dejar de fijar esta pantalla, mantén pulsado el botón Atrás."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Para desactivar esta pantalla, mantén pulsado Visión general."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"La aplicación está fijada: no se puede deshacer la fijación en este dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fijada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"La pantalla ya no está fija"</string>
@@ -1500,7 +1543,7 @@
<string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminado por tu administrador"</string>
<string name="battery_saver_description" msgid="1960431123816253034">"Para ayudar a mejorar la duración de la batería, la función de ahorro de energía reduce el rendimiento del dispositivo y limita la vibración, los servicios de ubicación y la mayor parte de la transmisión de datos en segundo plano. Es posible que las aplicaciones que se sincronizan, como las de correo y mensajes, no se actualicen a menos que las abras.\n\nLa función de ahorro de energía se desactiva automáticamente cuando el dispositivo se está cargando."</string>
<string name="data_saver_description" msgid="6015391409098303235">"El Economizador de Datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que permite reducir el uso de datos. Una aplicación activa podrá acceder a los datos, aunque con menos frecuencia. Esto significa que, por ejemplo, las imágenes no se mostrarán hasta que no las toques."</string>
- <string name="data_saver_enable_title" msgid="4674073932722787417">"¿Activar Economizador de Datos?"</string>
+ <string name="data_saver_enable_title" msgid="4674073932722787417">"¿Activar ahorro de datos?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"Activar"</string>
<plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
<item quantity="other">Durante %1$d minutos (hasta las <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index a7fa1c3..8a334d6 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Akna sisu toomine"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tutvuge kasutatava akna sisuga."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Puudutusega sirvimise sisselülitamine"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Puudutatud üksuste nimesid esitatakse häälega ning ekraani saab sirvida puudutustega."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Veebi täiustatud juurdepääsu sisselülitamine"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Rakenduse sisu kättesaadavamaks muutmiseks võidakse installida skripte."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sisestatud teksti jälgimine"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Sisestage PUK-kood ja uus PIN-kood"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kood"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Uus PIN-kood"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Puudutage parooli sisestamiseks"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Avamiseks sisestage parool"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Avamiseks sisestage PIN-kood"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Vale PIN-kood."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 tund</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"praegu"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> p</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> p</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min pärast</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min pärast</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h pärast</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h pärast</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> p pärast</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> p pärast</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a pärast</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> a pärast</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Probleem videoga"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"See video ei sobi voogesituseks selles seadmes."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Videot ei saa esitada."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Mõned süsteemifunktsioonid ei pruugi töötada"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Süsteemis pole piisavalt talletusruumi. Veenduge, et seadmes oleks 250 MB vaba ruumi, ja käivitage seade uuesti."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> töötab"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Puudutage lisateabe saamiseks või rakenduse peatamiseks."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Tühista"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Rakenduste käivitamine."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Käivitamise lõpuleviimine."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> töötab"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Puudutage rakendusele lülitumiseks"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Kas lülituda teisele rakendusele?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Teine rakendus juba töötab ja see tuleb peatada, et saaksite uue käivitada."</string>
<string name="old_app_action" msgid="493129172238566282">"Tagasi rakendusse <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Käivitage rakendus <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Peatage vana rakendus salvestamata."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Protsess <xliff:g id="PROC">%1$s</xliff:g> ületas mälupiirangu"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Mälutõmmis salvestati; puudutage jagamiseks"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Kas jagada mälutõmmist?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Protsess <xliff:g id="PROC">%1$s</xliff:g> ületas protsessi mälupiirangu <xliff:g id="SIZE">%2$s</xliff:g>. Saate mälutõmmist jagada selle arendajaga. Olge ettevaatlik: see mälutõmmis võib sisaldada teie isiklikke andmeid, millele rakendusel on juurdepääs."</string>
<string name="sendText" msgid="5209874571959469142">"Valige teksti jaoks toiming"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"WiFi-l pole juurdepääsu Internetile"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Puudutage valikute nägemiseks"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ei saanud WiFi-ga ühendust"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" on halb Interneti-ühendus."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Kas lubada ühendus?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Käivitage WiFi otseühendus. See lülitab välja WiFi kliendi/leviala."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"WiFi otseühenduse käivitamine ebaõnnestus."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"WiFi Direct on sees"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Puuted seadete jaoks"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Nõustu"</string>
<string name="decline" msgid="2112225451706137894">"Keeldu"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Kutse on saadetud"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fotode edastamiseks"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI jaoks"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ühendatud USB-lisaseadmega"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Puudutage rohkemate valikute kuvamiseks."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-silumine ühendatud"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Puudutage USB-silumise keelamiseks."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Veaaruande võtmine …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Kas jagada veaaruannet?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Veaaruande jagamine …"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Tuvastati uus üksus <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotode ja meedia ülekandmiseks"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Rikutud <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Üksus <xliff:g id="NAME">%s</xliff:g> on rikutud. Parandamiseks puudutage."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Toetamata <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"See seade ei toeta üksust <xliff:g id="NAME">%s</xliff:g>. Puudutage toetatud vormingus seadistamiseks."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Üksus <xliff:g id="NAME">%s</xliff:g> eemaldati ootamatult"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Andmekao vältimiseks lahutage üksus <xliff:g id="NAME">%s</xliff:g> enne eemaldamist"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Üksus <xliff:g id="NAME">%s</xliff:g> on eemaldatud"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Lubab rakendusel lugeda installiseansse. See võimaldab näha aktiivse paketi installimise üksikasju."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"installipakettide taotlemine"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Võimaldab rakendusel pakettide installimist taotleda."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Suumi juhtimiseks puudutage kaks korda"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Suumi kasutamiseks koputage kaks korda"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Vidinat ei saanud lisada."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Mine"</string>
<string name="ime_action_search" msgid="658110271822807811">"Otsing"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Märguannete tähtsuse määramise teenus"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN on aktiveeritud"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN-i aktiveeris <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Võrgu haldamiseks puudutage."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Ühendatud seansiga <xliff:g id="SESSION">%s</xliff:g>. Võrgu haldamiseks puudutage."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Koputage võrgu haldamiseks."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Ühendatud seansiga <xliff:g id="SESSION">%s</xliff:g>. Koputage võrgu haldamiseks"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Ühendamine alati sees VPN-iga …"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Ühendatud alati sees VPN-iga"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Alati sees VPN-i viga"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Puudutage seadistamiseks"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Valige fail"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ühtegi faili pole valitud"</string>
<string name="reset" msgid="2448168080964209908">"Lähtesta"</string>
<string name="submit" msgid="1602335572089911941">"Saada"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Autorežiim lubatud"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Autorežiimist väljumiseks puudutage."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Jagamine või tööpunkt on aktiivne"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Seadistamiseks puudutage."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Tagasi"</string>
<string name="next_button_label" msgid="1080555104677992408">"Järgmine"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Jäta vahele"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Lisa konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Suurendamine"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Vähendamine"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> puudutage ja hoidke."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Suurendamiseks lohistage üles, vähendamiseks alla."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minutite suurendamine"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minutite vähendamine"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-mäluseade"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Muuda"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Andmete kasutamise hoiatus"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Kasutuse/sätete vaat. puudutage."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-, 3G-andmeside limiit on täis"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-andmeside limiit on täis"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobiilse andmes. limiit on täis"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"WiFi-andmete piir on ületatud"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> üle määratud piirmäära."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Taustandmed on piiratud"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Piirangu eemaldamiseks puudut."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Turvasertifikaat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"See sertifikaat on kehtiv."</string>
<string name="issued_to" msgid="454239480274921032">"Väljastatud subjektile:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Aasta valimine"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> on kustutatud"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Töö <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Ekraani vabastamiseks puudutage pikalt nuppu Tagasi."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Ekraanikuva vabastamiseks puudutage pikalt nuppu Ülevaade."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Rakendus on kinnitatud: vabastamine pole selles seadmes lubatud."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekraan on kinnitatud"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekraan on vabastatud"</string>
diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml
index 876be34..1d965b8 100644
--- a/core/res/res/values-eu-rES/strings.xml
+++ b/core/res/res/values-eu-rES/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Eskuratu leihoko edukia"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Arakatu irekita daukazun leihoko edukia."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktibatu ukipen bidez arakatzeko eginbidea"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Ukitutako elementuak ozen esango dira eta pantaila keinu bidez arakatu ahal izango da."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktibatu web-erabilerraztasun hobetua"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scriptak instala daitezke aplikazioaren edukia erabilerrazagoa egiteko."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Behatu idazten duzun testua"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Idatzi PUK kodea eta PIN kode berria"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodea"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"PIN kode berria"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Pasahitza idazteko, ukitu hau"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Idatzi desblokeatzeko pasahitza"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Idatzi desblokeatzeko PIN kodea"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN kode okerra."</string>
@@ -859,14 +861,38 @@
<item quantity="one">Ordubete</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"orain"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> e</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> e</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> u</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> u</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min barru</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min barru</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h barru</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h barru</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> e barru</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> e barru</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> u barru</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> u barru</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Bideoak arazoren bat du"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bideo hau ezin da gailuan zuzenean erreproduzitu."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Ezin da bideoa erreproduzitu."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Sistemaren funtzio batzuek ez dute agian funtzionatuko"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sisteman ez dago behar adina memoria. Ziurtatu gutxienez 250 MB erabilgarri dituzula eta, ondoren, berrabiarazi gailua."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> abian da"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Informazio gehiago lortzeko edo aplikazioa gelditzeko, ukitu."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Ados"</string>
<string name="cancel" msgid="6442560571259935130">"Utzi"</string>
<string name="yes" msgid="5362982303337969312">"Ados"</string>
@@ -966,13 +993,14 @@
<string name="android_start_title" msgid="8418054686415318207">"Android abiarazten ari da…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Memoria optimizatzen."</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android bertsioa berritzen ari gara"</string>
- <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Aplikazio batzuek agian ez dute behar bezala funtzionatuko bertsioa berritzen amaitu arte."</string>
+ <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Aplikazio batzuek agian ez dute behar bezala funtzionatuko bertsioa berritzen amaitu arte"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> aplikazio optimizatzen."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> prestatzen."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikazioak abiarazten."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Bertsio-berritzea amaitzen."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> exekutatzen"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Aplikaziora aldatzeko, ukitu hau"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Aplikazioz aldatu?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Beste aplikazio bat exekutatzen ari da eta gelditu egin behar duzu beste bat abiarazi aurretik."</string>
<string name="old_app_action" msgid="493129172238566282">"Itzuli <xliff:g id="OLD_APP">%1$s</xliff:g> aplikaziora"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Hasi <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Gelditu aplikazio zaharra ezer gorde gabe."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> prozesuak memoria-muga gainditu du"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Uneko memoria-prozesuaren txostena sortu da; ukitu partekatzeko"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Uneko memoria-prozesuaren txostena partekatu nahi duzu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> prozesuak memoria-prozesuaren muga (<xliff:g id="SIZE">%2$s</xliff:g>) gainditu du. Uneko memoria-prozesuaren txostena sortu da, garatzailearekin parteka dezazun. Kontuz ibili: txosten horrek aplikazioak atzi dezakeen informazio pertsonala izan dezake."</string>
<string name="sendText" msgid="5209874571959469142">"Aukeratu testurako ekintza"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi konexioa ezin da Internetera konektatu"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Aukerak ikusteko, ukitu hau"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ezin izan da Wi-Fi sarera konektatu"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" Interneteko konexio txarra du."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Konektatzea baimendu nahi diozu?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Hasi Wi-Fi Direct. Wi-Fi bezeroa edo sare publikoa desaktibatuko da."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Ezin izan da Wi-Fi Direct hasi."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct aktibatuta dago"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Ezarpenetara joateko, ukitu hau"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Onartu"</string>
<string name="decline" msgid="2112225451706137894">"Baztertu"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Gonbidapena bidali da"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Argazkiak transferitzeko USBa"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI modurako USBa"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB osagarri batera konektatuta"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Ukitu aukera gehiago ikusteko."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB arazketa konektatuta"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB arazketa desgaitzeko, ukitu hau."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Akatsen txostena sortzen…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Akatsen txostena partekatu nahi duzu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Akatsen txostena partekatzen…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> berria hauteman da"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Argazkiak eta multimedia-fitxategiak transferitzeko"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> hondatuta dago"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Hondatuta dago <xliff:g id="NAME">%s</xliff:g>. Konpontzeko, ukitu hau."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Ez da onartzen <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Gailuak ez du <xliff:g id="NAME">%s</xliff:g> onartzen. Onartutako formatu batean konfiguratzeko, ukitu hau."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ustekabean kendu da"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Daturik ez galtzeko, desmuntatu <xliff:g id="NAME">%s</xliff:g> memoria kendu aurretik"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ez dago"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Instalazio-saioak irakurtzea baimentzen die aplikazioei. Horrela, pakete-instalazio aktiboei buruzko xehetasunak ikus ditzakete."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"Eskatu instalazio-paketeak"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Paketeak instalatzeko eskatzea baimentzen die aplikazioei."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Ukitu birritan zooma kontrolatzeko"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Ezin izan da widgeta gehitu."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Joan"</string>
<string name="ime_action_search" msgid="658110271822807811">"Bilatu"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Jakinarazpenen sailkapen-zerbitzua"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN eginbidea aktibatuta"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> aplikazioak VPN konexioa aktibatu du"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Ukitu sarea kudeatzeko."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> saiora konektatuta. Ukitu sarea kudeatzeko."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Beti aktibatuta dagoen VPNa konektatzen…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Beti aktibatuta dagoen VPNa konektatu da"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Beti aktibatuta dagoen VPN errorea"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Konfiguratzeko, ukitu"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Aukeratu fitxategia"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ez da fitxategirik aukeratu"</string>
<string name="reset" msgid="2448168080964209908">"Berrezarri"</string>
<string name="submit" msgid="1602335572089911941">"Bidali"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Auto modua gaituta"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Ukitu auto modutik irteteko."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Konexioa partekatzea edo sare publikoa aktibo"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Ukitu konfiguratzeko."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Atzera"</string>
<string name="next_button_label" msgid="1080555104677992408">"Hurrengoa"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Saltatu"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Gehitu kontua"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Handitu"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Txikitu"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Eduki ukituta <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Lerratu gora handitzeko, eta behera txikitzeko."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aurreratu minutu bat"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Atzeratu minutu bat"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB memoria"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editatu"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Datuen erabilerari buruzko abisua"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Ukitu erabilera eta ezarpenak ikusteko."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2-3 GB-ko mugara iritsi zara"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4 GB-ko mugara iritsi zara"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Datuen mugara iritsi zara"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi datuen muga gainditu da"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Zehaztutako muga baino <xliff:g id="SIZE">%s</xliff:g> gehiago."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Atzeko planoko datuak murriztuta"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Ukitu murriztapena kentzeko."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Segurtasun-ziurtagiria"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ziurtagiria baliozkoa da."</string>
<string name="issued_to" msgid="454239480274921032">"Honi jaulkia:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"Hautatu urtea"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ezabatu da"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Laneko <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Pantailari aingura kentzeko, eduki sakatuta Atzera botoia."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Aingura kentzeko, eduki ukituta Ikuspegi orokorra botoia."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikazioa ainguratuta dago. Gailu honetan ezin da aingura kendu."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantaila ainguratu da"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Aingura kendu zaio pantailari"</string>
@@ -1500,7 +1546,7 @@
<string name="package_deleted_device_owner" msgid="7650577387493101353">"Administratzaileak ezabatu du"</string>
<string name="battery_saver_description" msgid="1960431123816253034">"Bateriak gehiago iraun dezan, bateria-aurrezleak gailuaren funtzionamendua, dardara, kokapen-zerbitzuak eta atzeko planoko datuen erabilera gehiena mugatzen ditu. Posta elektronikoa, mezuak eta sinkronizatzen diren gainerako zerbitzuak ez dira eguneratuko ireki ezean.\n\nGailua kargatzen ezarri orduko desaktibatzen da bateria-aurrezlea."</string>
<string name="data_saver_description" msgid="6015391409098303235">"Datuen erabilera murrizteko, atzeko planoan datuak bidaltzea eta jasotzea galarazten die datu-aurrezleak aplikazio batzuei. Unean erabiltzen ari zaren aplikazioak atzi ditzake datuak, baina baliteke maiztasun txikiagoarekin atzitzea. Horrela, adibidez, baliteke irudiak ez erakustea haiek sakatu arte."</string>
- <string name="data_saver_enable_title" msgid="4674073932722787417">"Datu-aurrezlea aktibatu nahi?"</string>
+ <string name="data_saver_enable_title" msgid="4674073932722787417">"Datu-aurrezlea aktibatu?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"Aktibatu"</string>
<plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
<item quantity="other">%1$d minutuz (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> arte)</item>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 40aa294..6101a90 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"موارد لمس شده با صدای بلند خوانده میشوند و با استفاده از حرکات میتوانید صفحه را کاوش کنید."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"فعالسازی دسترسپذیری پیشرفته برای وب"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ممکن است جهت افزایش دسترسپذیری به محتوای برنامه، اسکریپتهایی نصب شود."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"نوشتاری را که تایپ میکنید مشاهده کند"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK و پین کد جدید را تایپ کنید"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"کد PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"پین کد جدید"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"برای تایپ گذرواژه لمس کنید"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"برای بازکردن قفل، گذرواژه را وارد کنید"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"برای بازکردن قفل، پین را تایپ کنید"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"پین کد اشتباه است."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ساعت</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"اکنون"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> دقیقه</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دقیقه</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ساعت</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ساعت</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> روز</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> روز</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> سال</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> سال</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">در <xliff:g id="COUNT_1">%d</xliff:g> دقیقه</item>
+ <item quantity="other">در <xliff:g id="COUNT_1">%d</xliff:g> دقیقه</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">در <xliff:g id="COUNT_1">%d</xliff:g> ساعت</item>
+ <item quantity="other">در <xliff:g id="COUNT_1">%d</xliff:g> ساعت</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">در <xliff:g id="COUNT_1">%d</xliff:g> روز</item>
+ <item quantity="other">در <xliff:g id="COUNT_1">%d</xliff:g> روز</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">در <xliff:g id="COUNT_1">%d</xliff:g> سال</item>
+ <item quantity="other">در <xliff:g id="COUNT_1">%d</xliff:g> سال</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"مشکل در ویدیو"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"متأسفیم، این ویدیو برای پخش جریانی با این دستگاه معتبر نیست."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"پخش این ویدیو ممکن نیست."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"برخی از عملکردهای سیستم ممکن است کار نکنند"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"فضای ذخیرهسازی سیستم کافی نیست. اطمینان حاصل کنید که دارای ۲۵۰ مگابایت فضای خالی هستید و سیستم را راهاندازی مجدد کنید."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> در حال اجرا است"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"برای کسب اطلاعات بیشتر یا توقف برنامه لمس کنید."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"تأیید"</string>
<string name="cancel" msgid="6442560571259935130">"لغو"</string>
<string name="yes" msgid="5362982303337969312">"تأیید"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"در حال آغاز برنامهها."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"در حال اتمام راهاندازی."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> در حال اجرا"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"لمس کردن برای بازکردن برنامه"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"برنامه عوض شود؟"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"برنامه دیگری از قبل در حال اجراست که باید متوقف شود تا بتوانید برنامه جدید را شروع کنید."</string>
<string name="old_app_action" msgid="493129172238566282">"بازگشت به <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"شروع <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"برنامه قدیمی را بدون ذخیره متوقف کنید."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> از حد مجاز حافظه فراتر رفت"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"رونوشت حافظه آزاد جمعآوری شد؛ برای اشتراکگذاری، لمس کنید"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"رونوشت حافظه آزاد به اشتراک گذاشته شود؟"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"فرآیند <xliff:g id="PROC">%1$s</xliff:g> از حد مجاز حافظه پردازش خود <xliff:g id="SIZE">%2$s</xliff:g> فراتر رفته است. یک رونوشت حافظه آزاد برای شما در دسترس است که با برنامهنویس به اشتراک بگذارید. مواظب باشید: این رونوشت حافظه آزاد میتواند حاوی هر نوع اطلاعات شخصی شما باشد که برنامه به آن دسترسی دارد."</string>
<string name="sendText" msgid="5209874571959469142">"انتخاب یک عملکرد برای نوشتار"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi به اینترنت دسترسی ندارد"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"برای گزینهها لمس کنید"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"اتصال به Wi-Fi ممکن نیست"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" اتصال اینترنتی ضعیفی دارد."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"اتصال مجاز است؟"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct را شروع کنید. این کار نقطه اتصال/سرویس گیرنده Wi-Fi را غیرفعال خواهد کرد."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct شروع نشد."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct روشن است"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"لمس کردن برای تنظیمات"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"پذیرفتن"</string>
<string name="decline" msgid="2112225451706137894">"نپذیرفتن"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"دعوتنامه ارسال شد"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB برای انتقال عکس"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB برای MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"به یک وسیله جانبی USB وصل شده است"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"برای گزینههای بیشتر لمس کنید."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"اشکالزدایی USB متصل شد"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"غیرفعالکردن اشکالزداییUSB: با لمس آن."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"درحال گرفتن گزارش اشکال…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"گزارش اشکال به اشتراک گذاشته شود؟"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"درحال اشتراکگذاری گزارش اشکال…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> جدید شناسایی شد"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"برای انتقال عکسها و رسانه"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> خراب است"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> خراب است. برای اصلاح لمس کنید."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> پشتیبانی نشده"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"این دستگاه از این <xliff:g id="NAME">%s</xliff:g> پشتیبانی نمیکند. برای نصب آن در یک قالب پشتیبانی شده، لمس کنید."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> بهطور غیرمنتظره جدا شد"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"قبل از جدا کردن، برای جلوگیری از از دست رفتن اطلاعات، ارتباط <xliff:g id="NAME">%s</xliff:g> را قطع کنید."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> جدا شده است"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"به برنامه اجازه میدهد جلسات نصب را بخواند. این کار به برنامه اجازه میدهد جزئیات نصبهای بسته فعال را ببیند."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"درخواست نصب بسته"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"به برنامه اجازه میدهد درخواست نصب بستهبندی کند."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"دوبار لمس کنید تا بزرگنمایی کنترل شود"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"برای کنترل بزرگنمایی، دو بار ضربه بزنید"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"افزودن ابزارک انجام نشد."</string>
<string name="ime_action_go" msgid="8320845651737369027">"برو"</string>
<string name="ime_action_search" msgid="658110271822807811">"جستجو"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"سرویس رتبهبندی اعلان"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN فعال شد"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN توسط <xliff:g id="APP">%s</xliff:g> فعال شده است"</string>
- <string name="vpn_text" msgid="3011306607126450322">"برای مدیریت شبکه لمس کنید."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"به <xliff:g id="SESSION">%s</xliff:g> وصل شد. برای مدیریت شبکه لمس کنید."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"برای مدیریت شبکه ضربه بزنید."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"به <xliff:g id="SESSION">%s</xliff:g> متصل شد. برای مدیریت شبکه ضربه بزنید."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"در حال اتصال VPN همیشه فعال…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN همیشه فعال متصل شد"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"خطای VPN همیشه فعال"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"برای پیکربندی لمس کنید"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"انتخاب فایل"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"هیچ فایلی انتخاب نشد"</string>
<string name="reset" msgid="2448168080964209908">"بازنشانی"</string>
<string name="submit" msgid="1602335572089911941">"ارسال"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"حالت خودرو فعال شد"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"برای خروج از حالت خودرو، لمس کنید."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"اتصال داده با سیم یا نقطه اتصال فعال"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"برای راهاندازی لمس کنید."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"برگشت"</string>
<string name="next_button_label" msgid="1080555104677992408">"بعدی"</string>
<string name="skip_button_label" msgid="1275362299471631819">"پرش"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"افزودن حساب"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"افزایش"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"کاهش"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> لمس کرده و نگه دارید."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"برای افزایش به بالا بلغزانید و برای کاهش به پایین بلغزانید."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"افزایش دقیقه"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"کاهش دقیقه"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"حافظهٔ USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ویرایش"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"هشدار میزان استفاده از داده"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"برای مشاهده کاربرد و تنظیمات لمس کنید."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"به حد مجاز مصرف داده 2G-3G رسید"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"به حد مجاز مصرف داده 4G رسید"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"به حد مجاز مصرف داده همراه رسید"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"از محدوده مجاز دادههای Wi-Fi بیشتر شد"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> از حد تعیین شده بیشتر شد."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"داده پسزمینه محدود شد"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"برای حذف محدودیت، لمس کنید."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"گواهی امنیتی"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"این گواهی معتبر است."</string>
<string name="issued_to" msgid="454239480274921032">"صادر شده برای:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"انتخاب سال"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> حذف شد"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> محل کار"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"برای برداشتن پین این صفحه، «برگشت» را لمس کنید و نگه دارید."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"برای برداشتن پین این صفحه، «نمای کلی» را لمس کنید و نگه دارید."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"برنامه پین شده است: برداشتن پین در این دستگاه مجاز نیست."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"صفحه پین شد"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"پین صفحه برداشته شد"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 80e0cd9..86372d5 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Noutaa ikkunan sisältöä"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tarkistaa käyttämäsi ikkunan sisältö."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ottaa kosketuksella tutkimisen käyttöön"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Kosketetut kohteet sanotaan ääneen ja ruudulla voi liikkua eleiden avulla."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ottaa verkon paremman esteettömyyden käyttöön"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Sovellus voi asentaa ohjelmia tehdäkseen sisällöstään esteettömämmän."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Tarkkailla kirjoittamaasi tekstiä"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Anna PUK-koodi ja uusi PIN-koodi"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-koodi"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Uusi PIN-koodi"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Kosketa ja anna salasana"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Poista lukitus antamalla salasana"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Poista lukitus antamalla PIN-koodi"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN-koodi väärin."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 tunti</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"nyt"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> t</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> t</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> pv</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> pv</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> v</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> v</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min:n päästä</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min:n päästä</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> t:n päästä</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> t:n päästä</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> pv:n päästä</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> pv:n päästä</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> v:n päästä</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> v:n päästä</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video-ongelma"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Tätä videota ei voi suoratoistaa tällä laitteella."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Videota ei voida toistaa."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Kaikki järjestelmätoiminnot eivät välttämättä toimi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Tallennustila ei riitä. Varmista, että vapaata tilaa on 250 Mt, ja käynnistä uudelleen."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> on käynnissä"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Hanki lisätietoja tai sulje sovellus koskettamalla."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Peruuta"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Käynnistetään sovelluksia."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Viimeistellään päivitystä."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> käynnissä"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Vaihda sovellukseen koskettamalla tätä"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vaihdetaanko sovellusta?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Toinen sovellus on jo käynnissä. Sulje kyseinen sovellus, niin voit käynnistää uuden."</string>
<string name="old_app_action" msgid="493129172238566282">"Palaa kohteeseen <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Käynnistä <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Pysäytä vanha sovellus tallentamatta."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ylitti muistirajan."</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Keon vedos on kerätty, jaa se koskettamalla."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Jaetaanko keon vedos?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Prosessi <xliff:g id="PROC">%1$s</xliff:g> on ylittänyt muistirajan (<xliff:g id="SIZE">%2$s</xliff:g>). Keon vedos on jaettavissa kehittäjän kanssa. Ole varovainen: tämä keon vedos voi sisältää sellaisia henkilötietojasi, joihin sovelluksella on käyttöoikeus."</string>
<string name="sendText" msgid="5209874571959469142">"Valitse tekstille toiminto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ei ole yhteydessä internetiin."</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Näet lisää vaihtoehtoja koskettamalla"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-yhteyden muodostaminen epäonnistui"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" : huono internetyhteys."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Sallitaanko yhteys?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Käynnistä suora Wi-Fi-yhteys. Wi-Fi-asiakas/-hotspot poistetaan käytöstä."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Suoran Wi-Fi-yhteyden käynnistäminen epäonnistui."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct on käytössä"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Tarkastele asetuksia koskettamalla"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Hyväksy"</string>
<string name="decline" msgid="2112225451706137894">"Hylkää"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Kutsu lähetetty."</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB on kuvansiirtotilassa"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB on MIDI-tilassa"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Liitetty USB-laitteeseen"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Lisää vaihtoehtoja koskettamalla"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-vianetsintä yhdistetty"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Sulje USB-vianetsintä koskettamalla."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Luodaan virheraporttia…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Jaetaanko virheraportti?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Jaetaan virheraporttia…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Uusi <xliff:g id="NAME">%s</xliff:g> on havaittu."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Kuvien ja median siirtämiseen"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Vioittunut <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> on vioittunut. Korjaa koskettamalla."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Epäyhteensopiva <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"<xliff:g id="NAME">%s</xliff:g> ei ole yhteensopiva laitteen kanssa. Ota se käyttöön tuetussa tilassa koskettamalla."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> poistettiin yllättäen"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Poista <xliff:g id="NAME">%s</xliff:g> käytöstä ennen sen irrottamista estääksesi tietoja katoamasta."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> on poistettu"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Sallii sovelluksen lukea asennusistuntoja. Toiminto sallii sovelluksen lukea aktiivisten asennuspakettien tietoja."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"pyytää asennuspaketteja"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Antaa sovelluksen pyytää pakettien asennusta."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Ohjaa zoomausta napauttamalla kahdesti"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Hallitse zoomausta napauttamalla kahdesti"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widgetin lisääminen epäonnistui."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Siirry"</string>
<string name="ime_action_search" msgid="658110271822807811">"Haku"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Ilmoitusten sijoituspalvelu"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN on aktivoitu"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> on aktivoinut VPN-yhteyden"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Voit hallinnoida verkkoa koskettamalla."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Yhdistetty: <xliff:g id="SESSION">%s</xliff:g>. Hallinnoi verkkoa koskettamalla."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Napauta, niin voit hallinnoida verkkoa."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Yhdistetty: <xliff:g id="SESSION">%s</xliff:g>. Hallinnoi verkkoa napauttamalla."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Yhdistetään aina käytössä olevaan VPN-verkkoon..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Yhdistetty aina käytössä olevaan VPN-verkkoon"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Aina käytössä oleva VPN: virhe"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Kosketa ja tee määritykset"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Valitse tiedosto"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ei valittua tiedostoa"</string>
<string name="reset" msgid="2448168080964209908">"Palauta"</string>
<string name="submit" msgid="1602335572089911941">"Lähetä"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Autotila käytössä"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Poistu autotilasta koskettamalla tätä."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Internetin jakaminen tai yhteyspiste käytössä"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Määritä asetukset koskettamalla."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Takaisin"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seuraava"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ohita"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Lisää tili"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Lisää"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Vähennä"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> kosketa pitkään."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Lisää tai vähennä arvoa liu\'uttamalla ylös tai alas."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Lisää minuuttien määrää."</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Vähennä minuuttien määrää."</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-tallennustila"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Muokkaa"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Tiedonsiirtovaroitus"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Näytä käyttö ja aset. koskettam."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G-tietojen raja saavutettu"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-tietojen raja saavutettu"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Matkapuhelintietojen raja saavutettu"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi-tiedonsiirtoraja ylitetty"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> yli asetetun rajan"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Rajoitettu taustatietojen käyttö"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Poista rajoitus koskettamalla."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Suojausvarmenne"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Varmenne on voimassa."</string>
<string name="issued_to" msgid="454239480274921032">"Varmenteen saaja:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Valitse vuosi"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> poistettiin"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (työ)"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Irrota näyttö koskettamalla Takaisin-painiketta pitkään."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Poista näytön kiinnitys painamalla Viimeisimmät-kohtaa pitkään."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Sovellus on kiinnitetty. Irrottaminen ei ole sallittua tällä laitteella."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Näyttö kiinnitetty"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Näyttö irrotettu"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 0a8c739..49424eb 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Les éléments sélectionnés sont énoncés à voix haute. Vous pouvez explorer l\'écran à l\'aide de gestes."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activer l\'accessibilité Web améliorée"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Vous pouvez installer des scripts pour rendre le contenu des applications plus accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observer le texte que vous saisissez"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Saisissez la clé PUK et le nouveau NIP."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Clé PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nouveau NIP"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Appuyer pour saisir mot passe"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Saisissez le mot de passe pour déverrouiller le clavier."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Saisissez le NIP pour déverrouiller le clavier."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"NIP erroné."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"mainten."</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problème vidéo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Impossible de lire cette vidéo en continu sur cet appareil."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Impossible de lire la vidéo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Il est possible que certaines fonctionnalités du système ne soient pas opérationnelles."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Espace de stockage insuffisant pour le système. Assurez-vous de disposer de 250 Mo d\'espace libre, puis redémarrez."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> en cours d\'exécution"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Appuyez ici pour en savoir plus ou arrêter l\'application."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuler"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalisation de la mise à jour."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Appuyez ici pour changer d\'application."</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Changer d\'application?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Une autre application est déjà en cours d\'exécution. Arrêtez-la avant d\'en lancer une nouvelle."</string>
<string name="old_app_action" msgid="493129172238566282">"Revenir à <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Démarrer <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Arrêtez l\'ancienne application sans enregistrer."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> a dépassé la limite de mémoire"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"L\'empreinte de mémoire a été recueillie; touchez ici pour la partager"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Partager l\'empreinte de mémoire?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Le processus <xliff:g id="PROC">%1$s</xliff:g> a dépassé sa limite de mémoire de <xliff:g id="SIZE">%2$s</xliff:g>. Vous pouvez partager son empreinte de mémoire avec son développeur. Attention : cette empreinte peut contenir certains de vos renseignements personnels auxquels l\'application a accès."</string>
<string name="sendText" msgid="5209874571959469142">"Sélectionner une action pour le texte"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Le réseau Wi-Fi ne dispose d\'aucun accès à Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Touchez pour afficher les options"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossible de se connecter au Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" dispose d\'une mauvaise connexion Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Autoriser la connexion?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Lancer le Wi-Fi Direct. Cela désactive le fonctionnement du Wi-Fi client ou via un point d\'accès."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Impossible d\'activer le Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct activé"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Appuyez pour accéder aux paramètres."</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accepter"</string>
<string name="decline" msgid="2112225451706137894">"Refuser"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation envoyée"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB pour le transfert de photos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB pour MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connecté à un accessoire USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Touchez pour afficher plus d\'options."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Débogage USB connecté"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Appuyez pour désactiver le débogage USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Création d\'un rapport de bogue en cours..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Partager le rapport de bogue?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Partage du rapport de bogue en cours..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Une nouvelle mémoire « <xliff:g id="NAME">%s</xliff:g> » a été détectée"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Pour transférer des photos et d\'autres fichiers"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrompue : <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> est corrompue. Touchez ici pour la réparer."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> non compatible"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Cet appareil n\'est pas compatible avec la mémoire de stockage « <xliff:g id="NAME">%s</xliff:g> ». Touchez ici pour la configurer dans un format accepté."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Retrait inattendu de la mémoire « <xliff:g id="NAME">%s</xliff:g> »"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Désinstallez la mémoire « <xliff:g id="NAME">%s</xliff:g> » avant de la retirer pour éviter toute perte de données."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mémoire de stockage « <xliff:g id="NAME">%s</xliff:g> » retirée"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permet à une application d\'accéder aux sessions d\'installation. Cela lui permet de consulter les détails relatifs à l\'installation des paquets actifs."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"demander l\'installation de paquets"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permet à une application de demander l\'installation de paquets."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Appuyer deux fois pour régler le zoom"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Appuyer deux fois pour régler le zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Impossible d\'ajouter le widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Aller"</string>
<string name="ime_action_search" msgid="658110271822807811">"Recherche"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Service de classement des notifications"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activé"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN activé par <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Appuyez ici pour gérer le réseau."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Connecté à <xliff:g id="SESSION">%s</xliff:g>. Appuyez ici pour gérer le réseau."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Appuyez ici pour gérer le réseau."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Connecté à <xliff:g id="SESSION">%s</xliff:g>. Appuyez ici pour gérer le réseau."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN permanent en cours de connexion…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN permanent connecté"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erreur du VPN permanent"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Appuyer pour configurer"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Choisir un fichier"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Aucun fichier sélectionné"</string>
<string name="reset" msgid="2448168080964209908">"Réinitialiser"</string>
<string name="submit" msgid="1602335572089911941">"Envoyer"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode Voiture activé"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Appuyez ici pour quitter le mode Voiture."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Partage de connexion ou point d\'accès sans fil activé"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Appuyez pour configurer."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Précédent"</string>
<string name="next_button_label" msgid="1080555104677992408">"Suivante"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Passer"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ajouter un compte"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Augmenter"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuer"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> appuyez de manière prolongée."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Faites glisser vers le haut pour augmenter et vers le bas pour diminuer."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minute suivante"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minute précédente"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Mémoire de stockage USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Modifier"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avertissement utilisation données"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Appuyez pour conso/paramètres"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de données 2G-3G atteinte"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de données 4G atteinte"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite donn. cellulaires atteinte"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Quota de données Wi-Fi dépassé"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> au-delà de la limite spécifiée."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Données en arrière-plan limitées"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Appuyez pour suppr. restriction."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de sécurité"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ce certificat est valide."</string>
<string name="issued_to" msgid="454239480274921032">"Émis à :"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Sélectionnez une année"</string>
<string name="deleted_key" msgid="7659477886625566590">"« <xliff:g id="KEY">%1$s</xliff:g> » a été supprimé"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Pour annuler l\'épinglage de cet écran, maintenez enfoncée la touche Retour."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Pour annuler l\'épinglage, appuyez de manière prolongée sur Aperçu."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'application est épinglée : l\'annulation de l\'épinglage n\'est pas autorisée sur cet appareil."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Écran épinglé"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Épinglage d\'écran annulé"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index aef1556..45a356f 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Les éléments sélectionnés sont énoncés à voix haute. Vous pouvez explorer l\'écran à l\'aide de gestes."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activer l\'accessibilité Web améliorée"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Vous pouvez installer des scripts pour rendre le contenu des applications plus accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observer le texte que vous saisissez"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Saisissez la clé PUK et le nouveau code PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Code PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nouveau code PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Appuyez pour saisir mot passe"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Saisissez le mot de passe pour déverrouiller le clavier."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Saisissez le code PIN pour déverrouiller le clavier."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Le code PIN est erroné."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"mainten."</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">dans <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problème vidéo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Impossible de lire cette vidéo en streaming sur cet appareil."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Impossible de lire la vidéo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Il est possible que certaines fonctionnalités du système ne soient pas opérationnelles."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Espace de stockage insuffisant pour le système. Assurez-vous de disposer de 250 Mo d\'espace libre, puis redémarrez."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> en cours d\'exécution"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Appuyez ici pour en savoir plus ou arrêter l\'application."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuler"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalisation de la mise à jour."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Appuyez ici pour changer d\'application."</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Changer d\'application ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Une autre application est déjà en cours d\'exécution. Arrêtez-la avant d\'en lancer une nouvelle."</string>
<string name="old_app_action" msgid="493129172238566282">"Revenir à <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Démarrer <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Arrêtez l\'ancienne application sans enregistrer."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Le processus \"<xliff:g id="PROC">%1$s</xliff:g>\" a dépassé la limite de mémoire"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Une empreinte de la mémoire a bien été générée. Appuyez pour partager."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Partager l\'empreinte de la mémoire ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Le processus \"<xliff:g id="PROC">%1$s</xliff:g>\" a dépassé sa limite de mémoire fixée à <xliff:g id="SIZE">%2$s</xliff:g>. Une empreinte de la mémoire est disponible pour que vous la communiquiez à son développeur. Attention : celle-ci peut contenir des informations personnelles auxquelles l\'application a accès."</string>
<string name="sendText" msgid="5209874571959469142">"Sélectionner une action pour le texte"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Le réseau Wi-Fi ne dispose d\'aucun accès à Internet."</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Appuyez ici pour afficher les options."</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossible de se connecter au Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" dispose d\'une mauvaise connexion Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Autoriser la connexion ?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Lancer le Wi-Fi Direct. Cela désactive le fonctionnement du Wi-Fi client ou via un point d\'accès."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Impossible d\'activer le Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct activé"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Appuyez pour accéder aux paramètres."</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accepter"</string>
<string name="decline" msgid="2112225451706137894">"Refuser"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation envoyée"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB pour le transfert de photos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB en mode MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connecté à un accessoire USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Appuyez pour afficher plus d\'options"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Débogage USB activé"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Appuyez pour désact. débogage USB"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Création du rapport de bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Partager le rapport de bug ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Partage du rapport de bug…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Une nouvelle mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" a été détectée."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Pour transférer photos et fichiers"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" corrompue"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"La mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" est corrompue. Appuyez ici pour la réparer."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> non compatible"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Cet appareil n\'est pas compatible avec la mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\". Appuyez ici pour le configurer dans un format accepté."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Retrait inattendu de mémoire \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Désinstallez la mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" avant de la retirer pour éviter toute perte de données."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" retirée"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permet à une application d\'accéder aux sessions d\'installation. Cela lui permet de consulter les détails relatifs à l\'installation des packages actifs."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"demander l\'installation de packages"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permet à une application de demander l\'installation de packages."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Appuyez deux fois pour régler le zoom."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Appuyer deux fois pour régler le zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Impossible d\'ajouter le widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"OK"</string>
<string name="ime_action_search" msgid="658110271822807811">"Rechercher"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Service de classement des notifications"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activé"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN activé par <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Appuyez ici pour gérer le réseau."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Connecté à <xliff:g id="SESSION">%s</xliff:g>. Appuyez ici pour gérer le réseau."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Appuyez ici pour gérer le réseau."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Connecté à <xliff:g id="SESSION">%s</xliff:g>. Appuyez ici pour gérer le réseau."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN permanent en cours de connexion…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN permanent connecté"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erreur du VPN permanent"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Appuyer pour configurer"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Sélectionner un fichier"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Aucun fichier sélectionné"</string>
<string name="reset" msgid="2448168080964209908">"Réinitialiser"</string>
<string name="submit" msgid="1602335572089911941">"Envoyer"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode Voiture activé"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Appuyez ici pour quitter le mode Voiture."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Partage de connexion ou point d\'accès sans fil activé"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Appuyez pour configurer."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Retour"</string>
<string name="next_button_label" msgid="1080555104677992408">"Suivant"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorer"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ajouter un compte"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Augmenter"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuer"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> appuyez de manière prolongée."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Faites glisser vers le haut pour augmenter et vers le bas pour diminuer."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minute suivante"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minute précédente"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Mémoire de stockage USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Modifier"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avertissement utilisation données"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Appuyez pour conso/paramètres"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de données 2G-3G atteinte"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de données 4G atteinte"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite données mobiles atteinte"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Quota de données Wi-Fi dépassé"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> au-delà de la limite spécifiée."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Données en arrière-plan limitées"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Appuyez pour suppr. restriction."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de sécurité"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ce certificat est valide."</string>
<string name="issued_to" msgid="454239480274921032">"Délivré à :"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Sélectionner une année"</string>
<string name="deleted_key" msgid="7659477886625566590">"\"<xliff:g id="KEY">%1$s</xliff:g>\" supprimé"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Pour annuler l\'épinglage, appuyez de manière prolongée sur \"Retour\"."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Pour annuler l\'épinglage, appuyez de manière prolongée sur \"Aperçu\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'application est épinglée. L\'annulation de l\'épinglage n\'est pas autorisée sur cet appareil."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Écran épinglé."</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Épinglage d\'écran annulé."</string>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index 7a81596..ba360b4 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -263,7 +263,8 @@
<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>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Os elementos que toques pronunciaranse en voz alta e a pantalla poderá explorarse mediante xestos."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar a accesibilidade web mellorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"É posible que se instalen scripts para que o contido da aplicación resulte máis accesible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto que escribes"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escribe o PUK e o código PIN novo"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toca e escribe o contrasinal"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Escribe o contrasinal para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Escribe o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string>
@@ -859,14 +861,38 @@
<item quantity="one">Unha hora</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">en <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one">en <xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Hai un problema co vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Este vídeo non se pode transmitir no dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Non se pode reproducir este vídeo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"É posible que algunhas funcións do sistema non funcionen"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Non hai almacenamento suficiente para o sistema. Asegúrate de ter un espazo libre de 250 MB e reinicia o dispositivo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> estase executando"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Toca aquí para obter máis información ou para deter a aplicación."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Aceptar"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"Aceptar"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicacións."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Está finalizando o arranque"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> está en execución"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Toca para cambiar a aplicación"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Queres cambiar as aplicacións?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Xa hai unha aplicación executándose que debe deterse para que poidas iniciar outra nova."</string>
<string name="old_app_action" msgid="493129172238566282">"Volver a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Deter a aplicación antiga sen gardar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> superou o límite de memoria"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Recompilouse o baleirado de montóns. Toca para compartir"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Queres compartir o baleirado de montóns?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O proceso <xliff:g id="PROC">%1$s</xliff:g> superou o seu límite de memoria de proceso de <xliff:g id="SIZE">%2$s</xliff:g>. Tes dispoñible un baleirado de montóns para compartir co seu programador. Debes ter coidado, pois este baleirado de montóns pode conter información persoal á que ten acceso a aplicación."</string>
<string name="sendText" msgid="5209874571959469142">"Seleccionar unha acción para o texto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"A wifi non ten acceso a Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Tocar para ver as opcións"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Non se puido conectar coa rede Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ten unha conexión a Internet deficiente."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Queres permitir a conexión?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Inicia Wi-Fi Direct. Esta acción desactivará o cliente e a zona interactiva da wifi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Non se puido iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct está activado"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Toca para ver a configuración"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Aceptar"</string>
<string name="decline" msgid="2112225451706137894">"Rexeitar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitación enviada"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferencia de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Toca para ver máis opcións."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración USB conectada"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Toca aquí para desactivala"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Creando informe de erros…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Queres compartir o informe de erros?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartindo informe de erros..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Detectouse unha <xliff:g id="NAME">%s</xliff:g> nova"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos e contidos multimedia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> danado"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> está danado. Toca para solucionar o problema."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> incompatible"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Este dispositivo non é compatible con <xliff:g id="NAME">%s</xliff:g>. Toca para configuralo nun formato compatible."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Retirouse a <xliff:g id="NAME">%s</xliff:g> de forma inesperada"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desactiva a <xliff:g id="NAME">%s</xliff:g> antes de retirala para evitar a perda de datos"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Retirouse a <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permite que unha aplicación consulte as sesións de instalación. Desta forma, pode ver os detalles acerca das instalacións de paquetes activas."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"solicitar instalación de paquetes"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permite a unha aplicación solicitar a instalación dos paquetes."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toca dúas veces para controlar o zoom"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Non se puido engadir o widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ir"</string>
<string name="ime_action_search" msgid="658110271822807811">"Buscar"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Servizo de clasificación de notificacións"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activada"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> activou a VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Toca aquí para xestionar a rede."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toca aquí para xestionar a rede."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sempre activada conectándose..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre activada conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro na VPN sempre activada"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Toca para configurar"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Escoller un ficheiro"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Non se seleccionou ningún ficheiro"</string>
<string name="reset" msgid="2448168080964209908">"Restablecer"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo de coche activado"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toca aquí para saír do modo de coche."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Ancoraxe á rede ou zona Wi-Fi activada"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toca para configurar."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Volver"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seguinte"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omitir"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Engadir conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reducir"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> manter tocado."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Pasa o dedo cara arriba para aumentar e cara abaixo para reducir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar o minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reducir o minuto"</string>
@@ -1236,7 +1278,7 @@
<string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Eliminar"</string>
<string name="keyboardview_keycode_done" msgid="1992571118466679775">"Feito"</string>
<string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Cambio de modo"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Mayús"</string>
+ <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Maiús"</string>
<string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Intro"</string>
<string name="activitychooserview_choose_application" msgid="2125168057199941199">"Selecciona unha aplicación"</string>
<string name="activitychooserview_choose_application_error" msgid="8624618365481126668">"Non se puido iniciar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"almacenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso de uso de datos"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Toca para uso e configuración"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límite de datos de 2G-3G acadado"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límite de datos de 4G acadado"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límite de datos móbiles acadado"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Límite de datos Wi-Fi superado"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> supera o límite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Datos en segundo plano limitados"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toca para eliminar a restrición."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de seguranza"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"Seleccionar ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> do traballo"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Para soltar a pantalla, mantén premido Volver."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Para soltar a pantalla, mantén premido Visión xeral."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"A aplicación está fixada: non se permite soltala neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Pantalla desactivada"</string>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 1b5b613..0f3d86b 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ટચ કરેલ આઇટમ્સ મોટેથી બોલવામાં આવશે અને હાવભાવની મદદથી સ્ક્રીનનું અન્વેષણ કરી શકાય છે."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"વિસ્તૃત વેબ ઍક્સેસિબિલિટી ચાલુ કરો"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"એપ્લિકેશન સામગ્રીને વધુ ઍક્સેસિબલ બનાવવા માટે સ્ક્રિપ્ટ્સ ઇન્સ્ટોલ કરી શકાય છે."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"તમે લખો તે ટેક્સ્ટનું અવલોકન કરો"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK અને નવો PIN કોડ લખો"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK કોડ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"નવો PIN કોડ"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"પાસવર્ડ લખવા માટે ટચ કરો"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"અનલૉક કરવા માટે પાસવર્ડ લખો"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"અનલૉક કરવા માટે PIN લખો"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ખોટો PIN કોડ."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> કલાક</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"હમણાં"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>મિ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>મિ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ક</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ક</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>દિ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>દિ</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>વ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>વ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>મિ. માં</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>મિ. માં</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ક. માં</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ક. માં</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>દિ. માં</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>દિ. માં</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>વ. માં</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>વ. માં</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"વિડિઓમાં સમસ્યા"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"આ ઉપકરણ પર સ્ટ્રીમ કરવા માટે આ વિડિઓ માન્ય નથી."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"આ વિડિઓ ચલાવી શકતાં નથી."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"કેટલાક સિસ્ટમ કાર્યો કામ કરી શકશે નહીં"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"સિસ્ટમ માટે પર્યાપ્ત સ્ટોરેજ નથી. ખાતરી કરો કે તમારી પાસે 250MB ખાલી સ્થાન છે અને ફરીથી પ્રારંભ કરો."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ચાલી રહી છે"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"વધુ માહિતી માટે અથવા એપ્લિકેશન રોકવા માટે ટચ કરો."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ઑકે"</string>
<string name="cancel" msgid="6442560571259935130">"રદ કરો"</string>
<string name="yes" msgid="5362982303337969312">"ઑકે"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"એપ્લિકેશનો શરૂ કરી રહ્યાં છે."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"બૂટ સમાપ્ત કરી રહ્યાં છે."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ચાલુ છે"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"એપ્લિકેશન પર સ્વિચ કરવા માટે ટચ કરો"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"એપ્લિકેશન્સને સ્વિચ કરીએ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"પહેલાંથી ચાલી રહેલ બીજી એપ્લિકેશનને તમે નવી પ્રારંભ કરો તે પહેલાં બંધ કરવી આવશ્યક છે."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> પર પાછા ફરો"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ને પ્રારંભ કરો"</string>
<string name="new_app_description" msgid="1932143598371537340">"જૂની એપ્લિકેશનને સાચવ્યાં વગર રોકો."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> એ મેમરી સીમા વટાવી"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"હીપ ડમ્પ ભેગો કરવામાં આવ્યો છે; શેર કરવા માટે ટચ કરો"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"હીપ ડમ્પ શેર કરીએ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"પ્રક્રિયા <xliff:g id="PROC">%1$s</xliff:g> એ તેની <xliff:g id="SIZE">%2$s</xliff:g> ની પ્રક્રિયા મેમરી મર્યાદા ઓળંગી. તેના વિકાસકર્તા સાથે શેર કરવા તમારી માટે એક હીપ ડમ્પ ઉપલબ્ધ છે. સાવચેત રહો: આ હીપ ડમ્પમાં તમારી વ્યક્તિગત માહિતી શામેલ હોઈ શકે છે કે જેની એપ્લિકેશનને ઍક્સેસ છે."</string>
<string name="sendText" msgid="5209874571959469142">"ટેક્સ્ટ માટે ક્રિયા પસંદ કરો"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ને કોઈ ઇન્ટરનેટ ઍક્સેસ નથી"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"વિકલ્પો માટે ટચ કરો"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi સાથે કનેક્ટ કરી શકાયું નથી"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" નબળું ઇન્ટરનેટ કનેક્શન ધરાવે છે."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"કનેક્શનની મંજૂરી આપીએ?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct પ્રારંભ કરો. આ Wi-Fi ક્લાઇન્ટ/હોટસ્પોટને બંધ કરશે."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct પ્રારંભ કરી શકાયું નથી."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ચાલુ છે"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"સેટિંગ્સ માટે ટચ કરો"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"સ્વીકારો"</string>
<string name="decline" msgid="2112225451706137894">"નકારો"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"આમંત્રણ મોકલ્યું"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ફોટા ટ્રાન્સફર માટે USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI માટે USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ઍક્સેસરીથી કનેક્ટ થયાં"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"વધુ વિકલ્પો માટે ટચ કરો."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ડીબગિંગ કનેક્ટ થયું."</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ડીબગિંગ અક્ષમ કરવા માટે ટચ કરો."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"બગ રિપોર્ટ લઈ રહ્યાં છે…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"બગ રિપોર્ટ શેર કરીએ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"બગ રિપોર્ટ શેર કરી રહ્યાં છે…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"નવું <xliff:g id="NAME">%s</xliff:g> મળ્યું"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ફોટા અને મીડિયા સ્થાનાંતરિત કરવા માટે"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"દૂષિત <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> દૂષિત છે. ફિક્સ કરવા માટે ટચ કરો."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"અસમર્થિત <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"આ ઉપકરણ આ <xliff:g id="NAME">%s</xliff:g> નું સમર્થન કરતું નથી. સમર્થિત ફોર્મેટમાં સેટ કરવા માટે ટચ કરો."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> અનપેક્ષિત રીતે દૂર કર્યું"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ડેટા નુકસાનને ટાળવા માટે <xliff:g id="NAME">%s</xliff:g> ને દૂર કરતાં પહેલાં અનમાઉન્ટ કરો."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> દૂર કર્યું"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"એપ્લિકેશનને ઇન્સ્ટોલ સત્રોને વાંચવાની મંજૂરી આપે છે. આ તેને સક્રિય પૅકેજ ઇન્સ્ટોલેશન્સ વિશે વિગતો જોવાની મંજૂરી આપે છે."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"પૅકેજેસ ઇન્સ્ટૉલ કરવાની વિનંતી કરો"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"એપ્લિકેશનને પૅકેજેસના ઇન્સ્ટોલેશનની વિનંતી કરવાની મંજૂરી આપો."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ઝૂમ નિયંત્રણ માટે બેવાર ટચ કરો"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"વિજેટ ઉમેરી શકાયું નથી."</string>
<string name="ime_action_go" msgid="8320845651737369027">"જાઓ"</string>
<string name="ime_action_search" msgid="658110271822807811">"શોધો"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"સૂચના રેંકર સેવા"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN સક્રિય કર્યું"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> દ્વારા VPN સક્રિય થયું"</string>
- <string name="vpn_text" msgid="3011306607126450322">"નેટવર્કને સંચાલિત કરવા માટે ટચ કરો."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> થી કનેક્ટ થયાં. નેટવર્ક સંચાલિત કરવા માટે ટચ કરો."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"હંમેશા-ચાલુ VPN કનેક્ટ થઈ રહ્યું છે…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"હંમેશા-ચાલુ VPN કનેક્ટ થયું"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"હંમેશાં ચાલુ VPN ભૂલ"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ગોઠવવા માટે ટચ કરો"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ફાઇલ પસંદ કરો"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"કોઈ ફાઇલ પસંદ કરેલી નથી"</string>
<string name="reset" msgid="2448168080964209908">"ફરીથી સેટ કરો"</string>
<string name="submit" msgid="1602335572089911941">"સબમિટ કરો"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"કાર મોડ સક્ષમ છે"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"કાર મોડથી બહાર નીકળવા માટે ટચ કરો."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ટિથરિંગ અથવા હોટસ્પોટ સક્રિય"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"સેટ કરવા માટે ટચ કરો."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"પાછળ"</string>
<string name="next_button_label" msgid="1080555104677992408">"આગલું"</string>
<string name="skip_button_label" msgid="1275362299471631819">"છોડો"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"એકાઉન્ટ ઉમેરો"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"વધારો"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ઘટાડો"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ટચ કરો અને પકડી રાખો."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"વધારવા માટે ઉપર અને ઘટાડવા માટે નીચે સ્લાઇડ કરો."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"મિનિટ વધારો"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"મિનિટ ઘટાડો"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB સંગ્રહ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"સંપાદિત કરો"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ડેટા વપરાશ ચેતવણી"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"વપરાશ અને સેટિંગ્સ જોવા માટે ટચ કરો."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ડેટા મર્યાદા પર પહોંચ્યાં"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ડેટા મર્યાદા સુધી પહોંચ્યાં"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"સેલ્યુલર ડેટા મર્યાદા સુધી પહોંચ્યાં"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ડેટા મર્યાદા ઓળંગાઈ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"ઉલ્લેખિત મર્યાદાથી <xliff:g id="SIZE">%s</xliff:g> વધુ."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"પૃષ્ઠભૂમિ ડેટા પ્રતિબંધિત"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"પ્રતિબંધ દૂર કરવા માટે ટચ કરો."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"સુરક્ષા પ્રમાણપત્ર"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"આ પ્રમાણપત્ર માન્ય છે."</string>
<string name="issued_to" msgid="454239480274921032">"આને રજૂ:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"વર્ષ પસંદ કરો"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> કાઢી નાખી"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"કાર્યાલય <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"આ સ્ક્રીનને અનપિન કરવા માટે, પાછળને ટચ કરીને પકડી રાખો."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"આ સ્ક્રીનને અનપિન કરવા માટે, વિહંગાવલોકનને ટચ કરો અને પકડો."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"એપ્લિકેશન પિન કરેલ છે. આ ઉપકરણ પર અનપિન કરવાની મંજૂરી નથી."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"સ્ક્રીન પિન કરી"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"સ્ક્રીન અનપિન કરી"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 2cc7120..14dfca4 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"स्पर्श किए गए आइटम ज़ोर से बोले जाएंगे और स्क्रीन को जेस्चर के उपयोग से एक्सप्लोर किया जा सकेगा."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"एन्हांस की गई वेब आसान तरीका चालू करें"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ऐप्स सामग्री को अधिक पहुंच-योग्य बनाने के लिए स्क्रिप्ट इंस्टॉल किए जा सकते हैं."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"आपके द्वारा लिखे हुए लेख को ध्यान से देखें"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK और नया पिन कोड लिखें"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK कोड"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"नया पिन कोड"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"पासवर्ड लिखने के लिए स्पर्श करें"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"अनलॉक करने के लिए पासवर्ड लिखें"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"अनलॉक करने के लिए पिन लिखें"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"गलत पिन कोड."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> घंटे</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"अभी"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> मि.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> मि.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> घं.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> घं.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> दिन</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> दिन</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> वर्ष</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> वर्ष</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> मिनट में</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> मिनट में</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> घंटे में</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> घंटे में</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> दिन में</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> दिन में</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> वर्ष में</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> वर्ष में</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"वीडियो समस्याएं"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"यह वीडियो इस डिवाइस पर स्ट्रीमिंग के लिए मान्य नहीं है."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"यह वीडियो नहीं चलाया जा सकता."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"हो सकता है कुछ सिस्टम फ़ंक्शन कार्य न करें"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"सिस्टम के लिए पर्याप्त मेमोरी नहीं है. सुनिश्चित करें कि आपके पास 250MB का खाली स्थान है और फिर से प्रारंभ करें."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चल रहा है"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"अधिक जानकारी के लिए या ऐप्स रोकने के लिए स्पर्श करें."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ठीक है"</string>
<string name="cancel" msgid="6442560571259935130">"अभी नहीं"</string>
<string name="yes" msgid="5362982303337969312">"ठीक है"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ऐप्स प्रारंभ होने वाले हैं"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"बूट समाप्त हो रहा है."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> चल रही है"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ऐप्स पर स्विच करने के लिए स्पर्श करें"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ऐप्स स्विच करें?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"दूसरा ऐप्स पहले से चल रहा है जिसे किसी नए ऐप्स को प्रारंभ करने के पहले बंद किया जाना आवश्यक है."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> पर वापस लौटें"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> प्रारंभ करें"</string>
<string name="new_app_description" msgid="1932143598371537340">"पुराने ऐप्स को बिना सहेजे बंद करें."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> मेमोरी सीमा को पार कर गई है"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"हीप डंप एकत्र कर लिया गया है; साझा करने के लिए स्पर्श करें"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"हीप डंप साझा करें?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"प्रक्रिया <xliff:g id="PROC">%1$s</xliff:g> इसकी <xliff:g id="SIZE">%2$s</xliff:g> की मेमोरी की सीमा को पार कर गई है. इसके डेवलपर से साझा करने के लिए एक हीप डंप आपके लिए उपलब्ध है. सावधान रहें: इस हीप डंप में आपकी ऐसी कोई भी व्यक्तिगत जानकारी हो सकती है जिस पर ऐप्लिकेशन की ऐक्सेस हो."</string>
<string name="sendText" msgid="5209874571959469142">"लेख के लिए किसी क्रिया को चुनें"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"वाई-फ़ाई में कोई इंटरनेट ऐक्सेस नहीं है"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"विकल्पों के लिए स्पर्श करें"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाई-फ़ाई से कनेक्ट नहीं हो सका"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" के पास एक कमज़ोर इंटरनेट कनेक्शन है."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"कनेक्शन की अनुमति दें?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"वाई-फ़ाई डायरेक्ट प्रारंभ करें. इससे वाई-फ़ाई क्लाइंट/हॉटस्पॉट कार्यवाही बंद हो जाएगी."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"वाई-फ़ाई डायरेक्ट प्रारंभ नहीं किया जा सका."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"वाई-फ़ाई डायरेक्ट चालू है"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"सेटिंग के लिए स्पर्श करें"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"स्वीकार करें"</string>
<string name="decline" msgid="2112225451706137894">"अस्वीकार करें"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"आमंत्रण भेजा गया"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"फ़ोटो स्थानांतरण के लिए USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI के लिए USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायक सामग्री से कनेक्ट किया गया"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"और विकल्पों के लिए स्पर्श करें."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB डीबग कनेक्ट किया गया"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB डीबग करना अक्षम करने के लिए स्पर्श करें."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"बग रिपोर्ट प्राप्त की जा रही है…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"बग रिपोर्ट साझा करें?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"बग रिपोर्ट साझा की जा रही है…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"नए <xliff:g id="NAME">%s</xliff:g> का पता लगा"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"फ़ोटो और मीडिया ट्रांसफर करने के लिए"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"दूषित <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> दूषित है. ठीक करने के लिए स्पर्श करें."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"असमर्थित <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"यह डिवाइस इस <xliff:g id="NAME">%s</xliff:g> का समर्थन नहीं करता. किसी समर्थित प्रारूप में सेट करने के लिए स्पर्श करें."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> अप्रत्याशित रूप से निकाला गया"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"डेटा हानि से बचने के लिए <xliff:g id="NAME">%s</xliff:g> को निकालने से पहले अनमाउंट करें"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> निकाल दिया गया"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ऐप्लिकेशन को इंस्टॉल सत्रों को पढ़ने देती है. इससे उसे सक्रिय पैकेज इंस्टॉलेशन के बारे में विवरण देखने की अनुमति मिल जाती है."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"पैकेज इंस्टॉल करने का अनुरोध करें"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"किसी ऐप्लिकेशन को पैकेज इंस्टॉल करने के अनुरोध की अनुमति देता है."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ज़ूम नियंत्रण के लिए दो बार स्पर्श करें"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"ज़ूम नियंत्रण के लिए दो बार टैप करें"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"विजेट नहीं जोड़ा जा सका."</string>
<string name="ime_action_go" msgid="8320845651737369027">"जाएं"</string>
<string name="ime_action_search" msgid="658110271822807811">"खोजें"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"नोटिफ़िकेशन रैंकर सेवा"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN सक्रिय"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN को <xliff:g id="APP">%s</xliff:g> द्वारा सक्रिय किया गया है"</string>
- <string name="vpn_text" msgid="3011306607126450322">"नेटवर्क प्रबंधित करने के लिए स्पर्श करें."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> से कनेक्ट किया गया. नेटवर्क प्रबंधित करने के लिए स्पर्श करें."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"नेटवर्क प्रबंधित करने के लिए टैप करें."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g> से कनेक्ट किया गया. नेटवर्क प्रबंधित करने के लिए टैप करें."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"हमेशा-चालू VPN कनेक्ट हो रहा है…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"हमेशा-चालू VPN कनेक्ट है"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"हमेशा-चालू VPN त्रुटि"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"कॉन्फ़िगर करने के लिए स्पर्श करें"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"फ़ाइल चुनें"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"कोई फ़ाइल चुनी नहीं गई"</string>
<string name="reset" msgid="2448168080964209908">"रीसेट करें"</string>
<string name="submit" msgid="1602335572089911941">"सबमिट करें"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"कार मोड सक्षम किया गया"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"कार मोड से बाहर निकलने के लिए स्पर्श करें."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"टेदरिंग या हॉटस्पॉट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"सेट करने के लिए स्पर्श करें."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"वापस जाएं"</string>
<string name="next_button_label" msgid="1080555104677992408">"आगे"</string>
<string name="skip_button_label" msgid="1275362299471631819">"अभी नहीं"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"खाता जोड़ें"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"बढ़ाएं"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"कम करें"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> को स्पर्श करके रखें."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"बढ़ाने के लिए ऊपर और कम करने के लिए नीचे स्लाइड करें."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"मिनट बढ़ाएं"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"मिनट कम करें"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB मेमोरी"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"संपादित करें"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"डेटा उपयोग की चेतावनी"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"उपयोग व सेटिंग देखने के लिए स्पर्श करें."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G डेटा सीमा पूर्ण हो गई"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G डेटा सीमा पूर्ण हो गई"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"सेल्युलर डेटा सीमा पूर्ण हो गई"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"वाई-फ़ाई डेटा सीमा पार हो गई है"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> निर्दिष्ट सीमा से अधिक."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"पृष्ठभूमि डेटा प्रतिबंधित है"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"प्रतिबंध निकालने के लिए स्पर्श करें."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षा प्रमाणपत्र"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"यह प्रमाणपत्र मान्य है."</string>
<string name="issued_to" msgid="454239480274921032">"इन्हें जारी किया गया:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"वर्ष चुनें"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> को हटा दिया गया"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्यस्थल का <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"इस स्क्रीन को अनपिन करने के लिए, वापस जाएं को स्पर्श करके रखें."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"इस स्क्रीन को अनपिन करने के लिए, अवलोकन को स्पर्श करके रखें."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ऐप पिन किया गया है: इस डिवाइस पर अनपिन करने की अनुमति नहीं है."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रीन पिन की गई"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"स्क्रीन अनपिन की गई"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index c7b7857..272c56c 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -266,7 +266,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dohvaćati sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Istražite sadržaj prozora koji upotrebljavate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključiti značajku Istraži dodirom"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Dodirnute stavke izgovorit će se naglas, a zaslon se može istraživati pokretima."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Uključiti poboljšanu pristupačnost weba"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Kako bi sadržaj aplikacije bio pristupačniji, mogu se instalirati skripte."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Pratiti tekst koji pišete"</string>
@@ -665,7 +666,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Unesite PUK i novi PIN kôd"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kôd"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novi PIN kôd"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dodirnite za tipkanje zaporke"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Unesite zaporku za otključavanje"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Unesite PIN za otključavanje"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Netočan PIN kôd."</string>
@@ -866,14 +868,46 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"sad"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">za <xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problem s videozapisom"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Ovaj videozapis nije valjan za streaming na ovaj uređaj."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Ovaj videozapis nije moguće reproducirati."</string>
@@ -905,7 +939,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Neke sistemske funkcije možda neće raditi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nema dovoljno pohrane za sustav. Oslobodite 250 MB prostora i pokrenite uređaj ponovo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> pokrenuta je"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Dodirnite za više informacija ili da biste zaustavili aplikaciju."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"U redu"</string>
<string name="cancel" msgid="6442560571259935130">"Odustani"</string>
<string name="yes" msgid="5362982303337969312">"U redu"</string>
@@ -979,7 +1014,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Završetak inicijalizacije."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Izvodi se <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Dodirnite da biste se prebacili na aplikaciju"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Izmijeniti aplikacije?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Već se izvodi neka druga aplikacija koja se mora zaustaviti prije pokretanja nove."</string>
<string name="old_app_action" msgid="493129172238566282">"Natrag na <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -987,7 +1023,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Pokreni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zaustavi staru aplikaciju bez spremanja."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> premašio je ograničenje memorije"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Generirana je snimka memorije procesa. Dodirnite za dijeljenje."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Žalite li dijeliti snimku memorije procesa?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> premašio je ograničenje memorije od <xliff:g id="SIZE">%2$s</xliff:g>. Dostupna vam je snimka memorije procesa koju možete podijeliti s razvojnim programerom. Budite oprezni: ta snimka memorije može sadržavati vaše osobne podatke kojoj aplikacija ima pristup."</string>
<string name="sendText" msgid="5209874571959469142">"Izaberite radnju za tekst"</string>
@@ -1025,7 +1062,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nema pristup internetu"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Dodirnite za opcije"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ne može se spojiti na Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima lošu internetsku vezu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Dopustiti povezivanje?"</string>
@@ -1035,7 +1073,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Pokreni izravan rad s Wi-Fi mrežom. To će isključiti rad s Wi-Fi klijentom/žarišnom točkom."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Pokretanje izravne Wi-Fi veze nije moguće."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct uključen"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Dodirnite za postavke"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Prihvaćam"</string>
<string name="decline" msgid="2112225451706137894">"Odbaci"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozivnica je poslana"</string>
@@ -1087,9 +1126,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prijenos fotografija"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Spojen na USB pribor"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Dodirnite za više opcija."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Priključen je alat za uklanjanje pogrešaka USB-om"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Dodirnite da se onemogući otklanjanje pogrešaka USB-om."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Izrada izvješća o programskoj pogrešci…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Želite li podijeliti izvješće o programskoj pogrešci?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Dijeljenje izvješća o programskoj pogrešci…"</string>
@@ -1109,9 +1150,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Otkriven je novi uređaj <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prijenos fotografija i medija"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Oštećeni medij za pohranu <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Medij za pohranu <xliff:g id="NAME">%s</xliff:g> oštećen je. Dodirnite za popravak."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepodržani medij za pohranu <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Uređaj ne podržava medij za pohranu <xliff:g id="NAME">%s</xliff:g>. Dodirnite za postavljanje u podržanom formatu."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Uređaj <xliff:g id="NAME">%s</xliff:g> iznenada je uklonjen"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Isključite uređaj <xliff:g id="NAME">%s</xliff:g> prije uklanjanja da ne biste izgubili podatke"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Uklonjen je uređaj <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1147,7 +1190,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Omogućuje aplikaciji čitanje sesija instaliranja. Aplikacija može vidjeti pojedinosti o aktivnim instaliranjima paketa."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"zahtijevati instaliranje paketa"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Aplikaciji omogućuje zahtijevanje instaliranja paketa."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dodirnite dvaput za upravljanje zumiranjem"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Dvaput dotaknite za upravljanje zumiranjem"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget nije moguće dodati."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Idi"</string>
<string name="ime_action_search" msgid="658110271822807811">"Pretraži"</string>
@@ -1178,20 +1221,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Usluga rangiranja obavijesti"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN aktiviran"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Aplikacija <xliff:g id="APP">%s</xliff:g> aktivirala je VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Dodirnite za upravljanje mrežom."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Povezan sa sesijom <xliff:g id="SESSION">%s</xliff:g>. Dodirnite za upravljanje mrežom."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Dotaknite za upravljanje mrežom."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Povezan sa sesijom <xliff:g id="SESSION">%s</xliff:g>. Dotaknite za upravljanje mrežom."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezivanje s uvijek uključenom VPN mrežom…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Povezan s uvijek uključenom VPN mrežom"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Pogreška uvijek uključene VPN mreže"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Dodirnite za konfiguraciju"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Odaberite datoteku"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nema odabranih datoteka"</string>
<string name="reset" msgid="2448168080964209908">"Ponovo postavi"</string>
<string name="submit" msgid="1602335572089911941">"Pošalji"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Omogućen je način rada za automobil"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Dodirnite za izlaz iz načina rada u automobilu."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Ograničenje ili aktivan hotspot"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Dodirnite za postavljanje."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Natrag"</string>
<string name="next_button_label" msgid="1080555104677992408">"Dalje"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1225,7 +1271,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj račun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Povećavanje"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Smanjivanje"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> pritisnite i držite."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Kliznite prema gore za povećavanje i prema dolje za smanjivanje."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povećanje minuta"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Smanjenje minuta"</string>
@@ -1269,7 +1316,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB pohrana"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Uredi"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozorenje o upotrebi podataka"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Dod. za prikaz upotrebe i post."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dost. ogr. 2G–3G prijenosa pod."</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dost. ogr. 4G prijenosa podataka"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dost. ogr. mob. prijenosa podat."</string>
@@ -1281,7 +1329,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Prekorač. Wi-Fi ogranič. pod."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Veličina <xliff:g id="SIZE">%s</xliff:g> prelazi navedeno ograničenje."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pozadinski podaci ograničeni"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Dodirnite za uklanjanje ograničenja."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sigurnosni certifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ovaj je certifikat valjan."</string>
<string name="issued_to" msgid="454239480274921032">"Izdano za:"</string>
@@ -1498,8 +1547,10 @@
<string name="select_year" msgid="7952052866994196170">"Odaberite godinu"</string>
<string name="deleted_key" msgid="7659477886625566590">"Izbrisan je broj <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> za posao"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Da biste otkvačili ovaj zaslon, dodirnite i zadržite Natrag."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Da biste otkvačili ovaj zaslon, dodirnite i zadržite Pregled."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je prikvačena: otkvačivanje nije dopušteno na tom uređaju."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Zaslon je pričvršćen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Zaslon je otkvačen"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 4c2727a..b13b63e 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ablaktartalom lekérdezése"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"A használt ablak tartalmának vizsgálata."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Felfedezés érintéssel bekapcsolása"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"A megérintett elemeket a rendszer hangosan kimondja, a képernyő pedig felfedezhető kézmozdulatok használatával."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Internetes kisegítő lehetőségek bővítése"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Szkripteket lehet telepíteni, hogy könnyebb legyen hozzáférni az alkalmazások tartalmához."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"A gépelt szöveg figyelése"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Írja be a PUK kódot, majd az új PIN kódot"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kód"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Új PIN-kód"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Érintsen jelszó megadásához"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"A feloldáshoz írja be a jelszót"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Feloldáshoz írja be a PIN kódot"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Helytelen PIN-kód."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 óra</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"most"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> p</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> p</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ó</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ó</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> n</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> n</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> é</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> é</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> percen belül</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> percen belül</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> órán belül</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> órán belül</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> napon belül</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> napon belül</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> éven belül</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> éven belül</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Videoprobléma"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Ezt a videót nem lehet megjeleníteni ezen az eszközön."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Nem lehet lejátszani ezt a videót."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Előfordulhat, hogy néhány rendszerfunkció nem működik."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nincs elegendő tárhely a rendszerhez. Győződjön meg arról, hogy rendelkezik 250 MB szabad területtel, majd kezdje elölről."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> jelenleg fut"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"További információért, illetve az alkalmazás leállításához érintse meg."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Mégse"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Kezdő alkalmazások."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Rendszerindítás befejezése."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> fut"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Érintse meg az alkalmazásra váltáshoz"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Átvált az alkalmazások között?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Már fut egy másik alkalmazás, amelyet le kell állítania, mielőtt egy újat indíthatna el."</string>
<string name="old_app_action" msgid="493129172238566282">"Visszatérés a(z) <xliff:g id="OLD_APP">%1$s</xliff:g> alkalmazáshoz"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> indítása"</string>
<string name="new_app_description" msgid="1932143598371537340">"A régi alkalmazás leállítása mentés nélkül."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"A(z) <xliff:g id="PROC">%1$s</xliff:g> túllépte a memóriakorlátot"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Elkészült a memória-pillanatfelvétel (heap dump); a megosztáshoz érintse meg"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Megosztja a memória-pillanatfelvételt?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"A(z) <xliff:g id="PROC">%1$s</xliff:g> folyamat túllépte a(z) <xliff:g id="SIZE">%2$s</xliff:g> méretű memóriakorlátot. Elérhető a memória-pillanatfelvétel (heap dump), hogy megossza a fejlesztővel. Figyelem: ez a felvétel tartalmazhatja az Ön olyan személyes adatait, amelyekhez az alkalmazásnak hozzáférése van."</string>
<string name="sendText" msgid="5209874571959469142">"Válasszon ki egy műveletet a szöveghez"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"A Wi-Fi-hálózaton nincs internetkapcsolat"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Érintse meg a lehetőségek megtekintéséhez."</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nem sikerült csatlakozni a Wi-Fi hálózathoz"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" rossz internetkapcsolattal rendelkezik."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Engedélyezi a csatlakozást?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct elindítása. A Wi-Fi kliens/hotspot ettől leáll."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nem sikerült elindítani a Wi-Fi Direct kapcsolatot."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"A Wi-Fi Direct be van kapcsolva"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"A beállításokhoz érintse meg"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Elfogadás"</string>
<string name="decline" msgid="2112225451706137894">"Elutasítás"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Meghívó elküldve"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fotóátvitelhez"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI-hez"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Csatlakoztatva egy USB-kiegészítőhöz"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Érintse meg a további lehetőségekhez."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB hibakereső csatlakoztatva"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Érintse meg az USB hibakeresés kikapcsolásához."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Hibajelentés készítése…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Megosztja a hibajelentést?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Hibajelentés megosztása…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Új <xliff:g id="NAME">%s</xliff:g> észlelve"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotók és más tartalmak átviteléhez"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Sérült <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"A(z) <xliff:g id="NAME">%s</xliff:g> sérült. Érintse meg a javításhoz."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nem támogatott <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Ez az eszköz nem támogatja ezt a(z) <xliff:g id="NAME">%s</xliff:g> eszközt. Érintse meg egy támogatott formátum használatához."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"A(z) <xliff:g id="NAME">%s</xliff:g> váratlanul eltávolítva"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Az adatvesztés elkerülése érdekében kezdje a(z) <xliff:g id="NAME">%s</xliff:g> leválasztásával, mielőtt eltávolítaná azt"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> eltávolítva"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Engedélyezi az alkalmazásnak a telepítési munkamenetek olvasását. Ezáltal részleteket kaphat az egyes csomagok éppen folyamatban lévő telepítéséről."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"telepítőcsomagok kérése"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Lehetővé teszi az alkalmazás számára csomagok telepítésének kérését."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Érintse meg kétszer a nagyítás beállításához"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Érintse meg kétszer a nagyítás beállításához"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nem sikerült hozzáadni a modult."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ugrás"</string>
<string name="ime_action_search" msgid="658110271822807811">"Keresés"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Értesítésrangsoroló szolgáltatás"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN aktiválva"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"A(z) <xliff:g id="APP">%s</xliff:g> aktiválta a VPN-t"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Érintse meg a hálózat kezeléséhez."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Csatlakozva ide: <xliff:g id="SESSION">%s</xliff:g>. Érintse meg a hálózat kezeléséhez."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Érintse meg a hálózat irányításához."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Csatlakozva ide: <xliff:g id="SESSION">%s</xliff:g>. Érintse meg a hálózat kezeléséhez."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Csatlakozás a mindig bekapcsolt VPN-hez..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Csatlakozva a mindig bekapcsolt VPN-hez"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Hiba a mindig bekapcsolt VPN-nel"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"A beállításhoz érintse meg"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Fájl kiválasztása"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nincs fájl kiválasztva"</string>
<string name="reset" msgid="2448168080964209908">"Alaphelyzet"</string>
<string name="submit" msgid="1602335572089911941">"Elküldés"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Gépkocsi üzemmód bekapcsolva"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Érintse meg a kilépéshez az autós üzemmódból."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Megosztás vagy aktív hotspot"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Érintse meg a beállításhoz."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Vissza"</string>
<string name="next_button_label" msgid="1080555104677992408">"Tovább"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Kihagyás"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Fiók hozzáadása"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Növelés"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Csökkentés"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> érintse meg és tartsa lenyomva."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"A növeléshez csúsztassa felfelé, a csökkentéshez pedig lefelé."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Perc értékének növelése"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Perc értékének csökkentése"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-tár"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Szerkesztés"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Adathasználati figyelmeztetés"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Érintse meg az adatokért."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-/3G-adatkorlát elérve"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-adatkorlát elérve"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobiladat-korlát elérve"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Elérte a Wi-Fi adatkorlátot"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g>-tal túllépte a korlátot."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Háttéradatok korlátozva"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Korlátozás törlése"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Biztonsági tanúsítvány"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"A tanúsítvány érvényes."</string>
<string name="issued_to" msgid="454239480274921032">"Kiállítva a következőnek:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Válassza ki az évet"</string>
<string name="deleted_key" msgid="7659477886625566590">"A(z) <xliff:g id="KEY">%1$s</xliff:g> érték törölve"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Munkahelyi <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"A képernyő rögzítésének feloldásához tartsa lenyomva a Vissza lehetőséget."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"A képernyő rögzítésének feloldásához tartsa lenyomva az Áttekintés lehetőséget."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Az alkalmazás rögzítve van: a rögzítés feloldása nem engedélyezett ezen az eszközön."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Képernyő rögzítve"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Képernyő rögzítése feloldva"</string>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 5ff10c1..957c0e5 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Տարրերը, որոնց հպեք, բարձրաձայն կխոսեն, և էկրանը հնարավոր կլինի ուսումնասիրել ժեստերով:"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Միացնել ընդլայնված վեբ մատչելիությունը"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Հնարավոր է սկրիպտներ տեղադրվեն` ծրագրի բովանդակությունն ավելի մատչելի դարձնելու համար:"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Զննել ձեր մուտքագրած տեքստը"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Մուտքագրեք PUK-ը և նոր PIN կոդը"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK կոդ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Նոր PIN ծածկագիր"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Հպեք` գաղտնաբառը մուտքագրելու համար"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Մուտքագրեք գաղտնաբառը ապակողպման համար"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Մուտքագրեք PIN-ը ապակողպման համար"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Սխալ PIN ծածկագիր:"</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ժամ</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"հիմա"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ր.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ր.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ժ.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ժ.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> օր</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> օր</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> տ.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> տ.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> րոպեից</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> րոպեից</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ժամից</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ժամից</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> օրից</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> օրից</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> տարուց</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> տարուց</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Տեսանյութի խնդիր"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Այս տեսանյութը հեռարձակման ենթակա չէ այս սարքով:"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Այս տեսանյութը հնարավոր չէ նվագարկել:"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Համակարգի որոշ գործառույթներ հնարավոր է չաշխատեն"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Համակարգի համար բավարար հիշողություն չկա: Համոզվեք, որ ունեք 250ՄԲ ազատ տարածություն և վերագործարկեք:"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ն աշխատեցվում է"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Հպեք` լրացուցիչ տեղեկությունները կամ ծրագիրը դադարեցնելու համար:"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Լավ"</string>
<string name="cancel" msgid="6442560571259935130">"Չեղարկել"</string>
<string name="yes" msgid="5362982303337969312">"Լավ"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Հավելվածները մեկնարկում են:"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Բեռնումն ավարտվում է:"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>-ն աշխատում է"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Հպեք` հավելվածին անցնելու համար"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Փոխարկե՞լ հավելվածները:"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Մեկ այլ ծրագիր արդեն աշխատում է, որը պետք է դադարեցնել, նախքան դուք կկարողանաք սկսել նորը:"</string>
<string name="old_app_action" msgid="493129172238566282">"Վերադառնալ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Սկիզբ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Դադարեցնել նախկին ծրագիրն առանց պահպանման:"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> գործընթացը գերազանցել է հիշողության սահմանաչափը"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Օգտագործվող օբյեկտների վերաբերյալ տվյալները հավաքվել են: Հպեք՝ դրանք տրամադրելու համար:"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Տրամադրե՞լ օգտագործվող օբյեկտների վերաբերյալ տվյալները:"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> գործընթացը գերազանցել է իր կողմից հիշողության օգտագործման սահմանաչափը՝ <xliff:g id="SIZE">%2$s</xliff:g>: Հավաքվել են օգտագործվող օբյեկտների վերաբերյալ տվյալներ, որոնք կարող եք ուղարկել մշակողին: Սակայն զգույշ եղեք՝ նշված տվյալները կարող են ներառել հավելվածի կողմից օգտագործվող ձեր անձնական տվյալները:"</string>
<string name="sendText" msgid="5209874571959469142">"Ընտրեք գործողություն տեքստի համար"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ցանցը համացանցի միացում չունի"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Հպեք՝ ընտրանքները դիտելու համար"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Չհաջողվեց միանալ Wi-Fi-ին"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ունի թույլ ինտերնետ կապ:"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Թույլատրե՞լ կապը:"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Մեկնարկել Wi-Fi ուղին: Այն կանջատի Wi-Fi հաճախորդ/թեժ կետ գործողությունը:"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Չհաջողվեց մեկնարկել Wi-Fi ուղին:"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ուղիղն առցանց է"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Հպեք կարգավորումների համար"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Ընդունել"</string>
<string name="decline" msgid="2112225451706137894">"Մերժել"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Հրավերն ուղարկված է"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Լուսանկարների փոխանցման USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-ի USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Կապակցված է USB լրասարքի"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Հպեք՝ լրացուցիչ ընտրանքների համար:"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB վրիպազերծումը միացված է"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Հպեք` USB կարգաբերումը կասեցնելու համար:"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Վրիպակի զեկույցի ստեղծում…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Տրամադրե՞լ վրիպակի զեկույցը:"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Վրիպակի զեկույցի տրամադրում…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Հայտնաբերվել է նոր <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Լուսանկարներ և մեդիա ֆայլեր տեղափոխելու համար"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>-ը վնասված է"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g>-ը վնասված է: Հպեք՝ շտկելու համար:"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Չապահովվող <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Այս սարքը չի աջակցում այս <xliff:g id="NAME">%s</xliff:g>-ը: Հպեք՝ աջակցվող ձևաչափով տեղադրելու համար:"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>-ը հեռացվել է առանց անջատելու"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Տվյալները չկորցնելու համար անջատեք <xliff:g id="NAME">%s</xliff:g>-ը՝ մինչ հեռացնելը"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g>-ը հեռացված է"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Ծրագրին թույլ է տալիս կարդալ տեղադրման աշխատաշրջանները: Սա թույլ է տալիս տեղեկանալ փաթեթների ակտիվ տեղադրումների մանրամասներին:"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"պահանջել տեղադրման փաթեթներ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Թույլ է տալիս հավելվածին պահանջել փաթեթների տեղադրումը:"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Հպեք երկու անգամ` դիտափոխման կարգավորման համար"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Հպեք երկու անգամ` խոշորացման վերահսկման համար"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Չհաջողվեց վիջեթ ավելացնել:"</string>
<string name="ime_action_go" msgid="8320845651737369027">"Առաջ"</string>
<string name="ime_action_search" msgid="658110271822807811">"Որոնել"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Ծանուցումների դասակարգման ծառայություն"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN-ը ակտիվացված է"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN-ն ակտիվացված է <xliff:g id="APP">%s</xliff:g>-ի կողմից"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Հպեք` ցանցի կառավարման համար:"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Միացված է <xliff:g id="SESSION">%s</xliff:g>-ին: Հպեք` ցանցը կառավարելու համար:"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Սեղմել ցանցի կառավարման համար:"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Կապակացված է <xliff:g id="SESSION">%s</xliff:g>-ին: Սեղմեք` ցանցը կառավարելու համար:"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Միշտ-միացված VPN-ը կապվում է..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Միշտ-առցանց VPN-ը կապակցված է"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"VPN սխալը միշտ միացված"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Հպեք կարգավորելու համար"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Ընտրել ֆայլը"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ոչ մի ֆայլ չի ընտրված"</string>
<string name="reset" msgid="2448168080964209908">"Վերակայել"</string>
<string name="submit" msgid="1602335572089911941">"Ուղարկել"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Մեքենայի ռեժիմը միացված է"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Հպեք` մեքենայի ռեժիմից դուրս գալու համար:"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Մուտքը կամ թեժ կետը ակտիվ է"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Հպեք կարգավորելու համար:"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Հետ"</string>
<string name="next_button_label" msgid="1080555104677992408">"Հաջորդը"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Բաց թողնել"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ավելացնել հաշիվ"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Ավելացնել"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Նվազեցնել"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> հպեք և պահեք:"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Սահեցրեք վերև` ավելացնելու համար, և ներքև` նվազեցնելու համար:"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Աճեցնել րոպեն"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Նվազեցնել րոպեն"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB կրիչ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Խմբագրել"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Տվյալների օգտագործման նախազգուշացում"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Հպեք` օգտագործումը և կարգավորումները տեսնելու համար:"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G տվյալների սահմանաչափը սպառվել է"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G տվյալների սահմանաչափը սպառվել է"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Բջջային տվյալների սահմանաչափը սպառվել է"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi տվյալների սահմանը գերազանցվել է"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g>-ը գերազանցում է նշված սահմանաչափը:"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Հետնաշերտային տվյալները սահմանափակ են"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Հպեք` սահմանափակումը հեռացնելու համար:"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Անվտանգության վկայական"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Այս վկայականը վավեր է:"</string>
<string name="issued_to" msgid="454239480274921032">"Թողարկվել է`"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Ընտրեք տարին"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> թիվը ջնջված է"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Աշխատանքային <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Այս էկրանն ապամրացնելու համար հպեք և պահեք Հետ կոճակը:"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Այս էկրանն ապամրացնելու համար հպեք և պահեք Համատեսքի կոճակը:"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Հավելվածն ամրացված է: Ապամրացումն այս սարքում չի թույլատրվում:"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Էկրանն ամրացված է"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Էկրանն ապամրացված է"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index eccc16f..03f2919 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Mengambil konten jendela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Memeriksa konten jendela tempat Anda berinteraksi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Mengaktifkan Jelajahi dengan Sentuhan"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Item yang disentuh akan diucapkan dengan jelas dan layar dapat dijelajahi menggunakan isyarat."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Mengaktifkan aksesibilitas web yang disempurnakan"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skrip mungkin dipasang agar konten aplikasi lebih dapat diakses."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Mengamati teks yang Anda ketik"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ketik kode PUK dan PIN baru"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kode PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kode Pin baru"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Sentuh untuk mengetikkan sandi"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ketik sandi untuk membuka kunci"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ketik PIN untuk membuka kunci"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kode PIN salah."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 jam</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"sekarang"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>j</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>j</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>t</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>t</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>j</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>j</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>t</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>t</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Masalah video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Video ini tidak valid untuk pengaliran ke perangkat ini."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Tidak dapat memutar video ini."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Beberapa fungsi sistem mungkin tidak dapat bekerja"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Penyimpanan tidak cukup untuk sistem. Pastikan Anda memiliki 250 MB ruang kosong, lalu mulai ulang."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang berjalan"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Sentuh untuk informasi selengkapnya atau hentikan aplikasi."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Oke"</string>
<string name="cancel" msgid="6442560571259935130">"Batal"</string>
<string name="yes" msgid="5362982303337969312">"Oke"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulai aplikasi."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Menyelesaikan boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> berjalan"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Sentuh untuk beralih ke apl"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Beralih aplikasi?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Apl lain sudah berjalan dan harus dihentikan agar Anda dapat memulai yang baru."</string>
<string name="old_app_action" msgid="493129172238566282">"Kembali ke<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Mulai <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Hentikan apl lama tanpa menyimpan."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> melampaui batas memori"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Tumpukan sampah telah dikumpulkan; sentuh untuk membagikan"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Share tumpukan membuang?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proses <xliff:g id="PROC">%1$s</xliff:g> telah melampaui batas memori proses <xliff:g id="SIZE">%2$s</xliff:g>. Tumpukan sampah tersedia untuk Anda bagikan kepada pengembangnya. Hati-hati, tumpukan sampah ini hanya dapat memuat informasi pribadi yang dapat diakses oleh aplikasi."</string>
<string name="sendText" msgid="5209874571959469142">"Pilih tindakan untuk teks"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tidak memiliki akses internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Sentuh untuk melihat opsi"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Tidak dapat tersambung ke Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" memiliki sambungan internet yang buruk."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Izinkan hubungan?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Memulai Wi-Fi Direct. Opsi ini akan mematikan hotspot/klien Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Tidak dapat memulai Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct aktif"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Sentuh untuk setelan"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Terima"</string>
<string name="decline" msgid="2112225451706137894">"Tolak"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Undangan terkirim"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB untuk transfer foto"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB untuk MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tersambung ke aksesori USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Sentuh untuk opsi lainnya."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Debugging USB terhubung"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Sentuh untuk menonaktifkan debugging USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Mengambil laporan bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Bagikan laporan bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Membagikan laporan bug..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> baru terdeteksi"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Untuk mentransfer foto dan media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> rusak"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> rusak. Sentuh untuk memperbaikinya."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> tidak didukung"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Perangkat ini tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini. Sentuh untuk menyiapkan format yang didukung."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> tiba-tiba dicabut"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Lingsirkan <xliff:g id="NAME">%s</xliff:g> sebelum mencabut agar data tidak hilang"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> dicabut"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Memungkinkan aplikasi membaca sesi pemasangan. Tindakan ini memungkinkannya melihat detail tentang pemasangan paket aktif."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"minta pasang paket"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Mengizinkan aplikasi meminta pemasangan paket."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Sentuh dua kali untuk mengontrol perbesar/perkecil"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Ketuk dua kali untuk kontrol perbesar/perkecil"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Tidak dapat menambahkan widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Buka"</string>
<string name="ime_action_search" msgid="658110271822807811">"Telusuri"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Layanan penentu peringkat notifikasi"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN diaktifkan"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN diaktifkan oleh <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Sentuh untuk mengelola jaringan."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Tersambung ke <xliff:g id="SESSION">%s</xliff:g>. Sentuh untuk mengelola jaringan."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Ketuk untuk mengelola jaringan."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Tersambung ke <xliff:g id="SESSION">%s</xliff:g>. Ketuk untuk mengelola jaringan."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Menyambungkan VPN selalu aktif..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN selalu aktif tersambung"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Kesalahan VPN selalu aktif"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Sentuh untuk mengonfigurasi"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Pilih file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Tidak ada file yang dipilih"</string>
<string name="reset" msgid="2448168080964209908">"Setel ulang"</string>
<string name="submit" msgid="1602335572089911941">"Kirim"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode mobil diaktifkan"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Sentuh untuk keluar dari mode mobil."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering (Penambatan) atau hotspot aktif"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Sentuh untuk menyiapkan."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Kembali"</string>
<string name="next_button_label" msgid="1080555104677992408">"Selanjutnya"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Lewati"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Tambahkan akun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Tambah"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Kurangi"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> sentuh lama."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Geser ke atas untuk menambah dan ke bawah untuk mengurangi."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tambah menit"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Kurangi menit"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Penyimpanan USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Peringatan penggunaan data"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Sentuh utk mlht pnggnaan & stln."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Batas data 2G-3G terlampaui"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Batas data 4G terlampaui"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Batas data seluler terlampaui"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Batas data Wi-Fi terlampaui"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> melebihi batas yang ditentukan."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data latar belakang dibatasi"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Sentuh utk mnghapus pembatasan."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sertifikat keamanan"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sertifikat ini valid."</string>
<string name="issued_to" msgid="454239480274921032">"Diterbitkan ke:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Pilih tahun"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> dihapus"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Kantor <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Untuk melepas pin layar ini, sentuh dan tahan tombol Kembali."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Untuk melepas pin layar ini, sentuh lama tombol Ringkasan."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Pin dipasang ke aplikasi. Melepas pin tidak diizinkan di perangkat ini."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Layar disematkan"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Layar dicopot sematannya"</string>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index 5cc68da..fd80c84 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Sækja innihald glugga"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kanna innihald glugga sem þú ert að nota."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Kveikja á snertikönnun"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Snert atriði verða lesin upphátt og hægt er að kanna skjáinn með bendingum."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Kveikja á auknu vefaðgengi"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Hægt er að setja upp skriftur til að bæta aðgengi að efni forrits."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Fylgjast með texta sem þú slærð inn"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Sláðu inn PUK-númerið og nýtt PIN-númer"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-númer"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nýtt PIN-númer"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Snertu og sláðu inn aðgangsorð"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Sláðu inn aðgangsorðið til að opna"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Sláðu inn PIN-númer til að opna"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Rangt PIN-númer."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> klukkustundir</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"núna"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> mín.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> mín.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> klst.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> klst.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ár</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ár</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> mín.</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> mín.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> klst.</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> klst.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">eftir <xliff:g id="COUNT_1">%d</xliff:g> ár</item>
+ <item quantity="other">eftir <xliff:g id="COUNT_1">%d</xliff:g> ár</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Vandamál með myndskeið"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Þetta myndskeið er ekki gjaldgengt fyrir straumspilun í þessu tæki."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Ekki er hægt að spila þetta myndskeið."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Sumir kerfiseiginleikar kunna að vera óvirkir"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Ekki nægt geymslurými fyrir kerfið. Gakktu úr skugga um að 250 MB séu laus og endurræstu."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> er opið"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Snertu til að fá frekari upplýsingar eða loka forritinu."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Í lagi"</string>
<string name="cancel" msgid="6442560571259935130">"Hætta við"</string>
<string name="yes" msgid="5362982303337969312">"Í lagi"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ræsir forrit."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Lýkur ræsingu."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> er í gangi"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Snertu til að skipta yfir í forrit"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Skipta um forrit?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Annað forrit er þegar í gangi og það þarf að stöðva áður en hægt er að ræsa nýtt."</string>
<string name="old_app_action" msgid="493129172238566282">"Til baka í <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Ræsa <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stöðva gamla forritið án þess að vista."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> er yfir minnishámarki"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Minnisgögnum hefur verið safnað, snertu til að deila"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Deila minnisgögnum?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Ferlið <xliff:g id="PROC">%1$s</xliff:g> er komið yfir <xliff:g id="SIZE">%2$s</xliff:g> minnishámark sitt. Þú getur deilt minnisgögnum (heap dump) með þróunaraðilanum. Athugaðu að minnisgögnin kunna að innihalda allar þær persónuupplýsingar sem forritið hefur aðgang að um þig."</string>
<string name="sendText" msgid="5209874571959469142">"Veldu aðgerð fyrir texta"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi netið er ekki með tengingu við internetið"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Snertu til að sjá valkosti."</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ekki var hægt að tengjast Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" er með lélegt netsamband."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Leyfa tengingu?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Ræsa Wi-Fi Direct. Þetta mun slökkva á Wi-Fi biðlara/aðgangsstað."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Ekki var hægt að ræsa Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Kveikt er á Wi-Fi Direct"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Snertu fyrir stillingar"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Samþykkja"</string>
<string name="decline" msgid="2112225451706137894">"Hafna"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Boðið var sent"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fyrir myndaflutning"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB fyrir MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tengt við USB-aukabúnað"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Snertu til að fá fleiri valkosti."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-villuleit tengd"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Snertu til að slökkva á USB-villuleit."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Tekur við villutilkynningu…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Deila villutilkynningu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deilir villutilkynningu..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nýtt <xliff:g id="NAME">%s</xliff:g> fannst"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Til að flytja myndir og aðrar skrár"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Skemmt <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> er skemmt. Snertu til að laga."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Óstutt <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Þetta tæki styður ekki <xliff:g id="NAME">%s</xliff:g>. Snertu til að setja upp með studdu sniði."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> fjarlægt án fyrirvara"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Aftengdu <xliff:g id="NAME">%s</xliff:g> áður en þú fjarlægir það til að koma í veg fyrir gagnatap"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> fjarlægt"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Leyfir forriti að lesa uppsetningarlotur. Þetta gerir því kleift að sjá upplýsingar um virkar pakkauppsetningar."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"fara fram á uppsetningu pakka"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Leyfir forriti að fara fram á uppsetningu pakka."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Ýttu tvisvar til að fá upp aðdráttarstýringar"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Ekki tókst að bæta græju við."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Áfram"</string>
<string name="ime_action_search" msgid="658110271822807811">"Leita"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Tilkynningaröðun"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN virkjað"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN er virkjað með <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Snertu til að hafa umsjón með netinu."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Tengt við <xliff:g id="SESSION">%s</xliff:g>. Snertu til að hafa umsjón með netinu."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Sívirkt VPN tengist…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Sívirkt VPN tengt"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Villa í sívirku VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Snertu til að stilla"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Velja skrá"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Engin skrá valin"</string>
<string name="reset" msgid="2448168080964209908">"Endurstilla"</string>
<string name="submit" msgid="1602335572089911941">"Senda"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Bílastilling virk"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Snertu til að fara úr bílastillingu."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Kveikt á tjóðrun eða aðgangsstað"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Snertu til að setja upp."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Til baka"</string>
<string name="next_button_label" msgid="1080555104677992408">"Áfram"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Sleppa"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Bæta reikningi við"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Upp"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Niður"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> snertu og haltu."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Strjúktu upp til að hækka og niður til að lækka."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Upp um mínútu"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Niður um mínútu"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-geymsla"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Breyta"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Viðvörun vegna gagnanotkunar"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Snertu fyrir uppl. og stillingar"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Gagnahámarki 2G og 3G náð"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Gagnahámarki 4G náð"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Farsímagagnahámarki náð"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Gagnahámarki Wi-Fi náð"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> yfir tilgreindum mörkum."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Bakgrunnsgögn takmörkuð"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Snertu til að eyða takmörkun."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Öryggisvottorð"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Þetta vottorð er gilt."</string>
<string name="issued_to" msgid="454239480274921032">"Gefið út fyrir:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"Veldu ár"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eytt"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> í vinnu"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Til að taka lásinn af þessari skjámynd skaltu halda inni bakkhnappinum."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Til að taka lásinn af þessari skjámynd skaltu halda inni Yfirliti."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Forritið er fest: Ekki er hægt að losa forrit í þessu tæki."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skjár festur"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skjár opnaður"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index b0b2cb9..75734ba 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperare contenuti della finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Esaminare i contenuti di una finestra con cui interagisci."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Attivare Esplora al tocco"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Gli elementi toccati verranno pronunciati ad alta voce e sarà possibile esplorare lo schermo utilizzando i gesti."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Attivare accessibilità web migliorata"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Potrebbero essere installati script per rendere più accessibili i contenuti delle app."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Osservare il testo digitato"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Inserisci il PUK e il nuovo codice PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codice PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuovo codice PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Tocca per inserire la password"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Inserisci password per sbloccare"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Inserisci PIN per sbloccare"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Codice PIN errato."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 ora</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ora"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> g</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">tra <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="one">tra <xliff:g id="COUNT_0">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">tra <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">tra <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">tra <xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="one">tra <xliff:g id="COUNT_0">%d</xliff:g> g</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">tra <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="one">tra <xliff:g id="COUNT_0">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problemi video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Questo video non è valido per lo streaming su questo dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Impossibile riprodurre il video."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Alcune funzioni di sistema potrebbero non funzionare"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Memoria insufficiente per il sistema. Assicurati di avere 250 MB di spazio libero e riavvia."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> è in esecuzione"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Tocca per ulteriori informazioni o per interrompere l\'app."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annulla"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Avvio applicazioni."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Conclusione dell\'avvio."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> in esecuzione"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Tocca per cambiare applicazione"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Cambiare applicazione?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Un\'altra applicazione già in esecuzione deve essere chiusa prima di poterne avviare un\'altra."</string>
<string name="old_app_action" msgid="493129172238566282">"Torna a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Avvia <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Interrompi la vecchia applicazione senza salvare."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ha superato il limite di memoria"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Dump dell\'heap raccolto; tocca per condividere"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Condividere il dump dell\'heap?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Il processo <xliff:g id="PROC">%1$s</xliff:g> ha superato il suo limite di memoria pari a <xliff:g id="SIZE">%2$s</xliff:g>. È disponibile un dump dell\'heap che puoi condividere con lo sviluppatore. Presta attenzione: questo dump dell\'heap può contenere tue informazioni personali a cui l\'applicazione ha accesso."</string>
<string name="sendText" msgid="5209874571959469142">"Scegli un\'azione per il testo"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Connessione Wi-Fi priva di accesso Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Tocca per visualizzare opzioni"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossibile connettersi alla rete Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ha una connessione Internet debole."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Consentire la connessione?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Avvia Wi-Fi Direct. Verrà disattivato il client/hotspot Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Avvio di Wi-Fi Direct non riuscito."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct è attivo"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Tocca per le impostazioni"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accetto"</string>
<string name="decline" msgid="2112225451706137894">"Rifiuto"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invito inviato"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB per il trasferimento di foto"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB per la modalità MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Collegato a un accessorio USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Tocca per visualizzare più opzioni."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Debug USB collegato"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Tocca per disattivare il debug USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Recupero della segnalazione di bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Condividere la segnalazione di bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Condivisione della segnalazione di bug…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nuova <xliff:g id="NAME">%s</xliff:g> rilevata"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Per trasferire foto e altri file"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> danneggiata"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> è danneggiata. Tocca per risolvere."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> non supportata"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Il dispositivo non supporta questo tipo di <xliff:g id="NAME">%s</xliff:g>. Tocca per configurarla in un formato supportato."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Rimozione imprevista della <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Per evitare di perdere dati, smonta la <xliff:g id="NAME">%s</xliff:g> prima di rimuoverla"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> rimossa"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Consente a un\'applicazione di leggere le sessioni di installazione. L\'app può conoscere i dettagli sulle installazioni di pacchetti attive."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"richiesta di pacchetti di installazione"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Consente a un\'applicazione di richiedere l\'installazione di pacchetti."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Tocca due volte per il comando dello zoom"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tocca due volte per il comando dello zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Aggiunta del widget non riuscita."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Vai"</string>
<string name="ime_action_search" msgid="658110271822807811">"Cerca"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Servizio di classificazione delle notifiche"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN attiva"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN attivata da <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Tocca per gestire la rete."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Collegata a <xliff:g id="SESSION">%s</xliff:g>. Tocca per gestire la rete."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tocca per gestire la rete."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Collegata a <xliff:g id="SESSION">%s</xliff:g>. Tocca per gestire la rete."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Connessione a VPN sempre attiva…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre attiva connessa"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Errore VPN sempre attiva"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Tocca per configurare"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Scegli file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nessun file è stato scelto"</string>
<string name="reset" msgid="2448168080964209908">"Reimposta"</string>
<string name="submit" msgid="1602335572089911941">"Invia"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modalità automobile attivata"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Tocca per uscire dalla modalità automobile."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering oppure hotspot attivo"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Tocca per configurare."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Indietro"</string>
<string name="next_button_label" msgid="1080555104677992408">"Avanti"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignora"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Aggiungi account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumenta"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Riduci"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Tocca e tieni premuto il numero <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Scorri verso l\'alto per aumentare il valore e verso il basso per diminuirlo."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumenta minuti"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Riduci minuti"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Archivio USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Modifica"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avviso sull\'utilizzo dei dati"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Mostra utilizzo e impostazioni."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite di dati 2G-3G raggiunto"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite di dati 4G raggiunto"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite dati cellulari raggiunto"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite dati Wi-Fi superato"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> oltre il limite specificato."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dati in background limitati"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Tocca per rimuovere restrizione."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificato di sicurezza"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Questo certificato è valido."</string>
<string name="issued_to" msgid="454239480274921032">"Rilasciato a:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Seleziona anno"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminato"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> lavoro"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Per sbloccare questa schermata, tocca e tieni premuta l\'opzione Indietro."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Per sbloccare questa schermata, tocca e tieni premuta l\'opzione Panoramica."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'app è bloccata. Su questo dispositivo non è consentito lo sblocco."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Schermata bloccata"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Schermata sbloccata"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 759d9b4..3059a49 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -269,7 +269,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"פריטים שנגעת בהם ייאמרו בקול וניתן לנווט במסך באמצעות תנועות."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"הפעלה של גישה משופרת לאינטרנט"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ייתכן שסקריפטים יותקנו על מנת להקל את הגישה אל תוכן של אפליקציות."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"הצגת טקסט בזמן הקלדה"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"הקלד את קוד ה-PUK וקוד ה-PIN החדש"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"קוד PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"קוד PIN חדש"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"גע כדי להקליד את הסיסמה"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"הקלד סיסמה לביטול הנעילה"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"הקלד קוד PIN לביטול הנעילה"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"קוד PIN שגוי"</string>
@@ -873,14 +875,54 @@
<item quantity="one">שעה אחת</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"עכשיו"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> דקות</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> דקות</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> דקות</item>
+ <item quantity="one">דקה <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> שעות</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> שעות</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> שעות</item>
+ <item quantity="one">שעה <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> ימים</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> ימים</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ימים</item>
+ <item quantity="one">יום <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> שנים</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> שנים</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> שנים</item>
+ <item quantity="one">שנה <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="two">בעוד <xliff:g id="COUNT_1">%d</xliff:g> דקות</item>
+ <item quantity="many">בעוד <xliff:g id="COUNT_1">%d</xliff:g> דקות</item>
+ <item quantity="other">בעוד <xliff:g id="COUNT_1">%d</xliff:g> דקות</item>
+ <item quantity="one">בעוד דקה <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="two">בעוד <xliff:g id="COUNT_1">%d</xliff:g> שעות</item>
+ <item quantity="many">בעוד <xliff:g id="COUNT_1">%d</xliff:g> שעות</item>
+ <item quantity="other">בעוד <xliff:g id="COUNT_1">%d</xliff:g> שעות</item>
+ <item quantity="one">בעוד שעה <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="two">בעוד <xliff:g id="COUNT_1">%d</xliff:g> ימים</item>
+ <item quantity="many">בעוד <xliff:g id="COUNT_1">%d</xliff:g> ימים</item>
+ <item quantity="other">בעוד <xliff:g id="COUNT_1">%d</xliff:g> ימים</item>
+ <item quantity="one">בעוד יום <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="two">בעוד <xliff:g id="COUNT_1">%d</xliff:g> שנים</item>
+ <item quantity="many">בעוד <xliff:g id="COUNT_1">%d</xliff:g> שנים</item>
+ <item quantity="other">בעוד <xliff:g id="COUNT_1">%d</xliff:g> שנים</item>
+ <item quantity="one">בעוד שנה <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"בעיה בווידאו"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"סרטון זה אינו חוקי להעברה כמדיה זורמת למכשיר זה."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"לא ניתן להפעיל סרטון זה."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ייתכן שפונקציות מערכת מסוימות לא יפעלו"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"אין מספיק שטח אחסון עבור המערכת. ודא שיש לך שטח פנוי בגודל 250MB התחל שוב."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> פועל"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"גע לקבלת מידע נוסף או כדי לעצור את האפליקציה."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"אישור"</string>
<string name="cancel" msgid="6442560571259935130">"ביטול"</string>
<string name="yes" msgid="5362982303337969312">"אישור"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"מפעיל אפליקציות."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"מסיים אתחול."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> פועל"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"גע כדי לעבור לאפליקציה"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"להחליף אפליקציות?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"אפליקציה אחרת כבר פועלת ועליך לעצור אותה לפני שתוכל להפעיל אפליקציה חדשה."</string>
<string name="old_app_action" msgid="493129172238566282">"חזור אל <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"הפעל את <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"עצור את האפליקציה הישן ללא שמירה."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> חורג מהגבלת הזיכרון"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"נתונים על Dump של ערימה נאספו. גע כדי לשתף"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"האם לשתף את נתוני ה-Dump של הערימה?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"התהליך <xliff:g id="PROC">%1$s</xliff:g> חרג ממגבלת זיכרון התהליך שלו, בגודל <xliff:g id="SIZE">%2$s</xliff:g>. נתונים על Dump של ערימה זמינים לך לשיתוף עם המפתח של התהליך. היזהר: ה-Dump של הערימה יכול להכיל מידע אישי הזמין לאפליקציה."</string>
<string name="sendText" msgid="5209874571959469142">"בחירת פעולה לביצוע עם טקסט"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"אין ל-Wi-Fi גישה לאינטרנט"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"גע להצגת אפשרויות"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"אין אפשרות להתחבר ל-Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" אינו מחובר היטב לאינטרנט."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"האם להתיר את החיבור?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"הפעל Wi-Fi ישיר. פעולה זו תכבה את הנקודה לשיתוף אינטרנט ב-Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"לא ניתן להפעיל Wi-Fi ישיר"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ישיר מופעל"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"גע עבור הגדרות"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"קבל"</string>
<string name="decline" msgid="2112225451706137894">"דחה"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ההזמנה נשלחה"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB להעברת תמונות"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB ל-MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"מחובר לאביזר USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"גע להצגת עוד אפשרויות."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"ניפוי באגים של USB מחובר"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"גע כדי להשבית ניפוי באגים בהתקן ה-USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"עיבוד דוח על באג..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"האם לשתף דוח על באג?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"שיתוף דוח על באג…"</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"זוהה <xliff:g id="NAME">%s</xliff:g> חדש"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"להעברת תמונות ומדיה"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> פגום"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> פגום. גע כדי לתקן."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> לא נתמך"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"המכשיר הזה אינו תומך ב-<xliff:g id="NAME">%s</xliff:g> הזה. גע כדי להגדיר בפורמט נתמך."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> הוסר באופן בלתי צפוי"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"בטל טעינה של <xliff:g id="NAME">%s</xliff:g> לפני הסרתו כדי למנוע אובדן נתונים"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> הוסר"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"מאפשר לאפליקציה לקרוא הפעלות התקנה. הרשאה זו מאפשרת לה לראות פרטים על התקנות פעילות של חבילות."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"בקשה להתקנת חבילות"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"מתיר לאפליקציה לבקש התקנה של חבילות."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"גע פעמיים לבקרת מרחק מתצוגה"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"הקש פעמיים לבקרת מרחק מתצוגה"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"לא ניתן להוסיף widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"התחל"</string>
<string name="ime_action_search" msgid="658110271822807811">"חפש"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"שירות של דירוג הודעות"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN מופעל"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN מופעל על ידי <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"גע כדי לנהל את הרשת."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"מחובר אל <xliff:g id="SESSION">%s</xliff:g>. גע כדי לנהל את הרשת."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"הקש כדי לנהל את הרשת."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"מחובר אל <xliff:g id="SESSION">%s</xliff:g>. הקש כדי לנהל את הרשת."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ה-VPN שמופעל תמיד, מתחבר..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ה-VPN שפועל תמיד, מחובר"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"שגיאת VPN שמופעל תמיד"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"גע כדי להגדיר"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"בחר קובץ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"לא נבחר קובץ"</string>
<string name="reset" msgid="2448168080964209908">"איפוס"</string>
<string name="submit" msgid="1602335572089911941">"שלח"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"מצב מכונית מופעל"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"גע כדי לצאת ממצב מכונית."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"שיתוף אינטרנט פעיל"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"גע כדי להגדיר."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"הקודם"</string>
<string name="next_button_label" msgid="1080555104677992408">"הבא"</string>
<string name="skip_button_label" msgid="1275362299471631819">"דלג"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"הוסף חשבון"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"הוסף"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"הפחת"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> גע והחזק."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"הסט למעלה כדי להוסיף ולמטה כדי להפחית."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"הוסף דקה"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"הפחת דקה"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"אחסון USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ערוך"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"אזהרת שימוש בנתונים"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"גע כדי להציג נתוני שימוש והגדרות."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"הגעת למגבלת הנתונים של 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"הגעת למגבלת הנתונים של 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"הגעת למגבלת הנתונים הסלולריים"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"אירעה חריגה ממגבלת הנתונים של Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> מעל למגבלה שצוינה."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"נתוני הרקע מוגבלים"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"גע כדי להסיר את ההגבלה."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"אישור אבטחה"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"אישור זה תקף."</string>
<string name="issued_to" msgid="454239480274921032">"הוקצה ל:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"בחר שנה"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> נמחק"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"עבודה <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"כדי לבטל את הצמדת המסך הזה, לחץ לחיצה ממושכת על הלחצן \'הקודם\'."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"כדי לבטל את הקפאת המסך הזה, גע נגיעה ממושכת ב\'סקירה\'."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"האפליקציה מוצמדת: ביטול ההצמדה אסור במכשיר הזה."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"המסך מוצמד"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"הצמדת המסך בוטלה"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 94ae816..984e24b 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"タップしたアイテムが読み上げられ、ジェスチャーで画面のガイドを利用できます。"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ウェブアクセシビリティ拡張の有効化"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"スクリプトをインストールしてアプリコンテンツにアクセスしやすくできます。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"入力テキストの監視"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUKと新しいPINコードを入力"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUKコード"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新しいPINコード"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"タップしてパスワードを入力"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ロックを解除するにはパスワードを入力"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ロックを解除するにはPINを入力"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PINコードが正しくありません。"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1時間</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"現在"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>分</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>分</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>時間</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>時間</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>日</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>日</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>年</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>年</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>分</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>分</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>時間</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>時間</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>日</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>日</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>年</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>年</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"動画の問題"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"この動画はこの端末にストリーミングできません。"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"この動画を再生できません。"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"一部のシステム機能が動作しない可能性があります"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"システムに十分な容量がありません。250MBの空き容量を確保して再起動してください。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g>を実行しています"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"タップすると詳細が表示されるか、アプリが停止します。"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"キャンセル"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"アプリを起動しています。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ブートを終了しています。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>を実行中"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"タップしてアプリを切り替えます"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"アプリを切り替えますか?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"別のアプリが既に実行中です。新しいアプリを起動する前に実行中のアプリを停止してください。"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>に戻る"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>を起動"</string>
<string name="new_app_description" msgid="1932143598371537340">"古いアプリを保存せずに停止します。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>はメモリの上限を超えました"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"ヒープダンプが収集されました。タップして共有できます"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ヒープダンプを共有しますか?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"プロセス<xliff:g id="PROC">%1$s</xliff:g>はプロセスメモリの上限<xliff:g id="SIZE">%2$s</xliff:g>を超えました。ヒープダンプをデベロッパーと共有できます。このヒープダンプには、アプリがアクセスできる個人情報が含まれている可能性があるのでご注意ください。"</string>
<string name="sendText" msgid="5209874571959469142">"アプリケーションを選択"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fiはインターネットに接続していません"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"タップするとオプションが表示されます"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fiに接続できませんでした"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" はインターネット接続に問題があります。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"接続を許可しますか?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Directを開始します。これによりWi-Fiクライアント/アクセスポイントがOFFになります。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Directを開始できませんでした。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi DirectはONです"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"設定を表示するにはタップしてください"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"同意する"</string>
<string name="decline" msgid="2112225451706137894">"同意しない"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"招待状を送信しました"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USBを写真転送に使用"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USBをMIDIに使用"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USBアクセサリを接続しました"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"タップしてその他のオプションを表示"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USBデバッグが接続されました"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"タップしてUSBデバッグを無効化"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"バグレポートを取得しています…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"バグレポートを共有しますか?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"バグレポートの共有中…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"新しい<xliff:g id="NAME">%s</xliff:g>が検出されました"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"写真などのメディア転送用"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>は破損しています"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g>は破損しています。タップして解決してください。"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"対応していない<xliff:g id="NAME">%s</xliff:g>です"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"この端末はこの<xliff:g id="NAME">%s</xliff:g>に対応していません。タップして、対応している形式でセットアップしてください。"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>が不適切に取り外されました"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"データの喪失を防ぐため<xliff:g id="NAME">%s</xliff:g>を取り外す前にマウントを解除してください。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g>が取り外されました"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"インストールセッションの読み取りをアプリに許可します。これにより、アプリはアクティブパッケージのインストールに関する詳細情報を参照できるようになります。"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"インストールパッケージのリクエスト"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"パッケージのインストールをリクエストすることをアプリケーションに許可します。"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ダブルタップでズームコントロール"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"ダブルタップでズームします"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ウィジェットを追加できませんでした。"</string>
<string name="ime_action_go" msgid="8320845651737369027">"移動"</string>
<string name="ime_action_search" msgid="658110271822807811">"検索"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"通知ランカー サービス"</string>
<string name="vpn_title" msgid="19615213552042827">"VPNが有効になりました"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPNが<xliff:g id="APP">%s</xliff:g>により有効化されました"</string>
- <string name="vpn_text" msgid="3011306607126450322">"タップしてネットワークを管理します。"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>に接続しました。ネットワークを管理するにはタップしてください。"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"ネットワークを管理するにはタップしてください。"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g>に接続しました。ネットワークを管理するにはタップしてください。"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPNに常時接続しています…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPNに常時接続しました"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"常時接続VPNのエラー"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"タップして設定してください"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ファイルを選択"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ファイルが選択されていません"</string>
<string name="reset" msgid="2448168080964209908">"リセット"</string>
<string name="submit" msgid="1602335572089911941">"送信"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"運転モード中"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"タップすると運転モードを終了します"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"テザリングまたはアクセスポイントが有効です"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"タップしてセットアップします。"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"戻る"</string>
<string name="next_button_label" msgid="1080555104677992408">"次へ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"スキップ"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"アカウントを追加"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"進めます"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"戻します"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g>回タップして押し続けます。"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"上にスライドで進み、下にスライドで戻ります。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"1分進めます"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"1分戻します"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USBストレージ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"編集"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"データ使用の警告"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"タップして使用状況と設定を表示します。"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G~3Gデータの上限に達しました"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4Gデータの上限に達しました"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"モバイルデータの上限に達しました"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fiデータの上限を超えました"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"指定した上限を<xliff:g id="SIZE">%s</xliff:g>超えました。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"バックグラウンドデータに上限あり"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"タップして制限を削除します。"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"セキュリティ証明書"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"証明書は有効です。"</string>
<string name="issued_to" msgid="454239480274921032">"発行先:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"年を選択"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g>を削除しました"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"仕事の<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"この画面の固定を解除するには [戻る] を押し続けます。"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"この画面の固定を解除するには[最近]を押し続けます。"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"アプリは固定されています。この端末では固定を解除できません。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"画面を固定しました"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"画面固定を解除しました"</string>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index ce2c138..d7cfd0b 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ის ერთეულები, რომლებსაც შეეხებით, წაიკითხება ხმამაღლა და ეკრანის კვლევა შეიძლება ჟესტების გამოყენებით."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ვებზე გამარტივებული წვდომის დამატებითი შესაძლებლობების ჩართვა"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"შესაძლებელია სკრიპტების ინსტალაცია აპის კონტენტის წვდომადობის უზრუნველსაყოფად."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"თქვენ მიერ აკრეფილ ტექსტზე დაკვირვება"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"დაბეჭდეთ PUK კოდი და ახალი PIN კოდი."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK კოდი"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ახალი PIN კოდი"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384">"შეეხეთ "<font size="17">"-ს პაროლის"</font>" დასაბეჭდად."</string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"განსაბლოკად აკრიფეთ პაროლი"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"განსაბლოკად აკრიფეთ PIN კოდი"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"არასწორი PIN კოდი."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 საათი</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ახლა"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> წთ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> წთ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> სთ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> სთ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> დღე</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> დღე</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> წ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> წ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> წუთში</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> წუთში</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> საათში</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> საათში</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> დღეში</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> დღეში</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> წელში</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> წელში</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"პრობლემები ვიდეოსთან"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ეს ვიდეო არ გამოდგება ამ მოწყობილობაზე სტრიმინგისთვის."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ვიდეოს დაკვრა არ არის შესაძლებელი."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"სისტემის ზოგიერთმა ფუნქციამ შესაძლოა არ იმუშავოს"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"სისტემისათვის საკმარისი საცავი არ არის. დარწმუნდით, რომ იქონიოთ სულ მცირე 250 მბაიტი თავისუფალი სივრცე და დაიწყეთ ხელახლა."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> გაშვებულია"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"შეეხეთ მეტი ინფორმაციისათვის ან აპის შესაწყვეტად."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"გაუქმება"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"აპების ჩართვა"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ჩატვირთვის დასასრული."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> გაშვებულია"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"აპზე გადასართველად შეეხეთ"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"გსურთ, აპების გადართვა?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"სხვა აპი არის უკვე გაშვებული, რომელიც უნდა შეჩერდეს ახლის დაწყებამდე."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>-თან დაბრუნება"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"დასაწყისი <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"შეაჩერე ძველი აპი ცვლილებების შენახვის გარეშე."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>-მა გადააჭარბა მეხსიერების ლიმიტს"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"გროვის ამონაწერი მომზადდა; შეეხეთ გასაზიარებლად"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"გავაზიაროთ გროვის ამონაწერი?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"პროცესმა <xliff:g id="PROC">%1$s</xliff:g> გადააჭარბა საპროცესო მეხსიერების <xliff:g id="SIZE">%2$s</xliff:g>-იან ლიმიტს. გროვის ამონაწერი ხელმისაწვდომია მის დეველოპერთან გასაზიარებლად. ფრთხილად: გროვის ამონაწერი შეიძლება შეიცავდეს ნებისმიერ თქვენს პირად ინფორმაციას, რომელზეც ამ აპლიკაციას წვდომა აქვს."</string>
<string name="sendText" msgid="5209874571959469142">"შეარჩიეთ ქმედება ტექსტისთვის."</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-ს არ აქვს ინტერნეტზე წვდომა"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"პარამეტრებისთვის შეეხეთ"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-თან დაკავშირება ვერ მოხერხდა"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" აქვს ცუდი ინტერნეტ კავშირი."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"გსურთ კავშირის დაშვება?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ჩართეთ Wi-Fi Direct. ეს გამოიწვევს Wi-Fi კლიენტისა/უსადენო ქსელის გამორთვას."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ვერ მოხერხდა Wi-Fi Direct-ის გაშვება."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ჩართულია"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"პარამეტრებისთვის შეეხეთ"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"მიღება"</string>
<string name="decline" msgid="2112225451706137894">"უარყოფა"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"მოწვევა გაგზავნილია"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB ფოტოების გადაცემისთვის"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI-სთვის"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"დაკავშირებულია USB აქსესუართან"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"შეეხეთ დამატებითი პარამეტრებისთვის."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB გამართვა შეერთებულია"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"შეეხეთ, რათა შეწყვიტოთ USB-ის გამართვა."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"მიმდინარეობს ხარვეზის შესახებ ანგარიშის შექმნა…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"გსურთ ხარვეზის შესახებ ანგარიშის გაზიარება?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"მიმდინარეობს ხარვეზის შესახებ ანგარიშის გაზიარება…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"აღმოჩენილია ახალი <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ფოტოებისა და მედიის გადასატანად"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"დაზიანებული <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> დაზიანებულია. შეეხეთ ხარვეზის აღმოსაფხვრელად."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"მხარდაუჭერელი <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ეს <xliff:g id="NAME">%s</xliff:g> მხარდაჭერილი არ არის ამ მოწყობილობაზე. შეეხეთ მხარდაჭერილ ფორმატში დასაყენებლად."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"მოულოდნელად მოხდა <xliff:g id="NAME">%s</xliff:g>-ის ამოღება"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"მონაცემთა დაკარგვის თავიდან ასაცილებლად, ფიზიკურად ამოღებამდე, სისტემურად მოხსენით <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ამოღებულია"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"საშუალებას აძლევს აპლიკაციას წაიკითხოს ინსტალაციის სესიები. ამით მას საშუალება აქვს იხილოს პაკეტის აქტიური ინსტალაციები."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"პაკეტების ინსტალაციის მოთხოვნა"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"აპლიკაციას შეეძლება მოითხოვოს პაკეტების ინსტალაცია."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"მასშტაბის მართვისთვის შეეხეთ ორჯერ."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"მასშტაბის ცვლილებისთვის შეეხეთ ორჯერ"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ვერ დაემატა ვიჯეტი."</string>
<string name="ime_action_go" msgid="8320845651737369027">"გადასვლა"</string>
<string name="ime_action_search" msgid="658110271822807811">"ძებნა"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"შეტყობინებების მნიშვნელობის დონის შეფასების სერვისი"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN გააქტიურებულია"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN გააქტიურებულია <xliff:g id="APP">%s</xliff:g>-ის მიერ"</string>
- <string name="vpn_text" msgid="3011306607126450322">"შეეხეთ ქსელის სამართავად."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"მიერთებულია <xliff:g id="SESSION">%s</xliff:g>-ზე. შეეხეთ ქსელის სამართავად."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"შეეხეთ ქსელის სამართავად."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"მიერთებულია <xliff:g id="SESSION">%s</xliff:g>-ზე. შეეხეთ ქსელის სამართავად."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"მიმდინარეობს მუდმივად ჩართული VPN-ის მიერთება…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"მუდმივად ჩართული VPN-ის მიერთებულია"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"შეცდომა მუდამ VPN-ზე"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"კონფიგურაციისთვის შეეხეთ"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ფაილის არჩევა"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ფაილი არჩეული არ არის"</string>
<string name="reset" msgid="2448168080964209908">"საწყისზე დაბრუნება"</string>
<string name="submit" msgid="1602335572089911941">"გაგზავნა"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"მანქანის რეჟიმი ჩართულია"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"შეეხეთ მანქანის რეჟიმიდან გამოსასვლელად."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ინტერნეტის მიერთება ან უსადენო ქსელი აქტიურია."</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"შესაქმნელად შეეხეთ"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"უკან"</string>
<string name="next_button_label" msgid="1080555104677992408">"მომდევნო"</string>
<string name="skip_button_label" msgid="1275362299471631819">"გამოტოვება"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ანგარიშის დამატება &raquo;"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"გაზრდა"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"შემცირება"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g>-ს შეეხეთ და არ აუშვათ."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"აასრიალეთ ზემოთ გასაზრდელად და ჩაასრიალეთ ქვემოთ შესამცირებლად."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ერთი წუთით წინ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"წუთების შემცირება"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB მეხსიერება"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"რედაქტირება"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ინტერნეტის გამოყენების გაფრთხილება"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"შეეხეთ მოხმარებისა და პარამეტრების სანახავად."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G მონაცემთა ლიმიტი ამოიწურა"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G მონაცემთა ლიმიტი ამოიწურა"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ფიჭურ მონაცემთა ლიმიტი ამოიწურა"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi‑Fi მონაცემთა ლიმიტი გადაჭარბებულია"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"ლიმიტი გადაჭარბებულია <xliff:g id="SIZE">%s</xliff:g>-ით."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"მონაცემთა ფონური გადაცემა შეზღუდულია"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"შეეხეთ შეზღუდვის მოსახსნელად"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"უსაფრთხოების სერტიფიკატი"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ეს სერტიფიკატი სწორია."</string>
<string name="issued_to" msgid="454239480274921032">"მიეცა:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"აირჩიეთ წელი"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> წაიშალა"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"სამსახური <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ამ ეკრანის მიმაგრების გასაუქმებლად, ხანგრძლივად შეეხეთ ღილაკს „უკან“."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ამ ეკრანისთვის მიმაგრების გასაუქმებლად, შეეხეთ და არ აუშვათ „მიმოხილვა“-ს."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"აპი მიმაგრებულია: მიმაგრების მოხსნა არ არის ნებადართული ამ მოწყობილობაზე."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ეკრანი დაფიქსირდა"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ეკრანს ფიქსაცია მოეხსნა"</string>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index 3c79f2a..41becf5 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Түртілген элементтер дауыстап айтылады және экранды қимылдар арқылы басқару мүмкін болады."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ғаламторға кірудің жетілдірілген әдісін қосу"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Қолданба мазұнына кіруді жеңілдету үшін скрипт орнатылуы мүмкін."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Терілген мәтінді тексеру"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK және жаңа PIN кодтарын теріңіз"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK коды"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Жаңа PIN коды"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Құпия сөзді теру үшін түртіңіз"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Бекітпесін ашу үшін құпия сөзді теріңіз"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Бекітпесін ашу үшін PIN кодын теріңіз"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Қате PIN код"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 сағат</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"қазір"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>м</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>м</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>с</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>с</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>к</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>к</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ж</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ж</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>м</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>м</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>с</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>с</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>к</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>к</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ж</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ж</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Бейне ақаулығы"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Бұл бейне осы құрылғыға ағынын жіберуге жарамсыз."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Бұл бейне таспаны ойната алмайды."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Жүйенің кейбір функциялары жұмыс істемеуі мүмкін"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Жүйе үшін жад жеткіліксіз. 250 МБ бос орын бар екенін тексеріп, қайта іске қосыңыз."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> қосылған"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Басқа ақпаратты қарау үшін немесе қолданбаны тоқтату үшін түртіңіз."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Жарайды"</string>
<string name="cancel" msgid="6442560571259935130">"Бас тарту"</string>
<string name="yes" msgid="5362982303337969312">"Жарайды"</string>
@@ -965,16 +992,15 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңартылуда…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android іске қосылуда…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Қойманы оңтайландыру."</string>
- <!-- no translation found for android_upgrading_notification_title (1619393112444671028) -->
- <skip />
- <!-- no translation found for android_upgrading_notification_body (5761201379457064286) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android жаңартылуда"</string>
+ <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңарту аяқталғанға дейін кейбір қолданбалар дұрыс жұмыс істемеуі мүмкін"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ішінен <xliff:g id="NUMBER_0">%1$d</xliff:g> қолданба оңтайландырылуда."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> дайындалуда."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Қолданбалар іске қосылуда."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Қосуды аяқтауда."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> қосылған"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Қолданбаға ауысу үшін түртіңіз"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Қолданбаларды ауыстыру керек пе?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Жаңасын іске қосу алдында тоқтату керек басқа қолданба әлдеқашан жұмыс істеп жатыр."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> қолданбасына оралу"</string>
@@ -982,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> қолданбасын қосу"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ескі қолданбаны сақтаусыз тоқтату."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> жад шегінен асты"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Үйінді дамп жиналды; бөлісу үшін басыңыз"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Үйінді дамппен бөлісу қажет пе?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> процесі <xliff:g id="SIZE">%2$s</xliff:g> процесс жады шегінен асып кетті. Үйінді дамп оның әзірлеушісімен бөлісуге қолжетімді. Абай болыңыз: бұл үйінді дампта бағдарлама кіре алатын кейбір жеке ақпараттарыңыз болуы мүмкін."</string>
<string name="sendText" msgid="5209874571959469142">"Мәтін үшін әрекет таңдау"</string>
@@ -1018,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi желісінде интернет байланысы жоқ"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Опцияларға кіру үшін түртіңіз"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi желісіне қосыла алмады"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" Интернет байланысы нашар."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Қосылуға рұқсат ету керек пе?"</string>
@@ -1028,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Тікелей байланысын бастау. Бұл Wi-Fi клиент/хот-спотты өшіреді."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Тікелей байланысын қоса алмады."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Тікелей Wi-Fi қосулы"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Параметрлер сенсоры"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Қабылдау"</string>
<string name="decline" msgid="2112225451706137894">"Бас тарту"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Шақыру жіберілді"</string>
@@ -1080,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Фотосуретті тасымалдауға арналған USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI режиміне арналған USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB жабдығына қосылған"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Қосымша параметрлер үшін түртіңіз."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB жөндеу қосылған"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB жөндеуді өшіру үшін түртіңіз."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Қате туралы есеп алынуда…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Қате туралы есепті бөлісу керек пе?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Қате туралы есеп бөлісілуде…"</string>
@@ -1102,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Жаңа <xliff:g id="NAME">%s</xliff:g> анықталды"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Фотосуреттер мен медиа файлдарын тасымалдау үшін"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Бүлінген <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> бүлінген. Түзету үшін түртіңіз."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Қолданылмайтын <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Бұл құрылғы осы <xliff:g id="NAME">%s</xliff:g> картасын қолдамайды. Қолдау көрсетілетін пішімде орнату үшін түртіңіз."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> кенеттен шығарылды"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Деректер жоғалып қалмауы үшін <xliff:g id="NAME">%s</xliff:g> құрылғысын ажыратып барып, шығару керек"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> жоқ"</string>
@@ -1140,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Қолданбаға орнату сеанстарын оқуға рұқсат етеді. Бұл оған белсенді бума орнатулары туралы мәліметтерді көруге рұқсат етеді."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"орнату бумаларын сұрау"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Қолданбаның бумаларды орнатуға рұқсат сұрауына мүмкіндік береді."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Масштабтауды басқару үшін екі рет түртіңіз"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Виджетті қосу."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Өту"</string>
<string name="ime_action_search" msgid="658110271822807811">"Іздеу"</string>
@@ -1171,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Хабарландыруларды жіктеу қызметі"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN белсенді"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"ВЖЭ <xliff:g id="APP">%s</xliff:g> арқылы қосылған"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Желіні басқару үшін түрту."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> жалғанған. Желіні басқару үшін түрту."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Әрқашан қосылған ВЖЖ жалғануда…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Әрқашан қосылған ВЖЖ жалғанған"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Әрқашан қосылған ВЖЖ қателігі"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Конфигурациялау үшін түрту"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Файлды таңдау"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ешқандай файл таңдалмаған"</string>
<string name="reset" msgid="2448168080964209908">"Қайта реттеу"</string>
<string name="submit" msgid="1602335572089911941">"Жіберу"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Автокөлік режимі қосылған"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Автокөлік режимінен шығу үшін түртіңіз."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Тетеринг немесе хотспот қосулы"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Орнату үшін түртіңіз."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Артқа"</string>
<string name="next_button_label" msgid="1080555104677992408">"Келесі"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Аттап өту"</string>
@@ -1217,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Есептік жазба қосу."</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Арттыру"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Азайту"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> түрту және ұстап тұру"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Арттыру үшін жоғары, азайту үшін төмен сырғытыңыз."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Минут арттыру"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Минут арттыру"</string>
@@ -1261,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB жады"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Өзгерту"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Дерекқор қолдануға қатысты ескерту"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Қолданыс және параметрлерді көру үшін түртіңіз."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G деректер шегіне жеттіңіз"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G деректер шегіне жеттіңіз"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Ұялы деректер шегіне жеттіңіз"</string>
@@ -1273,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi дерекқор шектеуінен асып кетті"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Анықталған уақтыттан <xliff:g id="SIZE">%s</xliff:g> асты."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Фондық деректер шектелген"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Шектеуді алу үшін түртіңіз."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Қауіпсіздік сертификаты"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Бұл сертификат жарамды."</string>
<string name="issued_to" msgid="454239480274921032">"Кімге берілген:"</string>
@@ -1489,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"Жыл таңдау"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> жойылды"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Жұмыс <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Осы экранды босату үшін \"Артқа\" түймесін басып тұрыңыз."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Осы экранды босату үшін «Шолу» пәрменін түртіп, ұстап тұрыңыз."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Бағдарлама белгіленді: Бұл құрылғыда белгіні алуға рұқсат берілмейді."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Экран түйрелді"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Экран босатылды"</string>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 862dabc..fde84f4 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ធាតុបានប៉ះនឹងត្រូវបានអានឮៗ អេក្រង់អាចត្រូវបានស្វែងរកដោយប្រើកាយវិការ។"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"បើកការចូលដំណើរការបណ្ដាញដែលបានធ្វើឲ្យប្រសើរ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ស្គ្រីបអាចត្រូវបានដំឡើង ដើម្បីធ្វើឲ្យមាតិកាកម្មវិធីអាចចូលដំណើរការបានកាន់តែច្រើន។"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"មើលអត្ថបទដែលវាយ"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"បញ្ចូលកូដ PUK និង PIN ថ្មី"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"កូដ PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"កូដ PIN ថ្មី"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"ប៉ះ ដើម្បីបញ្ចូលពាក្យសម្ងាត់"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"បញ្ចូលពាក្យសម្ងាត់ ដើម្បីដោះសោ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"បញ្ចូលកូដ PIN ដើម្បីដោះសោ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"កូដ PIN មិនត្រឹមត្រូវ។"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 ម៉ោង</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ឥឡូវនេះ"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ន</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ន</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ម៉</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ម៉</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ថ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ថ</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ឆ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ឆ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">ក្នុងពេល <xliff:g id="COUNT_1">%d</xliff:g>ន</item>
+ <item quantity="one">ក្នុងពេល <xliff:g id="COUNT_0">%d</xliff:g>ន</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">ក្នុងពេល <xliff:g id="COUNT_1">%d</xliff:g>ម៉</item>
+ <item quantity="one">ក្នុងពេល <xliff:g id="COUNT_0">%d</xliff:g>ម៉</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">ក្នុងពេល <xliff:g id="COUNT_1">%d</xliff:g>ថ</item>
+ <item quantity="one">ក្នុងពេល <xliff:g id="COUNT_0">%d</xliff:g>ថ</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">ក្នុងពេល <xliff:g id="COUNT_1">%d</xliff:g>ឆ</item>
+ <item quantity="one">ក្នុងពេល <xliff:g id="COUNT_0">%d</xliff:g>ឆ</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"បញ្ហាវីដេអូ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"វីដេអូនេះមិនត្រឹមត្រូវសម្រាប់ចរន្តចូលឧបករណ៍នេះ។"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"មិនអាចចាក់វីដេអូនេះ។"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"មុខងារប្រព័ន្ធមួយចំនួនអាចមិនដំណើរការ"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"មិនមានទំហំផ្ទុកគ្រប់គ្រាន់សម្រាប់ប្រព័ន្ធ។ សូមប្រាកដថាអ្នកមានទំហំទំនេរ 250MB ហើយចាប់ផ្ដើមឡើងវិញ។"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុងដំណើរការ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"ប៉ះ ដើម្បីមើលព័ត៌មានបន្ថែម ឬបញ្ឈប់កម្មវិធី។"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"យល់ព្រម"</string>
<string name="cancel" msgid="6442560571259935130">"បោះបង់"</string>
<string name="yes" msgid="5362982303337969312">"យល់ព្រម"</string>
@@ -974,7 +1001,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ចាប់ផ្ដើមកម្មវិធី។"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"បញ្ចប់ការចាប់ផ្ដើម។"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> កំពុងដំណើរការ"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ប៉ះ ដើម្បីប្ដូរកម្មវិធី"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ប្ដូរកម្មវិធី?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"កម្មវិធីផ្សេងកំពុងដំណើរការរួចហើយ ដែលតម្រូវឲ្យបញ្ឈប់មុនពេលអ្នកអាចចាប់ផ្ដើមថ្មី។"</string>
<string name="old_app_action" msgid="493129172238566282">"ត្រឡប់ទៅ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -982,7 +1010,8 @@
<string name="new_app_action" msgid="5472756926945440706">"ចាប់ផ្ដើម <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"បញ្ឈប់កម្មវិធីចាស់ដោយមិនរក្សាទុក"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> លើសពីកម្រិតកំណត់មេម៉ូរី"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Heap dump ត្រូវបានប្រមូល ប៉ះដើម្បីចែករំលែក"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ចែករំលែក heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"ដំណើរការ <xliff:g id="PROC">%1$s</xliff:g> បានលើសកម្រិតកំណត់មេម៉ូរីរបស់វាដែលមានទំហំ <xliff:g id="SIZE">%2$s</xliff:g>។ Heap dump មានផ្តល់ជូនដល់អ្នកដើម្បីចែករំលែកជាមួយអ្នកអភិវឌ្ឍន៍របស់វា។ ត្រូវប្រុងប្រយ័ត្ន៖ Heap dump នេះអាចផ្ទុកព័ត៌មានផ្ទាល់ខ្លួនរបស់អ្នកណាមួយ ដែលកម្មវិធីអាចចូលប្រើបាន។"</string>
<string name="sendText" msgid="5209874571959469142">"ជ្រើសសកម្មភាពសម្រាប់អត្ថបទ"</string>
@@ -1018,7 +1047,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi មិនមានអ៊ិនធឺណិតនោះទេ"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ប៉ះដើម្បីទទួលបានជម្រើស"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"មិនអាចតភ្ជាប់វ៉ាយហ្វាយ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" មានការតភ្ជាប់អ៊ីនធឺណិតមិនល្អ។"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"អនុញ្ញាតភ្ជាប់?"</string>
@@ -1028,7 +1058,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ចាប់ផ្ដើមវ៉ាយហ្វាយផ្ទាល់។ វានឹងបិទវ៉ាយហ្វាយហតស្ពត។"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"មិនអាចចាប់ផ្ដើមវ៉ាយហ្វាដោយផ្ទាល់។"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"បើកវ៉ាយហ្វាយផ្ទាល់"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ប៉ះ ដើម្បីកំណត់"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ទទួល"</string>
<string name="decline" msgid="2112225451706137894">"បដិសេធ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"បានផ្ញើលិខិតអញ្ជើញ"</string>
@@ -1080,9 +1111,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB សម្រាប់ការផ្ទេររូបថត"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB សម្រាប់ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"បានភ្ជាប់ឧបករណ៍យូអេសប៊ី"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"ប៉ះដើម្បីបានជម្រើសថែមទៀត។"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"បានភ្ជាប់ការកែកំហុសយូអេសប៊ី"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"ប៉ះ ដើម្បីបិទការកែកំហុសយូអេសប៊ី។"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"កំពុងទទួលយករបាយការណ៍កំហុស…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ចែករំលែករបាយការណ៍កំហុសឬ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"កំពុងចែករំលែករបាយកំហុស…"</string>
@@ -1102,9 +1135,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"បានរកឃើញ <xliff:g id="NAME">%s</xliff:g> ថ្មី"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"សម្រាប់ផ្ទេររូបភាព និងមេឌៀ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> ខូច"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> ខូចហើយ សូមប៉ះដើម្បីដោះស្រាយ។"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> មិនគាំទ្រ"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ឧបករណ៍នេះមិនគាំទ្រ <xliff:g id="NAME">%s</xliff:g> នេះទេ។ សូមប៉ះដើម្បីដំឡើងទម្រង់ដែលគាំទ្រ។"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"បានដក <xliff:g id="NAME">%s</xliff:g> ចេញដោយមិនបានរំពឹងទុក"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ផ្តាច់ <xliff:g id="NAME">%s</xliff:g> មុនពេលដកចេញដើម្បីជៀងវាងការបាត់បង់ទិន្នន័យ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"បានដក <xliff:g id="NAME">%s</xliff:g> ចេញ"</string>
@@ -1140,7 +1175,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ឲ្យកម្មវិធីអានសម័យដំឡើង។ វាអនុញ្ញាតឲ្យឃើញព័ត៌មានលម្អិតអំពីការដំឡើងកញ្ចប់សកម្ម។"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"ស្នើសុំកញ្ចប់ដំឡើង"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"អនុញ្ញាតឲ្យកម្មវិធីស្នើសុំដំឡើងកញ្ចប់ (ឯកសារ/មាតិកា)។"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ប៉ះពីរដង ដើម្បីគ្រប់គ្រងការពង្រីក"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"ប៉ះ ពីរដងដើម្បីពិនិត្យការពង្រីក"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"មិនអាចបន្ថែមធាតុក្រាហ្វិក។"</string>
<string name="ime_action_go" msgid="8320845651737369027">"ទៅ"</string>
<string name="ime_action_search" msgid="658110271822807811">"ស្វែងរក"</string>
@@ -1171,20 +1206,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"សេវាកម្មវាយតម្លៃការជូនដំណឹង"</string>
<string name="vpn_title" msgid="19615213552042827">"បានធ្វើឲ្យ VPN សកម្ម"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"បានធ្វើឲ្យ VPN សកម្មដោយ <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ប៉ះ ដើម្បីគ្រប់គ្រងបណ្ដាញ។"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"បានតភ្ជាប់ទៅ <xliff:g id="SESSION">%s</xliff:g> ។ ប៉ះ ដើម្បីគ្រប់គ្រងបណ្ដាញ។"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"ប៉ះ ដើម្បីគ្រប់គ្រងបណ្ដាញ។"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"បានភ្ជាប់ទៅ <xliff:g id="SESSION">%s</xliff:g> ។ ប៉ះ ដើម្បីគ្រប់គ្រងបណ្ដាញ។"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"បើកការតភ្ជាប់ VPN ជានិច្ច..។"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ភ្ជាប់ VPN ជានិច្ច"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"បើកកំហុស VPN ជានិច្ច"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ប៉ះ ដើម្បីកំណត់រចនាសម្ព័ន្ធ"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ជ្រើសឯកសារ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"គ្មានឯកសារបានជ្រើស"</string>
<string name="reset" msgid="2448168080964209908">"កំណត់ឡើងវិញ"</string>
<string name="submit" msgid="1602335572089911941">"ដាក់ស្នើ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"បានបើករបៀបរថយន្ត"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ប៉ះ ដើម្បីចេញពីរបៀបរថយន្ត។"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ភ្ជាប់ ឬហតស្ពតសកម្ម"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"ប៉ះ ដើម្បីរៀបចំ។"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"ថយក្រោយ"</string>
<string name="next_button_label" msgid="1080555104677992408">"បន្ទាប់"</string>
<string name="skip_button_label" msgid="1275362299471631819">"រំលង"</string>
@@ -1217,7 +1255,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"បន្ថែមគណនី"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"បង្កើន"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"បន្ថយ"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ប៉ះ និងសង្កត់។"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"រុញឡើងលើ ដើម្បីបង្កើន និងចុះក្រោមដើម្បីបន្ថយ។"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"បង្កើននាទី"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"បន្ថយនាទី"</string>
@@ -1261,7 +1300,8 @@
<string name="storage_usb" msgid="3017954059538517278">"ឧបករណ៍ផ្ទុកយូអេសប៊ី"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"កែសម្រួល"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ការព្រមានប្រើទិន្នន័យ"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ប៉ះ ដើម្បីមើលការប្រើ និងការកំណត់។"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"បានដល់ដែនកំណត់ទិន្នន័យ 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"បានដល់ដែនកំណត់ទិន្នន័យ 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"បានដល់ដែនកំណត់ទិន្នន័យចល័ត"</string>
@@ -1273,7 +1313,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"លើសដែនកំណត់ទិន្នន័យវ៉ាយហ្វាយ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> លើដែនកំណត់បានបញ្ជាក់។"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"បានដាក់កម្រិតទិន្នន័យផ្ទៃខាងក្រោយ"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ប៉ះ ដើម្បីលុបការដាក់កម្រិត។"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"វិញ្ញាបនបត្រសុវត្ថិភាព"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"វិញ្ញាបនបត្រនេះត្រឹមត្រូវ។"</string>
<string name="issued_to" msgid="454239480274921032">"បានចេញឲ្យ៖"</string>
@@ -1489,8 +1530,10 @@
<string name="select_year" msgid="7952052866994196170">"ជ្រើសឆ្នាំ"</string>
<string name="deleted_key" msgid="7659477886625566590">"បានលុប <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"កន្លែងធ្វើការ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ដើម្បីមិនខ្ទាស់អេក្រង់នេះ សូមប៉ះ ថយក្រោយ ឲ្យជាប់។"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ដើម្បីមិនភ្ជាប់អេក្រង់នេះ ប៉ះ ហើយសង្កត់ទិដ្ឋភាព។"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"កម្មវិធីនេះត្រូវបានខ្ទាស់។ មិនអនុញ្ញាតឲ្យដោះការខ្ទាស់នៅលើឧបករណ៍នេះទេ។"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"បានភ្ជាប់អេក្រង់"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"មិនបានភ្ជាប់អេក្រង់"</string>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index 8e9341b..59df73c 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ಸ್ಪರ್ಶಿಸಲಾದ ಐಟಂಗಳನ್ನು ಗಟ್ಟಿಯಾಗಿ ಹೇಳಲಾಗುತ್ತದೆ ಮತ್ತು ಗೆಸ್ಚರ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪರದೆಯನ್ನು ಎಕ್ಸ್ಪ್ಲೋರ್ ಮಾಡಬಹುದಾಗಿದೆ."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ವರ್ಧಿತ ವೆಬ್ ಪ್ರವೇಶಿಸುವಿಕೆ ಆನ್ ಆಗುವಿಕೆ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ಅಪ್ಲಿಕೇಶನ್ ವಿಷಯ ಇನ್ನಷ್ಟು ಲಭ್ಯವಾಗುವಂತೆ ಮಾಡಲು ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಬಹುದಾಗಿದೆ."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ನೀವು ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು ಗಮನಿಸುತ್ತದೆ"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK ಮತ್ತು ಹೊಸ ಪಿನ್ ಕೋಡ್ ಟೈಪ್ ಮಾಡಿ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK ಕೋಡ್"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ಹೊಸ ಪಿನ್ ಕೋಡ್"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"ಪಾಸ್ವರ್ಡ್ ಟೈಪ್ ಮಾಡಲು ಸ್ಪರ್ಶಿಸಿ"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಪಾಸ್ವರ್ಡ್ ಟೈಪ್ ಮಾಡಿ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಪಿನ್ ಟೈಪ್ ಮಾಡಿ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ತಪ್ಪಾದ ಪಿನ್ ಕೋಡ್."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ಗಂಟೆಗಳು</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ಇದೀಗ"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ನಿ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ನಿ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ಗಂ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ಗಂ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ದಿ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ದಿ</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ವ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ವ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ನಿ ನಲ್ಲಿ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ನಿ ನಲ್ಲಿ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ಗಂ ನಲ್ಲಿ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ಗಂ ನಲ್ಲಿ</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ದಿ ನಲ್ಲಿ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ದಿ ನಲ್ಲಿ</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ವ ನಲ್ಲಿ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ವ ನಲ್ಲಿ</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ವೀಡಿಯೊ ಸಮಸ್ಯೆ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ಈ ಸಾಧನಲ್ಲಿ ಸ್ಟ್ರೀಮ್ ಮಾಡಲು ಈ ವೀಡಿಯೊ ಮಾನ್ಯವಾಗಿಲ್ಲ."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ಈ ವೀಡಿಯೊ ಪ್ಲೇ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ಕೆಲವು ಸಿಸ್ಟಂ ಕಾರ್ಯವಿಧಾನಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ಸಿಸ್ಟಂನಲ್ಲಿ ಸಾಕಷ್ಟು ಸಂಗ್ರಹಣೆಯಿಲ್ಲ. ನೀವು 250MB ನಷ್ಟು ಖಾಲಿ ಸ್ಥಳವನ್ನು ಹೊಂದಿರುವಿರಾ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಹಾಗೂ ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಚಾಲನೆಯಲ್ಲಿದೆ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ ನಿಲ್ಲಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ಸರಿ"</string>
<string name="cancel" msgid="6442560571259935130">"ರದ್ದುಮಾಡು"</string>
<string name="yes" msgid="5362982303337969312">"ಸರಿ"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ಬೂಟ್ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ರನ್ ಆಗುತ್ತಿದೆ"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ಅಪ್ಲಿಕೇಶನ್ ಬದಲಾಯಿಸಲು ಸ್ಪರ್ಶಿಸಿ"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಬದಲಾಯಿಸುವುದೇ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ಮತ್ತೊಂದು ಅಪ್ಲಿಕೇಶನ್ ಈಗಾಗಲೇ ಚಾಲ್ತಿಯಲ್ಲಿದೆ ನೀವು ಹೊಸದೊಂದು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಅದನ್ನು ನಿಲ್ಲಿಸಬೇಕು."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> ಗೆ ಹಿಂತಿರುಗಿ"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ಪ್ರಾರಂಭಿಸಿ"</string>
<string name="new_app_description" msgid="1932143598371537340">"ಉಳಿಸದೇ ಹಳೆಯ ಅಪ್ಲಿಕೇಶನ್ ನಿಲ್ಲಿಸಿ."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ಮೆಮೊರಿ ಮಿತಿಯನ್ನು ಮೀರಿದೆ"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"ಹೀಪ್ ಡಂಪ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲಾಗಿದೆ; ಹಂಚಲು ಸ್ಪರ್ಶಿಸಿ"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ಹೀಪ್ ಡಂಪ್ ಹಂಚಿಕೊಳ್ಳುವುದೇ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> ಪ್ರಕ್ರಿಯೆಯು <xliff:g id="SIZE">%2$s</xliff:g> ರ ಪ್ರಕ್ರಿಯೆ ಮೆಮೊರಿ ಮಿತಿಯನ್ನು ಮೀರಿದೆ. ನೀವು ಅದರ ಡೆವಲಪರ್ ಜೊತೆ ಹಂಚಿಕೊಳ್ಳಲು ಹೀಪ್ ಡಂಪ್ ಲಭ್ಯವಿದೆ. ಎಚ್ಚರಿಕೆ: ಈ ಹೀಪ್ ಡಂಪ್ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರವೇಶ ಹೊಂದಿರುವ ನಿಮ್ಮ ಯಾವುದೇ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರಬಹುದು."</string>
<string name="sendText" msgid="5209874571959469142">"ಪಠ್ಯಕ್ಕೆ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"ವೈ-ಫೈ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ಆಯ್ಕೆಗಳಿಗೆ ಸ್ಪರ್ಶಿಸಿ"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ಕಳಪೆ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿದೆ."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ಸಂಪರ್ಕವನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಿ. ಇದು Wi-Fi ಕ್ಲೈಂಟ್/ಹಾಟ್ಸ್ಪಾಟ್ ಅನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ಡೈರೆಕ್ಟ್ ಆನ್ ಆಗಿದೆ"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ಸೆಟ್ಟಿಂಗ್ಗಳಿಗಾಗಿ ಸ್ಪರ್ಶಿಸಿ"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ಸ್ವೀಕರಿಸು"</string>
<string name="decline" msgid="2112225451706137894">"ನಿರಾಕರಿಸು"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ಆಹ್ವಾನವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ಫೋಟೋ ವರ್ಗಾವಣೆಗೆ USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI ಗೆ USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ಪರಿಕರಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"ಹೆಚ್ಚಿನ ಆಯ್ಕೆಗಳಿಗೆ ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ಡೀಬಗಿಂಗ್ ಸಂಪರ್ಕ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ಡೀಬಗಿಂಗ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ದೋಷದ ವರದಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ಬಗ್ ವರದಿಯನ್ನು ಹಂಚುವುದೇ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ಬಗ್ ವರದಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ಹೊಸ <xliff:g id="NAME">%s</xliff:g> ಪತ್ತೆಯಾಗಿದೆ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ಫೋಟೋಗಳು ಮತ್ತು ಮಾಧ್ಯಮವನ್ನು ವರ್ಗಾಯಿಸಲು"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> ದೋಷಪೂರಿತವಾಗಿದೆ"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> ದೋಷಪೂರಿತವಾಗಿದೆ. ಸರಿಪಡಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ಬೆಂಬಲಿಸದಿರುವ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ಈ ಸಾಧನವು <xliff:g id="NAME">%s</xliff:g> ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬೆಂಬಲಿತ ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಹೊಂದಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ಅನಿರೀಕ್ಷಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ಡೇಟಾ ನಷ್ಟವನ್ನು ತಪ್ಪಿಸಲು ತೆಗೆದುಹಾಕುವುದಕ್ಕೂ ಮುನ್ನ <xliff:g id="NAME">%s</xliff:g> ಅಳವಡಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ಸ್ಥಾಪಿತ ಸೆಷನ್ಗಳನ್ನು ಓದಲು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಸಕ್ರಿಯ ಪ್ಯಾಕೇಜ್ ಸ್ಥಾಪನೆಗಳ ಕುರಿತು ವಿವರಣೆಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಇದು ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"ಸ್ಥಾಪನೆ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ವಿನಂತಿಸಿ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ಪ್ಯಾಕೇಜ್ಗಳ ಸ್ಥಾಪನೆಯನ್ನು ವಿನಂತಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ಜೂಮ್ ನಿಯಂತ್ರಿಸಲು ಎರಡು ಬಾರಿ ಸ್ಪರ್ಶಿಸಿ"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ವಿಜೆಟ್ ಸೇರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ."</string>
<string name="ime_action_go" msgid="8320845651737369027">"ಹೋಗು"</string>
<string name="ime_action_search" msgid="658110271822807811">"ಹುಡುಕು"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"ಅಧಿಸೂಚನೆ ಶ್ರೇಣಿಯ ಸೇವೆ"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ಸಕ್ರಿಯಗೊಂಡಿದೆ"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> ಮೂಲಕ VPN ಸಕ್ರಿಯಗೊಂಡಿದೆ"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ನೆಟ್ವರ್ಕ್ ನಿರ್ವಹಿಸಲು ಸ್ಪರ್ಶಿಸಿ"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ. ನೆಟ್ವರ್ಕ್ ನಿರ್ವಹಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ಯಾವಾಗಲೂ-ಆನ್ VPN ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತಿದೆ…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ಯಾವಾಗಲೂ-ಆನ್ VPN ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ಯಾವಾಗಲೂ-ಆನ್ VPN ದೋಷ"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಸ್ಪರ್ಶಿಸಿ"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ಫೈಲ್ ಆಯ್ಕೆಮಾಡು"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ಯಾವುದೇ ಫೈಲ್ ಆಯ್ಕೆ ಮಾಡಿಲ್ಲ"</string>
<string name="reset" msgid="2448168080964209908">"ಮರುಹೊಂದಿಸು"</string>
<string name="submit" msgid="1602335572089911941">"ಸಲ್ಲಿಸು"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ಕಾರ್ ಮೋಡ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ಕಾರ್ ಮೋಡ್ನಿಂದ ನಿರ್ಗಮಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ಟೆಥರಿಂಗ್ ಅಥವಾ ಹಾಟ್ಸ್ಪಾಟ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"ಹೊಂದಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"ಹಿಂದೆ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ಮುಂದಿನದು"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ಸ್ಕಿಪ್"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ಖಾತೆ ಸೇರಿಸು"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ಹೆಚ್ಚಿಸಿ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ಕಡಿಮೆ ಮಾಡಿ"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದಿಡಿ."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ಹೆಚ್ಚಿಸಲು ಮೇಲಕ್ಕೆ ಮತ್ತು ಕಡಿಮೆ ಮಾಡಲು ಕೆಳಕ್ಕೆ ಸ್ಲೈಡ್ ಮಾಡಿ."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ನಿಮಿಷವನ್ನು ಹೆಚ್ಚಿಸಿ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ನಿಮಿಷವನ್ನು ಕಡಿಮೆ ಮಾಡಿ"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB ಸಂಗ್ರಹಣೆ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ಸಂಪಾದಿಸು"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ಡೇಟಾ ಬಳಕೆಯ ಎಚ್ಚರಿಕೆ"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ಬಳಕೆ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ಡೇಟಾ ಮೀತಿಯನ್ನು ತಲುಪಿದೆ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ಡೇಟಾ ಮೀತಿಯನ್ನು ತಲುಪಿದೆ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ಡೇಟಾ ಮಿತಿ ಮೀರಿದೆ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಿತಿ ಮೀರಿದೆ."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"ಭದ್ರತಾ ಪ್ರಮಾಣಪತ್ರ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ಈ ಪ್ರಮಾಣಪತ್ರವು ಮಾನ್ಯವಾಗಿದೆ."</string>
<string name="issued_to" msgid="454239480274921032">"ಇವರಿಗೆ ನೀಡಲಾಗಿದೆ:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"ವರ್ಷವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ಅಳಿಸಲಾಗಿದೆ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ಕೆಲಸ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ಈ ಪರದೆಯನ್ನು ಅನ್ಪಿನ್ ಮಾಡಲು, ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಂದೆ ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ಈ ಪರದೆಯನ್ನು ಅನ್ಪಿನ್ ಮಾಡಲು, ‘ಸಮಗ್ರ ನೋಟ’ವನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ಅಪ್ಲಿಕೇಶನ್ ಪಿನ್ ಮಾಡಲಾಗಿದೆ: ಈ ಸಾಧನದಲ್ಲಿ ಅನ್ಪಿನ್ ಮಾಡುವುದನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ಸ್ಕ್ರೀನ್ ಪಿನ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ಸ್ಕ್ರೀನ್ ಅನ್ಪಿನ್ ಮಾಡಲಾಗಿದೆ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 5ccd38c..4625231 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"항목을 터치하면 소리 내어 알려주며 제스처를 사용하여 화면을 탐색할 수 있습니다."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"향상된 웹 접근성 기능 사용"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"스크립트를 설치하여 앱 콘텐츠에 더 간편하게 액세스할 수 있습니다."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"입력하는 텍스트 살펴보기"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK 및 새 PIN 코드 입력"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 코드"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"새 PIN 코드"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"비밀번호를 입력하려면 터치"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"잠금 해제하려면 비밀번호 입력"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"잠금을 해제하려면 PIN 입력"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 코드가 잘못되었습니다."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1시간</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"지금"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>분</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>분</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>시간</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>시간</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>일</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>일</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>년</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>년</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>분 후</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>분 후</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>시간 후</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>시간 후</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>일 후</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>일 후</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>년 후</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>년 후</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"영상 문제"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"이 기기로 스트리밍하기에 적합하지 않은 동영상입니다."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"동영상을 재생할 수 없습니다."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"일부 시스템 기능이 작동하지 않을 수 있습니다."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"시스템의 저장 공간이 부족합니다. 250MB의 여유 공간이 확보한 후 다시 시작하세요."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g>이(가) 실행 중입니다."</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"자세한 정보를 보거나 앱을 중지하려면 터치하세요."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"확인"</string>
<string name="cancel" msgid="6442560571259935130">"취소"</string>
<string name="yes" msgid="5362982303337969312">"확인"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"앱을 시작하는 중입니다."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"부팅 완료"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> 실행 중"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"앱으로 전환하려면 터치"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"앱을 전환하시겠습니까?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"다른 앱이 이미 실행 중입니다. 새 앱을 시작하려면 실행 중인 앱을 중단해야 합니다."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>(으)로 돌아가기"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> 시작"</string>
<string name="new_app_description" msgid="1932143598371537340">"저장하지 않고 이전 앱을 중단합니다."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>에서 메모리 제한을 초과했습니다."</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"힙 덤프가 수집되었습니다. 공유하려면 터치하세요."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"힙 덤프를 공유할까요?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"프로세스 <xliff:g id="PROC">%1$s</xliff:g>에서 프로세스 메모리 한도(<xliff:g id="SIZE">%2$s</xliff:g>)를 초과했습니다. 힙 덤프를 개발자와 공유할 수 있습니다. 주의: 애플리케이션이 액세스할 수 있는 개인 정보가 이 힙 덤프에 포함되어 있을 수 있습니다."</string>
<string name="sendText" msgid="5209874571959469142">"텍스트에 대한 작업 선택"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi가 인터넷에 연결되어 있지 않습니다."</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"더 많은 옵션을 확인하려면 터치하세요."</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi에 연결할 수 없습니다"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 인터넷 연결 상태가 좋지 않습니다."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"연결을 허용하시겠습니까?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct 작업을 시작합니다. 이 작업을 하면 Wi-Fi 클라이언트/핫스팟 작업이 중지됩니다."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct를 시작하지 못했습니다."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct 켜짐"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"설정으로 이동하려면 터치하세요."</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"동의"</string>
<string name="decline" msgid="2112225451706137894">"거부"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"초대장을 보냈습니다."</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"사진 전송용 USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI용 USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB 액세서리에 연결됨"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"더 많은 옵션을 확인하려면 터치하세요."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB 디버깅 연결됨"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB 디버깅을 사용하지 않으려면 터치하세요."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"버그 보고서 가져오는 중..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"버그 보고서를 공유하시겠습니까?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"버그 신고서 공유 중..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"새로운 <xliff:g id="NAME">%s</xliff:g> 감지됨"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"사진 및 미디어를 전송하는 데 사용합니다."</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"손상된 <xliff:g id="NAME">%s</xliff:g>입니다."</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g>이(가) 손상되었습니다. 문제를 해결하려면 터치하세요."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"지원되지 않는 <xliff:g id="NAME">%s</xliff:g>입니다."</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"기기가 <xliff:g id="NAME">%s</xliff:g>을(를) 지원하지 않습니다. 지원되는 형식으로 설정하려면 터치하세요."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>이(가) 예기치 않게 삭제됨"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"데이터 손실을 피하려면 <xliff:g id="NAME">%s</xliff:g>을(를) 마운트 해제한 다음 삭제하세요."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> 삭제됨"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"애플리케이션의 설치 세션 읽기를 허용하면, 활성 패키지 설치에 대한 세부 정보를 볼 수 있습니다."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"패키지 설치 요청"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"애플리케이션이 패키지 설치를 요청하도록 허용합니다."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"확대/축소하려면 두 번 터치하세요."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"확대/축소하려면 두 번 탭하세요."</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"위젯을 추가할 수 없습니다."</string>
<string name="ime_action_go" msgid="8320845651737369027">"이동"</string>
<string name="ime_action_search" msgid="658110271822807811">"검색"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"알림 순위 지정 서비스"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN이 활성화됨"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN이 <xliff:g id="APP">%s</xliff:g>에 의해 활성화됨"</string>
- <string name="vpn_text" msgid="3011306607126450322">"네트워크를 관리하려면 터치하세요."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>에 연결되어 있습니다. 네트워크를 관리하려면 터치하세요."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"네트워크를 관리하려면 누르세요."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g>에 연결되어 있습니다. 네트워크를 관리하려면 누르세요."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"연결 유지 VPN에 연결하는 중…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"연결 유지 VPN에 연결됨"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"연결 유지 VPN 오류"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"설정하려면 터치하세요."</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"파일 선택"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"파일을 선택하지 않았습니다."</string>
<string name="reset" msgid="2448168080964209908">"초기화"</string>
<string name="submit" msgid="1602335572089911941">"제출"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"운전모드 사용"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"운전모드를 종료하려면 터치합니다."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"테더링 또는 핫스팟 사용"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"설정하려면 터치하세요."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"뒤로"</string>
<string name="next_button_label" msgid="1080555104677992408">"다음"</string>
<string name="skip_button_label" msgid="1275362299471631819">"건너뛰기"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"계정 추가"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"늘리기"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"줄이기"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> 길게 터치하세요."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"늘리려면 위로 슬라이드하고 줄이려면 아래로 슬라이드합니다."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"\'분\'을 늘립니다."</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"\'분\'을 줄입니다."</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB 저장소"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"수정"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"데이터 사용 경고"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"사용량 및 설정을 보려면 터치하세요."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G 데이터 한도에 도달함"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G 데이터 한도에 도달함"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"이동통신 데이터 한도에 도달함"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi 데이터 한도 초과됨"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> - 지정된 한도 초과"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"백그라운드 데이터 사용이 제한됨"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"제한 설정을 삭제하려면 터치하세요."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"보안 인증서"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"유효한 인증서입니다."</string>
<string name="issued_to" msgid="454239480274921032">"발급 대상:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"연도 선택"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> 삭제됨"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"업무용 <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"화면 고정을 해제하려면 \'뒤로\'를 길게 터치합니다."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"화면 고정을 해제하려면 \'개요\'를 길게 터치합니다."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"앱이 고정되었습니다. 이 기기에서는 고정 해제를 허용하지 않습니다."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"화면 고정됨"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"화면 고정 해제됨"</string>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index 52f5836..2e49ecc 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -220,7 +220,7 @@
<string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Интерактивдүү кабар"</string>
<string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Ката жөнүндө кабардын абалын жана көйгөй тууралуу кошумча маалыматты көрсөтүү үчүн ушул функцияны колдонууну сунуштайбыз. Ката жөнүндө кабар жөнөтүлүп жатканда көп убакыт талап кылынбашы үчүн негизги бөлүмдөр гана көрүнөт."</string>
<string name="bugreport_option_full_title" msgid="6354382025840076439">"Толук кабар берүү"</string>
- <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Түзмөгүңүз жооп бербей же өтө жай иштеп жатса, ошондой эле жөндөөлөрдүн бардык кабарлоо бөлүмдөрүн карап чыккыңыз келсе, ушул функцияны колдонуңуз. Баса, ката жөнүндө кошумча маалыматты көрсөтүп же дагы скриншотторду тарта албайсыз."</string>
+ <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Түзмөгүңүз жооп бербей же өтө жай иштеп жатса, ошондой эле жөндөөлөрдүн бардык кабарлоо бөлүмдөрүн карап чыккыңыз келсе, ушул функцияны колдонуңуз. Баса, ката жөнүндө кошумча маалыматты көрсөтүп же скриншотторду тарта албайсыз."</string>
<plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
<item quantity="other">Мүчүлүштүк тууралуу кабарлоо үчүн <xliff:g id="NUMBER_1">%d</xliff:g> секундда скриншот алынат.</item>
<item quantity="one">Мүчүлүштүк тууралуу кабарлоо үчүн <xliff:g id="NUMBER_0">%d</xliff:g> секундда скриншот алынат.</item>
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Басылган элементтер угузулат жана экранды жаңсап изилдесе болот."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Жакшыртылган веб жеткиликтүүлүгүн жандыруу"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Колдонмонун мазмунун жеткиликтүүрөөк кылыш үчүн скрипттер орнотулушу мүмкүн."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Терип жаткан текстти текшерүү"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK жана жаңы PIN кодду териңиз"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Жаңы PIN код"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Сырсөздү терүү үчүн тийип коюңуз"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Кулпуну ачуу үчүн сырсөздү териңиз"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Кулпуну ачуу үчүн PIN кодду териңиз"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN-код туура эмес."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 саат</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"азыр"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> мүн.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> мүн.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> с.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> с.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> к.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> к.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ж.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ж.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> мүн. кийин</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> мүн. кийин</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> с. кийин</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> с. кийин</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> к. кийин</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> к. кийин</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ж. кийин</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ж. кийин</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Видео маселеси"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Бул видеону ушул түзмөктө агылтып көрсөтүү мүмкүн эмес."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Бул видеону ойнотуу мүмкүн эмес."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Системанын кээ бир функциялары иштебеши мүмкүн"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Тутумда сактагыч жетишсиз. 250МБ бош орун бар экенин текшерип туруп, өчүрүп күйгүзүңүз."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> иштөөдө"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Кенен маалыматтар же колдонмону токтотуш үчүн тийиңиз."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Жарайт"</string>
<string name="cancel" msgid="6442560571259935130">"Жокко чыгаруу"</string>
<string name="yes" msgid="5362982303337969312">"Жарайт"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Колдонмолорду иштетип баштоо"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Жүктөө аякталууда."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> иштеп жатат"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Колдонмого которулуу үчүн тийип коюңуз"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Колдонмолор которуштурулсунбу?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Жаңы колдонмону иштетээрден мурун, учурда иштеп жатканын өчүрүшүңүз керек."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> колдонмосуна кайтуу"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> колдонмосун жүргүзүү"</string>
<string name="new_app_description" msgid="1932143598371537340">"Эски колдонмону сактабастан токтотуу."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> эстутум чегинен ашып кетти"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"үймө дамп топтолду; бөлүшүү үчүн тийип коюңуз"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Үймө дамп бөлүшүлсүнбү?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> процесси өзүнүн <xliff:g id="SIZE">%2$s</xliff:g> процесс чегинен ашып кетти. Үймө дамп сиз үчүн иштеп чыгуучу менен бөлүшүүгө даяр. Абайлаңыз: бул үймө дампта колдонмонун уруксаты бар жеке маалыматыңыз камтылышы мүмкүн."</string>
<string name="sendText" msgid="5209874571959469142">"Текст үчүн аракет тандаңыз"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi тармагы Интернетке туташпай турат"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Параметрлер үчүн тийип коюңуз"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi менен туташуу түзүлбөдү"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" хотспотунун интернет байланышы начар."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Туташууга уруксатпы?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Дайректи иштетүү. Бул Wi-Fi клиентти/хотспотту өчүрөт."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Дайрект иштетилбеди."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct иштөөдө"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Тууралоолор үчүн тийиңиз"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Кабыл алуу"</string>
<string name="decline" msgid="2112225451706137894">"Баш тартуу"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Чакыруу жөнөтүлдү"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Сүрөт өткөрүү үчүн USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI үчүн USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB аксессуарга байланышты"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Көбүрөөк параметр үчүн тийип коюңуз."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB мүчүлүштүктөрдү оңдоо туташтырылган"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB мүчүлүштүктөрдү жоюу мүмкүнчүлүгүн өчүрүү үчүн тийип коюңуз."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Мүчүлүштүк тууралуу кабар алынууда…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Мүчүлүштүк тууралуу баяндама бөлүшүлсүнбү?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Мүчүлүштүк тууралуу баяндама бөлүшүлүүдө…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Жаңы <xliff:g id="NAME">%s</xliff:g> аныкталды"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Сүрөттөрдү жана медиа өткөрүү үчүн"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> бузулган"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> бузулган. Оңдоо үчүн тийип коюңуз."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> колдоого алынбайт"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Бул түзмөктө бул <xliff:g id="NAME">%s</xliff:g> колдоого алынбайт. Колдоого алынуучу форматта орнотуу үчүн тийип коюңуз."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> күтүүсүздөн алынып салынды"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Дайындарды жоготуунун алдын алуу үчүн чыгаруудан мурун <xliff:g id="NAME">%s</xliff:g> түзмөгүн бошотуңуз"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> алынды"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Колдонмого орнотуу сеанстарын окуу мүмкүнчүлүгүн берет. Ушуну менен, ал жигердүү топтом орнотууларынын чоо-жайын көрө алат."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"орнотуу топтомдорун суроо"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Колдонмо топтомдорду орнотууга уруксат сурай алат."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Чен өлчөмүн көзөмөлдөө үчүн эки жолу тийип коюңуз"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Виджетти кошуу мүмкүн болбоду."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Өтүү"</string>
<string name="ime_action_search" msgid="658110271822807811">"Издөө"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Эскертмелердин маанилүүлүгүн баалоо кызматы"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN иштетилди"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g> аркылуу жандырылды"</string>
- <string name="vpn_text" msgid="3011306607126450322">"желени башкаруу үчүн басыңыз."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> менен туташып турат. желени башкаруу үчүн басыңыз."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Дайым иштеген VPN туташууда…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Дайым иштеген VPN туташтырылды"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Дайым иштеген VPN\'де ката кетти"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Тийип, тууралаңыз"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Файл тандоо"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Эч файл тандалган жок"</string>
<string name="reset" msgid="2448168080964209908">"Баштапкы абалга келтирүү"</string>
<string name="submit" msgid="1602335572089911941">"Тапшыруу"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Унаа режими иштетилген"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Унаа тартибинен чыгуу үчүн басыңыз."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Жалгаштыруу же хотспот жандырылган"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Тууралаш үчүн басыңыз."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Артка"</string>
<string name="next_button_label" msgid="1080555104677992408">"Кийинки"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Өткөрүп жиберүү"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Эсеп кошуу"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Жогорулатуу"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Төмөндөтүү"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> басып, кармап туруңуз."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Жогорулатыш үчүн жогору, төмөндөтүш үчүн төмөн жылмыштырыңыз."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Мүнөттү жогорулатуу"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Мүнөттү төмөндөтүү"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB эстутуму"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Өзгөртүү"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Дайындарды колдонуу боюнча эскрт"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Колдонууну көрүш үчүн басыңыз."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G дайындар чегине жетти"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G дайындар чегине жетти"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Уюктук дайындар чегине жетти"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi трафик чегинен ашты"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Орнотулган чектөөдөн <xliff:g id="SIZE">%s</xliff:g> ашты."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Фондук трафик чектелген"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Чектөөнү алыш үчүн басыңыз."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Коопсуздук тастыктамасы"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Бул тастыктама жарактуу."</string>
<string name="issued_to" msgid="454239480274921032">"Берилди:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"Жылды тандаңыз"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> өчүрүлдү"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Жумуш <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Бул экранды бошотуу үчүн \"Артка\" баскычын басып, кармап туруңуз."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Бул экранды бошотуу үчүн Көз жүгүртүүнү басып, кармап туруңуз."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Колдонмо кадалган: Бул түзмөктө бошотууга уруксат жок."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Экран кадалды"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Экран бошотулду"</string>
diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml
index 20f7a8e..c3e0da4 100644
--- a/core/res/res/values-lo-rLA/strings.xml
+++ b/core/res/res/values-lo-rLA/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ລາຍການທີ່ສຳພັດຈະຖືກເວົ້າອອກມາ ແລະສາມາດສຳຫຼວດໜ້າຈໍໄດ້ດ້ວຍທ່າທາງ."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ເປີດການເຂົ້າເຖິງເວັບທີ່ມີປະສິດທິພາບຫຼາຍຂຶ້ນ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ສະຄຣິບອາດຖືກຕິດຕັ້ງ ເພື່ອເຮັດໃຫ້ເນື້ອຫາແອັບຯເຂົ້າເຖິງໄດ້ຫຼາຍຂຶ້ນ."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ຕິດຕາມເບິ່ງຂໍ້ຄວາມທີ່ທ່ານພິມ"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"ພິມລະຫັດ PUK ແລະລະຫັດ PIN ອັນໃໝ່"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"ລະຫັດ PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ລະຫັດ PIN ໃໝ່"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"ແຕະເພື່ອພິມລະຫັດຜ່ານ"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ພິມລະຫັດເພື່ອປົດລັອກ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ພິມລະຫັດ PIN ເພື່ອປົດລັອກ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 ຊົ່ວໂມງ</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ຕອນນີ້"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ນທ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ນທ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ຊມ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ຊມ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ມ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ມ</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ປ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ປ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">ໃນ <xliff:g id="COUNT_1">%d</xliff:g>ນທ</item>
+ <item quantity="one">ໃນ <xliff:g id="COUNT_0">%d</xliff:g>ນທ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">ໃນ <xliff:g id="COUNT_1">%d</xliff:g>ຊມ</item>
+ <item quantity="one">ໃນ <xliff:g id="COUNT_0">%d</xliff:g>ຊມ</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">ໃນ <xliff:g id="COUNT_1">%d</xliff:g>ມ</item>
+ <item quantity="one">ໃນ <xliff:g id="COUNT_0">%d</xliff:g>ມ</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">ໃນ <xliff:g id="COUNT_1">%d</xliff:g>ປ</item>
+ <item quantity="one">ໃນ <xliff:g id="COUNT_0">%d</xliff:g>ປ</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ບັນຫາວິດີໂອ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ວິດີໂອນີ້ບໍ່ຖືກຕ້ອງສຳລັບການສະແດງໃນອຸປະກອນນີ້."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ບໍ່ສາມາດຫຼິ້ນວິດີໂອນີ້ໄດ້."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ການເຮັດວຽກບາງຢ່າງຂອງລະບົບບາງອາດຈະໃຊ້ບໍ່ໄດ້"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ບໍ່ມີບ່ອນເກັບຂໍ້ມູນພຽງພໍສຳລັບລະບົບ. ກວດສອບໃຫ້ແນ່ໃຈວ່າທ່ານມີພື້ນທີ່ຫວ່າງຢ່າງໜ້ອຍ 250MB ແລ້ວລອງໃໝ່."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງເຮັດວຽກຢູ່"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"ແຕະເພື່ອເບິ່ງຂໍ້ມູນເພີ່ມເຕີມ ຫຼືເພື່ອຢຸດການເຮັດວຽກຂອງແອັບຯນີ້."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ຕົກລົງ"</string>
<string name="cancel" msgid="6442560571259935130">"ຍົກເລີກ"</string>
<string name="yes" msgid="5362982303337969312">"ຕົກລົງ"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ກຳລັງເປີດແອັບຯ."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ກຳລັງສຳເລັດການເປີດລະບົບ."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ກຳລັງເຮັດວຽກ"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ແຕະເພື່ອສະລັບກັບໄປຫາແອັບຯ"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ສະລັບແອັບຯບໍ່?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ທ່ານຈະຕ້ອງຢຸດນຳໃຊ້ແອັບຯໂຕອື່ນກ່ອນ ກ່ອນທີ່ທ່ານຈະເປີດໃຊ້ແອັບຯໃໝ່ໄດ້."</string>
<string name="old_app_action" msgid="493129172238566282">"ກັບໄປ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"ເລີ່ມຕົ້ນ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"ຢຸດແອັບຯເກົ່າໂດຍບໍ່ຕ້ອງບັນທຶກ."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ເກີນຂີດຄວາມຈຳແລ້ວ"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"ການເທກອງຖືກເກັບກຳແລ້ວ; ສຳພັດເພື່ອແລກປ່ຽນ"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ແບ່ງປັນການເທກອງບໍ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"ຂະບວນການ <xliff:g id="PROC">%1$s</xliff:g> ເກີນຂີດຈຳກັດຄວາມຈຳຂະບວນການຂອງມັນຂອງ <xliff:g id="SIZE">%2$s</xliff:g> ແລ້ວ. ການເທກອງມີໃຫ້ສຳລັບທ່ານ ເພື່ອແບ່ງປັນກັບຜູ້ພັດທະນາຂອງມັນ. ລະວັງ: ການເທກອງນີ້ສາມາດມີຂໍ້ມູນສ່ວນຕົວໃດໜຶ່ງຂອງທ່ານ ທີ່ແອັບພລິເຄຊັນມີການເຂົ້າຫາ."</string>
<string name="sendText" msgid="5209874571959469142">"ເລືອກການເຮັດວຽກຂອງຂໍ້ຄວາມ"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ບໍ່ມີການເຂົ້າເຖິງອິນເຕີເນັດ"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ສຳພັດສຳລັບຕົວເລືອກ"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ບໍ່ສາມາດເຊື່ອມຕໍ່ Wi-Fi ໄດ້"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ມີສັນຍານອິນເຕີເນັດທີ່ບໍ່ດີ."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ອະນຸຍາດການເຊື່ອມຕໍ່ຫຼືບໍ່?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ເລີ່ມ Wi-Fi Direct. ນີ້ຈະເປັນການປິດ Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ບໍ່ສາມາດເລີ່ມ Wi-Fi Direct ໄດ້."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"ເປີດໃຊ້ Wi-Fi Direct ແລ້ວ"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ແຕະເພື່ອຕັ້ງຄ່າ"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ຍອມຮັບ"</string>
<string name="decline" msgid="2112225451706137894">"ປະຕິເສດ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ການເຊື້ອເຊີນຖືກສົ່ງໄປແລ້ວ"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB ສຳລັບການໂອນໄຟລ໌"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB ສຳລັບ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ເຊື່ອມຕໍ່ກັບອຸປະກອນເສີມ USB ແລ້ວ"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"ສຳພັດສຳລັບທາງເລືອກເພີ່ມເຕີມ."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"ເຊື່ອມຕໍ່ການດີບັ໊ກຜ່ານ USB ແລ້ວ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"ແຕະເພື່ອປິດການດີບັ໊ກຜ່ານ USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ກຳລັງຂໍລາຍງານຂໍ້ຜິດພາດ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ແບ່ງປັນລາຍງານບັນຫາບໍ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ກຳລັງແບ່ງປັນລາຍງານບັນຫາ…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ກວດພົບ <xliff:g id="NAME">%s</xliff:g> ໃໝ່ແລ້ວ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ສຳລັບການໂອນຮູບຖ່າຍ ແລະມີເດຍ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ເສຍຫາຍແລ້ວ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> ເສຍຫາຍ. ສຳພັດເພື່ອແກ້ໄຂ."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ບໍ່ຮອງຮັບ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ອຸປະກອນນີ້ບໍ່ຮອງຮັບ <xliff:g id="NAME">%s</xliff:g> ນີ້. ສຳພັດເພື່ອຕັ້ງໃນຮູບແບບທີ່ຖືກຮອງຮັບ."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ຖືກຖອດອອກໄປແບບບໍ່ຄາດຄິດ"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ຖອດເຊື່ອມຕໍ່ <xliff:g id="NAME">%s</xliff:g> ກ່ອນເອົາອອກໄປ ເພື່ອຫຼີກເວັ້ນການເສຍຂໍ້ມູນ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"ເອົາ <xliff:g id="NAME">%s</xliff:g> ອອກໄປແລ້ວ"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນອ່ານເຊດຊັນການຕິດຕັ້ງໄດ້. ນີ້ຈະອະນຸຍາດໃຫ້ມັນເບິ່ງເຫັນລາຍລະອຽດກ່ຽວກັບການຕິດຕັ້ງແພັກເກດທີ່ເຮັດວຽກຢູ່ໄດ້."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"ຂໍຕິດຕັ້ງແພັກເກດ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນຂອງການຕິດຕັ້ງແພັກເກດ."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ແຕະສອງເທື່ອສຳລັບການຄວບຄຸມການຊູມ"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"ແຕະສອງເທື່ອເພື່ອຄວບຄຸມການຊູມ"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ບໍ່ສາມາດເພີ່ມວິດເຈັດໄດ້."</string>
<string name="ime_action_go" msgid="8320845651737369027">"ໄປ"</string>
<string name="ime_action_search" msgid="658110271822807811">"ຊອກຫາ"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"ບໍລິການຈັດອັນດັບການແຈ້ງເຕືອນ"</string>
<string name="vpn_title" msgid="19615213552042827">"ເປີດນຳໃຊ້ VPN ແລ້ວ"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"ເປີດໃຊ້ VPN ໂດຍ <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ແຕະເພື່ອຈັດການເຄືອຂ່າຍ."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"ເຊື່ອມຕໍ່ຢູ່ກັບ <xliff:g id="SESSION">%s</xliff:g>. ແຕະເພື່ອຈັດການເຄືອຂ່າຍ."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"ແຕະເພື່ອຈັດການເຄືອຂ່າຍ."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"ເຊື່ອມຕໍ່ກັບ <xliff:g id="SESSION">%s</xliff:g> ແລ້ວ. ແຕະເພື່ອຈັດການເຄືອຂ່າຍ."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ກຳລັງເຊື່ອມຕໍ່ Always-on VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ເຊື່ອມຕໍ່ VPN ແບບເປີດຕະຫຼອດເວລາແລ້ວ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"VPN ແບບເປີດຕະຫຼອດເກີດຄວາມຜິດພາດ"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ແຕະເພື່ອປັບຄ່າ"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ເລືອກໄຟລ໌"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ບໍ່ໄດ້ເລືອກໄຟລ໌ເທື່ອ"</string>
<string name="reset" msgid="2448168080964209908">"ຣີເຊັດ"</string>
<string name="submit" msgid="1602335572089911941">"ສົ່ງຂໍ້ມູນ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ໂຫມດຂັບລົດຖືກເປີດແລ້ວ"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ກົດເພື່ອປິດໂຫມດຂັບລົດ."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ເປີດການປ່ອຍສັນຍານ ຫຼືຮັອດສະປອດແລ້ວ"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"ແຕະເພື່ອຕິດຕັ້ງ."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"ກັບຄືນ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ຕໍ່ໄປ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ຂ້າມ"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ເພີ່ມບັນຊີ"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ເພີ່ມ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ປັບລົງ"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ສຳພັດຄ້າງໄວ້."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ເລື່ອນຂຶ້ນເພື່ອເພີ່ມ ແລະເລື່ອນລົງເພື່ອຫຼຸດ."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ເພີ່ມນາທີ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ປັບນາທີລົງ"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ແກ້ໄຂ"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ເຕືອນກ່ຽວກັບການນຳໃຊ້ຂໍ້ມູນ"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ແຕະເພື່ອເບິ່ງການນຳໃຊ້ ແລະການຕັ້ງຄ່າ."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"ໃຊ້ຂໍ້ມູນ 2G-3G ຮອດຈຳນວນທີ່ຈຳກັດແລ້ວ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"ໃຊ້ຂໍ້ມູນ 4G ຮອດຈຳນວນທີ່ຈຳກັດແລ້ວ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ໃຊ້ຂໍ້ມູນອິນເຕີເນັດມືຖືຮອດຈຳນວນທີ່ຈຳກັດແລ້ວ"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"ໝົດກໍານົດການນຳໃຊ້ຂໍ້ມູນ Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ເກີນທີ່ກໍານົດໄວ້."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ຂໍ້ມູນແບັກກຣາວຖືກຈຳກັດແລ້ວ"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ແຕະເພື່ອເອົາການຈຳກັດອອກ"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"ໃບຮັບຮອງຄວາມປອດໄພ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ໃບຮັບຮອງບໍ່ຖືກຕ້ອງ."</string>
<string name="issued_to" msgid="454239480274921032">"ອອກໃຫ້ແກ່:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"ເລືອກປີ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ຖືກລຶບແລ້ວ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ບ່ອນເຮັດວຽກ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ເພື່ອຖອດການປັກໝຸດໜ້າຈໍນີ້, ໃຫ້ແຕະທີ່ປຸ່ມກັບຄືນຄ້າງໄວ້."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ເພື່ອຖອດການປັກໝຸດໜ້າຈໍນີ້, ສຳຜັດປຸ່ມ ພາບຮວມ ຄ້າງໄວ້."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ແອັບຖືກປັກໝຸດແລ້ວ: ບໍ່ອະນຸຍາດໃຫ້ຖອນປັກໝຸດຢູ່ເທິງອຸປະກອນນີ້."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ປັກໝຸດໜ້າຈໍແລ້ວ"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ຍົກເລີກການປັກໝຸນຫນ້າຈໍແລ້ວ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 1f25733..ec3adf6 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -269,7 +269,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Gauti lango turinį"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tikrinti lango, su kuriuo sąveikaujate, turinį."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Įjungti „Naršyti paliečiant“"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Paliesti elementai bus ištariami garsiai. Be to, ekrane gali būti naršoma naudojant gestus."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Įjungti patobulintą žiniatinklio pasiekiamumą"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Gali būti įdiegti scenarijai, kad būtų lengviau pasiekti programų turinį."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Stebėti jūsų įvedamą tekstą"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Įveskite PUK ir naują PIN kodus"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodas"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Naujas PIN kodas"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Palieskite, kad įves. slaptaž."</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Jei norite atrakinti, įveskite slaptažodį"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Jei norite atrakinti, įveskite PIN kodą"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Neteisingas PIN kodas."</string>
@@ -873,14 +875,54 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> valandų</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"dabar"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">po <xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="few">po <xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="many">po <xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="other">po <xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">po <xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ <item quantity="few">po <xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ <item quantity="many">po <xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ <item quantity="other">po <xliff:g id="COUNT_1">%d</xliff:g> val.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">po <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="few">po <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="many">po <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="other">po <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">po <xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="few">po <xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="many">po <xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ <item quantity="other">po <xliff:g id="COUNT_1">%d</xliff:g> m.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Vaizdo įrašo problema"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Šis vaizdo įrašas netinkamas srautiniu būdu perduoti į šį įrenginį."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Negalima paleisti šio vaizdo įrašo."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Kai kurios sistemos funkcijos gali neveikti"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistemos saugykloje nepakanka vietos. Įsitikinkite, kad yra 250 MB laisvos vietos, ir paleiskite iš naujo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ vykdoma"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Palieskite, jei norite gauti daugiau informacijos arba sustabdyti programą."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Gerai"</string>
<string name="cancel" msgid="6442560571259935130">"Atšaukti"</string>
<string name="yes" msgid="5362982303337969312">"Gerai"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Paleidžiamos programos."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Užbaigiamas paleidimas."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Vykdoma „<xliff:g id="APP">%1$s</xliff:g>“"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Palieskite, kad perjungtumėte programą"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Perjungti programas?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Jau vykdoma kita programa, kurią reikia sustabdyti prieš paleidžiant naują."</string>
<string name="old_app_action" msgid="493129172238566282">"Grįžti į <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Paleisti „<xliff:g id="OLD_APP">%1$s</xliff:g>“"</string>
<string name="new_app_description" msgid="1932143598371537340">"Sustabdyti seną programą jos neišsaugant."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"„<xliff:g id="PROC">%1$s</xliff:g>“ viršijo atminties limitą"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Atminties išklotinės duomenys surinkti; palieskite, kad bendrintumėte."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Bendrinti atminties išklotinę?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Procesas „<xliff:g id="PROC">%1$s</xliff:g>“ viršijo atminties limitą <xliff:g id="SIZE">%2$s</xliff:g>. Atminties išklotinė pasiekiama, kad galėtumėte bendrinti su jos kūrėju. Būkite atsargūs: šioje atminties išklotinėje gali būti jūsų asmeninės informacijos, kurią gali pasiekti programa."</string>
<string name="sendText" msgid="5209874571959469142">"Pasirinkite teksto veiksmą"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"„Wi-Fi“ tinkle nėra interneto ryšio"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Palieskite, kad būtų rodomos parinktys"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nepavyko prisijungti prie „Wi-Fi“"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" turi prastą interneto ryšį."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Leisti prisijungti?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Paleiskite „Wi-Fi Direct“. Bus išjungta „Wi-Fi“ programa / viešosios interneto prieigos taškas."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nepavyko paleisti „Wi-Fi Direct“."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"„Wi-Fi Direct“ įjungta"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Jei norite peržiūrėti nustatymus, palieskite"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Sutikti"</string>
<string name="decline" msgid="2112225451706137894">"Atmesti"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pakvietimas išsiųstas"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB (nuotraukų perkėlimas)"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB (MIDI)"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Prijungta prie USB priedo"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Palieskite, kad būtų rodoma daugiau parinkčių."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB derinimas prijungtas"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Neleisti USB derinimo."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Pateikiamas pranešimas apie riktą…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Bendrinti pranešimą apie riktą?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Bendrinamas pranešimas apie riktą..."</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Aptikta nauja <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Norint perkelti nuotraukas ir mediją"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Saugykla (<xliff:g id="NAME">%s</xliff:g>) sugadinta"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Saugykla (<xliff:g id="NAME">%s</xliff:g>) sugadinta. Palieskite, kad pataisytumėte."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepalaikoma saugykla (<xliff:g id="NAME">%s</xliff:g>)"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Šiame įrenginyje nepalaikoma ši saugykla (<xliff:g id="NAME">%s</xliff:g>). Palieskite, kad nustatytumėte palaikomu formatu."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> netikėtai pašalinta"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Išmontuokite <xliff:g id="NAME">%s</xliff:g> prieš pašalindami, kad neprarastumėte duomenų."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Pašalinta <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Leidžiama programai skaityti diegimo seansus. Leidžiama peržiūrėti išsamią aktyvių paketų diegimo informaciją."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"pateikti užklausą dėl diegimo paketų"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Programai leidžiama pateikti užklausą dėl paketų diegimo."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dukart palieskite, kad valdytumėte mastelio keitimą"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Bakstelėkite du kartus, kad valdytumėte mastelio keitimą"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nepavyko pridėti."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Pradėti"</string>
<string name="ime_action_search" msgid="658110271822807811">"Ieškoti"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Pranešimų reitingavimo paslauga"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN suaktyvintas"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN suaktyvino „<xliff:g id="APP">%s</xliff:g>“"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Palieskite, kad valdytumėte tinklą."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Prisijungta prie <xliff:g id="SESSION">%s</xliff:g>. Jei norite valdyti tinklą, palieskite."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Jei norite valdyti tinklą, palieskite."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Prisijungta prie <xliff:g id="SESSION">%s</xliff:g>. Jei norite valdyti tinklą, palieskite."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Prisijungiama prie visada įjungto VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Prisijungta prie visada įjungto VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Visada įjungto VPN klaida"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Jei norite konfigūruoti, palieskite."</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Pasirinkti failą"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nepasirinktas joks failas"</string>
<string name="reset" msgid="2448168080964209908">"Atstatyti"</string>
<string name="submit" msgid="1602335572089911941">"Pateikti"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Įgalintas automobilio režimas"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Palieskite, kad išeitumėte iš automobilio režimo."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Susietas ar aktyvus"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Jei norite nustatyti, palieskite."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Atgal"</string>
<string name="next_button_label" msgid="1080555104677992408">"Kitas"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Praleisti"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Pridėti paskyrą"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Padidinti"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Sumažinti"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Palieskite <xliff:g id="VALUE">%s</xliff:g> ir laikykite."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slinkite aukštyn, kad padidintumėte, ir žemyn, kad sumažintumėte."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Padidinti minučių skaičių"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Sumažinti minučių skaičių"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB atmintis"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redaguoti"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Įspėjimas dėl duomenų naudojimo"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Palieskite ir žr. naud. ir nust."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Pasiektas 2G–3G duomenų apribojimas"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Pasiektas 4G duomenų apribojimas"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Pasiektas mobiliųjų duomenų apribojimas"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Viršytas „Wi-Fi“ duomenų aprib."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> viršyta nurodyta riba."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Apriboti foniniai duomenys"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Palieskite, kad pašalint. aprib."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Saugos sertifikatas"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Šis sertifikatas galioja."</string>
<string name="issued_to" msgid="454239480274921032">"Išduota:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Pasirinkite metus"</string>
<string name="deleted_key" msgid="7659477886625566590">"Ištrinta: <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Darbo <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Jei norite atsegti šį ekraną, palieskite ir palaikykite „Atgal“."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Jei norite atsegti šį ekraną, palieskite ir palaikykite „Apžvalga“."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Programa prisegta: šiame įrenginyje negalima atsegti."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekrano prisegtas"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekranas atsegtas"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 244f355..716cc777 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -266,7 +266,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Izgūt loga saturu."</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Skatīt tā loga saturu, ar kuru mijiedarbojaties."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizēt funkciju “Pārlūkot pieskaroties”."</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Tiks izrunāti to vienumu nosaukumi, kuriem pieskarsieties, un ekrānu varēsiet pārlūkot ar žestiem."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ieslēgt uzlaboto tīmekļa pieejamību."</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Var tikt instalēti skripti, lai padarītu lietotņu saturu pieejamāku."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Skatīt ierakstīto tekstu."</string>
@@ -665,7 +666,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ievadiet PUK kodu un jaunu PIN kodu."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kods"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Jauns PIN kods"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Pieskarieties, lai ievadītu paroli"</font>"."</string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ievadiet paroli, lai atbloķētu."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Lai atbloķētu, ievadiet PIN."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN kods nav pareizs."</string>
@@ -866,14 +868,46 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> stundas</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"tagad"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> g.</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> g.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> g.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="zero">pēc <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">pēc <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">pēc <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="zero">pēc <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">pēc <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">pēc <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="zero">pēc <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="one">pēc <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="other">pēc <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="zero">pēc <xliff:g id="COUNT_1">%d</xliff:g> g.</item>
+ <item quantity="one">pēc <xliff:g id="COUNT_1">%d</xliff:g> g.</item>
+ <item quantity="other">pēc <xliff:g id="COUNT_1">%d</xliff:g> g.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video problēma"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Šis video nav derīgs straumēšanai uz šo ierīci."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Nevar atskaņot šo video."</string>
@@ -905,7 +939,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Dažas sistēmas funkcijas var nedarboties."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistēmai pietrūkst vietas. Atbrīvojiet vismaz 250 MB vietas un restartējiet ierīci."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> darbojas"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Pieskarieties, lai iegūtu plašāku informāciju vai apturētu lietotnes darbību."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Labi"</string>
<string name="cancel" msgid="6442560571259935130">"Atcelt"</string>
<string name="yes" msgid="5362982303337969312">"Labi"</string>
@@ -979,7 +1014,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Notiek lietotņu palaišana."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Tiek pabeigta sāknēšana."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> darbojas"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Pieskarieties, lai pārslēgtos uz lietotni"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vai pārslēgt lietotnes?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Jau darbojas cita lietotne. Tās darbība ir jāaptur, lai varētu startēt jaunu lietotni."</string>
<string name="old_app_action" msgid="493129172238566282">"Atgriezties: <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -987,7 +1023,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Startēt: <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Aptur vecās lietotnes darbību, neko nesaglabājot."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Process <xliff:g id="PROC">%1$s</xliff:g> pārsniedza atmiņas ierobežojumu."</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Tika apkopots kaudzes izraksts. Pieskarieties, lai to kopīgotu."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Vai kopīgot kaudzes izrakstu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Process <xliff:g id="PROC">%1$s</xliff:g> pārsniedza procesu atmiņas ierobežojumu (<xliff:g id="SIZE">%2$s</xliff:g>). Tika apkopots kaudzes izraksts, ko varat kopīgot ar procesa izstrādātāju. Ņemiet vērā: kaudzes izrakstā var būt ietverta jūsu personas informācija, kurai var piekļūt lietojumprogramma."</string>
<string name="sendText" msgid="5209874571959469142">"Izvēlieties darbību tekstam"</string>
@@ -1025,7 +1062,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tīklā nav piekļuves internetam."</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Pieskarieties, lai skatītu iespējas."</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nevarēja izveidot savienojumu ar Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ir slikts interneta savienojums."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vai atļaut savienojumu?"</string>
@@ -1035,7 +1073,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Palaist programmu Wi-Fi Direct. Tādējādi tiks izslēgta Wi-Fi klienta/tīklāja darbība."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nevarēja palaist programmu Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ir ieslēgts"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Pieskarieties, lai piekļūtu iestatījumiem."</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Piekrist"</string>
<string name="decline" msgid="2112225451706137894">"Noraidīt"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Ielūgums ir nosūtīts."</string>
@@ -1087,9 +1126,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB savienojums fotoattēlu pārsūtīšanai"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB savienojums MIDI režīmā"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ir izveidots savienojums ar USB piederumu."</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Citas opcijas"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB atkļūdošana ir pievienota."</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Iespējot USB atkļūdošanu."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Notiek kļūdas pārskata izveide…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vai kopīgot kļūdas pārskatu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Notiek kļūdas pārskata kopīgošana…"</string>
@@ -1109,9 +1150,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Tika atrasta jauna <xliff:g id="NAME">%s</xliff:g>."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotoattēlu un satura pārsūtīšanai."</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Bojāts datu nesējs (<xliff:g id="NAME">%s</xliff:g>)"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Datu nesējs (<xliff:g id="NAME">%s</xliff:g>) ir bojāts. Pieskarieties, lai labotu."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Neatbalstīts datu nesējs (<xliff:g id="NAME">%s</xliff:g>)"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Šajā ierīcē netiek atbalstīts šis datu nesējs (<xliff:g id="NAME">%s</xliff:g>). Pieskarieties, lai iestatītu to atbalstītā formātā."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> tika negaidīti izņemta"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Pirms izņemšanas atvienojiet <xliff:g id="NAME">%s</xliff:g>, lai nezaudētu datus."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> tika izņemta"</string>
@@ -1147,7 +1190,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Ļauj lietojumprogrammai lasīt instalēšanas sesijas. Tādējādi lietojumprogrammai ir pieejama informācija par aktīvajām pakotņu instalācijām."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"Pieprasīt pakotņu instalēšanu"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Ļauj lietojumprogrammai pieprasīt pakotņu instalēšanu."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Pieskarieties divreiz, lai kontrolētu tālummaiņu."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Pieskarieties divreiz, lai kontrolētu tālummaiņu."</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nevarēja pievienot logrīku."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Doties uz"</string>
<string name="ime_action_search" msgid="658110271822807811">"Meklēt"</string>
@@ -1178,20 +1221,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Paziņojumu ranžēšanas pakalpojums"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ir aktivizēts."</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Lietojumprogramma <xliff:g id="APP">%s</xliff:g> aktivizēja VPN."</string>
- <string name="vpn_text" msgid="3011306607126450322">"Pieskarieties, lai pārvaldītu tīklu."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Ir izveidots savienojums ar <xliff:g id="SESSION">%s</xliff:g>. Pieskarieties, lai pārvaldītu tīklu."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Pieskarieties, lai pārvaldītu tīklu."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Ir izveidots savienojums ar: <xliff:g id="SESSION">%s</xliff:g>. Pieskarieties, lai pārvaldītu tīklu."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Notiek savienojuma izveide ar vienmēr ieslēgtu VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Izveidots savienojums ar vienmēr ieslēgtu VPN."</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Kļūda saistībā ar vienmēr ieslēgtu VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Pieskarieties, lai konfigurētu."</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Izvēlēties failu"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Neviens fails nav izvēlēts"</string>
<string name="reset" msgid="2448168080964209908">"Atiestatīt"</string>
<string name="submit" msgid="1602335572089911941">"Iesniegt"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Automobiļa režīms ir iespējots."</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Pieskarieties, lai izietu no automašīnas režīma."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Piesaiste vai tīklājs ir aktīvs."</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Pieskarieties, lai iestatītu."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Atpakaļ"</string>
<string name="next_button_label" msgid="1080555104677992408">"Tālāk"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Izlaist"</string>
@@ -1225,7 +1271,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Pievienot kontu"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Palielināt"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Samazināt"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g>: pieskarieties un turiet nospiestu."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Velciet uz augšu, lai palielinātu vērtību, un uz leju, lai to samazinātu."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Norādīt vēlākas minūtes"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Norādīt agrākas minūtes"</string>
@@ -1269,7 +1316,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB atmiņa"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Rediģēt"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Datu izmantošanas brīdinājums"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Piesk., lai sk. lietoš. un iest."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Sasniegts 2G-3G datu ierobež."</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Sasniegts 4G datu ierobežojums"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Sasniegts mob. datu ierobežojums"</string>
@@ -1281,7 +1329,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi datu ierobež. pārsniegts"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> virs norādītā ierobežojuma."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Fona dati ir ierobežoti."</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Pieskar., lai noņemtu ierobež."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Drošības sertifikāts"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sertifikāts ir derīgs."</string>
<string name="issued_to" msgid="454239480274921032">"Izdots:"</string>
@@ -1498,8 +1547,10 @@
<string name="select_year" msgid="7952052866994196170">"Atlasiet gadu."</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> tika dzēsts."</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Darbā: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Lai atspraustu šo ekrānu, pieskarieties pogai “Atpakaļ” un turiet to."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Lai atspraustu šo ekrānu, pieskarieties pogai “Pārskats” un turiet to."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Lietotne ir piesprausta. Atspraušana šajā ierīcē nav atļauta."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekrāns ir piesprausts"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekrāns ir atsprausts"</string>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index e8cbf2a..6261cfa 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Допрените ставки ќе бидат изговорени гласно и екранот ќе може да се истражува со употреба на гестикулации."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Вклучи подобрена пристапност кон веб"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"За содржината на апликацијата да биде подостапна, може да се инсталираат скрипти."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Набљудувај го напишаниот текст"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Внесете ПУК и нов ПИН-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"ПУК код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нов ПИН-код"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Допрете за да впишете лозинка"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Впишете ја лозинката за да се отклучи"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Впишете ПИН за да се отклучи"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Погрешен ПИН код."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"сега"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>м.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>м.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ч.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ч.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>д.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>д.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>г.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>г.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g>м.</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g>м.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g>ч.</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g>ч.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g>д.</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g>д.</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g>г.</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g>г.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Проблем со видео"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Видеово не е важечко за постојан тек до уредов."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Ова видео не може да се пушти."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Некои системски функции може да не работат"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Нема доволно меморија во системот. Проверете дали има слободен простор од 250 МБ и рестартирајте."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> работи"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Допри за повеќе информации или да се запре апликацијата"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Во ред"</string>
<string name="cancel" msgid="6442560571259935130">"Откажи"</string>
<string name="yes" msgid="5362982303337969312">"Во ред"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Се стартуваат апликациите."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Подигањето завршува."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> работи"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Допрете за да се префрли на апликација"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Промени апликации?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Веќе работи една апликација што треба да ја запрете пред да стартувате нова."</string>
<string name="old_app_action" msgid="493129172238566282">"Врати се на <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Вклучи <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Запрете ја старата апликација без зачувување."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> го надмина ограничувањето на меморијата"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Сликата од меморијата е собрана; допрете за да споделите"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Сподели слика од меморија?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процесот <xliff:g id="PROC">%1$s</xliff:g> го надмина ограничувањето на меморијата на својот процес од <xliff:g id="SIZE">%2$s</xliff:g>. Достапна ви е слика од меморијата да ја споделите со неговиот програмер. Бидете внимателни: сликата од меморијата може да содржи кои било од вашите лични информации до кои апликацијата има пристап."</string>
<string name="sendText" msgid="5209874571959469142">"Избери дејство за текст"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi нема пристап на интернет"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Допри за опции"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не можеше да се поврзе со Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" има слаба конекција на интернет."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Дозволете поврзување?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Започни Wi-Fi Direct. Ова ќе го исклучи Wi-Fi клиентот/хточката на пристап."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Не можеше да се стартува Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct е вклучена"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Допри за подесувања"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Прифати"</string>
<string name="decline" msgid="2112225451706137894">"Одбиј"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Поканата е испратена"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"УСБ за пренос на фотографии"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"УСБ за МИДИ"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Поврзан со УСБ додаток"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Допри за повеќе опции."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Поврзано е отстранување грешки преку УСБ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Допрете за да се оневозможи отстранувањето грешки преку USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Се зема извештајот за грешки…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Да се сподели извештајот за грешки?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Се споделува извештај за грешки…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Откриена е нова <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"За пренесување фотографии и медиуми"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Оштетена <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> е оштетена. Допрете за да поправите."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Неподдржана <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Уредов не ја поддржува <xliff:g id="NAME">%s</xliff:g>. Допрете за да поставите во поддржан формат."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> неочекувано е отстранета"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Откачете ја <xliff:g id="NAME">%s</xliff:g> пред да ја отстраните за да избегнете губење на податоците"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Отстранета <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Дозволува апликација да чита сесии на инсталирање. Тоа овозможува апликацијата да гледа детали за активни инсталации на пакет."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"барање пакети за инсталирање"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Дозволува апликацијата да бара инсталација на пакети."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Допрете двапати за регулирање на зумирањето"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Не можеше да се додаде виџет."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Оди"</string>
<string name="ime_action_search" msgid="658110271822807811">"Пребарај"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Услуга за рангирање известувања"</string>
<string name="vpn_title" msgid="19615213552042827">"Активирана VPN"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN е активирана со <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Допри за да управуваш со мрежата."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Поврзани со <xliff:g id="SESSION">%s</xliff:g>. Допри за да управуваш со мрежата."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Поврзување со секогаш вклучена VPN..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Поврзани со секогаш вклучена VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Грешка на секогаш вклучена VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Допри да конфигурираш"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Избери датотека"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Не е избрана датотека"</string>
<string name="reset" msgid="2448168080964209908">"Ресетирај"</string>
<string name="submit" msgid="1602335572089911941">"Поднеси"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Овозможен е режим на автомобил"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Допри за да излезеш од режим на работа во автомобил."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Поврзувањето или точката на пристап се активни"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Допри за да поставиш."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Следно"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Прескокни"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Додај сметка"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Зголеми"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Намали"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> допри и задржи."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Лизгај нагоре за да се зголеми и надолу за да се намали."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Зголеми минута"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Намали минута"</string>
@@ -1261,7 +1303,8 @@
<string name="storage_usb" msgid="3017954059538517278">"УСБ меморија"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Уреди"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Предупредување за користење податоци"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Допри за да видиш употреба и подесувања."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Постигна лимит за 2G-3G податоци"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Постигнат лимит за 4G податоци"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Постигна лимит за мобилни подат."</string>
@@ -1273,7 +1316,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Надминат лимит на Wi-Fi податоци"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> над назначената граница."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Подат. од заднина се ограничени"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Допри за да се отстрани ограничувањето."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Сертификат за безбедност"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Овој сертификат е важечки."</string>
<string name="issued_to" msgid="454239480274921032">"Издадено на:"</string>
@@ -1489,8 +1533,10 @@
<string name="select_year" msgid="7952052866994196170">"Избери година"</string>
<string name="deleted_key" msgid="7659477886625566590">"Избришано <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Работа <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"За да го откачите екранот, допрете и задржете Назад."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"За да го откачите екранот, допрете и задржете Краток преглед."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Апликацијата е закачена: откачување не е дозволено на уредов."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екранот е закачен"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екранот е откачен"</string>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index 7284e70..074cd59 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"സ്പർശിച്ച ഇനങ്ങൾ ഉച്ചത്തിൽ പറയപ്പെടും, ജെസ്റ്ററുകൾ ഉപയോഗിച്ച് സ്ക്രീൻ പര്യവേക്ഷണം ചെയ്യാനിടയുണ്ട്."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"മെച്ചപ്പെടുത്തിയ വെബ് പ്രവേശനക്ഷമത ഓണാക്കുക"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"അപ്ലിക്കേഷൻ ഉള്ളടക്കം കൂടുതൽ ആക്സസ്സുചെയ്യാൻ കഴിയുന്നതാക്കാൻ സ്ക്രിപ്റ്റുകൾ ഇൻസ്റ്റാളുചെയ്യാനിടയുണ്ട്."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"നിങ്ങൾ ടൈപ്പുചെയ്യുന്ന വാചകം നിരീക്ഷിക്കുക"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK, പുതിയ പിൻ കോഡ് എന്നിവ ടൈപ്പുചെയ്യുക"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK കോഡ്"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"പുതിയ പിൻ കോഡ്"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"പാസ്വേഡ് ടൈപ്പുചെയ്യുന്നതിന് സ്പർശിക്കുക"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"അൺലോക്കുചെയ്യുന്നതിന് പാസ്വേഡ് ടൈപ്പുചെയ്യുക"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"അൺലോക്കുചെയ്യുന്നതിന് പിൻ ടൈപ്പുചെയ്യുക"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"പിൻ കോഡ് തെറ്റാണ്."</string>
@@ -859,14 +861,38 @@
<item quantity="one">ഒരു മണിക്കൂർ</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ഇപ്പോൾ"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>മീറ്റർ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>മിനിറ്റ്</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>മണിക്കൂർ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>മണിക്കൂർ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ദിവസം</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ദിവസം</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>വർഷം</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>വർഷം</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>മീറ്ററിൽ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>മീറ്ററിൽ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>മണിക്കൂറിൽ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>മണിക്കൂറിൽ</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ദിവസത്തിൽ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ദിവസത്തിൽ</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>വർഷത്തിൽ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>വർഷത്തിൽ</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"വീഡിയോ പ്രശ്നം"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ഈ വീഡിയോ ഈ ഉപകരണത്തിൽ സ്ട്രീം ചെയ്യുന്നതിന് സാധുവായതല്ല."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ഈ വീഡിയോ പ്ലേ ചെയ്യാനായില്ല."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ചില സിസ്റ്റം പ്രവർത്തനങ്ങൾ പ്രവർത്തിക്കണമെന്നില്ല."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"സിസ്റ്റത്തിനായി മതിയായ സംഭരണമില്ല. 250MB സൗജന്യ സംഭരണമുണ്ടെന്ന് ഉറപ്പുവരുത്തി പുനരാരംഭിക്കുക."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> പ്രവർത്തിക്കുന്നു"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"കൂടുതൽ വിവരങ്ങൾക്ക് സ്പർശിക്കുക അല്ലെങ്കിൽ അപ്ലിക്കേഷൻ നിർത്തുക."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ശരി"</string>
<string name="cancel" msgid="6442560571259935130">"റദ്ദാക്കുക"</string>
<string name="yes" msgid="5362982303337969312">"ശരി"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ബൂട്ട് ചെയ്യൽ പൂർത്തിയാകുന്നു."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> പ്രവർത്തിക്കുന്നു"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"അപ്ലിക്കേഷനിലേക്ക് മാറുന്നതിന് സ്പർശിക്കുക"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"അപ്ലിക്കേഷനുകൾ മാറണോ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"നിങ്ങൾക്ക് പുതിയ ഒരു അപ്ലിക്കേഷൻ ആരംഭിക്കാനാവുന്നതിന് മുമ്പ്, ഇതിനകം പ്രവർത്തിക്കുന്ന മറ്റ് അപ്ലിക്കേഷൻ നിർത്തണം."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> എന്നതിലേക്ക് മടങ്ങുക"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ആരംഭിക്കുക"</string>
<string name="new_app_description" msgid="1932143598371537340">"സംരക്ഷിക്കാതെ തന്നെ പഴയ അപ്ലിക്കേഷൻ നിർത്തുക."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> മെമ്മറി പരിധി കവിഞ്ഞു"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"ഹീപ്പ് ഡംപ് ശേഖരിച്ചു; പങ്കിടാൻ സ്പർശിക്കുക"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ഹീപ്പ് ഡംപ് പങ്കിടണോ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> പ്രോസസ്സ് അതിന്റെ മെമ്മറി പരിധിയായ <xliff:g id="SIZE">%2$s</xliff:g> കവിഞ്ഞു. അതിന്റെ ഡവലപ്പറുമായി പങ്കിടാൻ ഒരു ഹീപ്പ് ഡംപ് നിങ്ങൾക്ക് ലഭ്യമാണ്. ശ്രദ്ധിക്കുക: ഈ ഹീപ്പ് ഡംപിൽ അപ്ലിക്കേഷന് ആക്സസ്സുള്ള ഏതെങ്കിലും സ്വകാര്യ വിവരങ്ങൾ അടങ്ങിയിരിക്കാം."</string>
<string name="sendText" msgid="5209874571959469142">"വാചകസന്ദേശത്തിനായി ഒരു പ്രവർത്തനം തിരഞ്ഞെടുക്കുക"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-യിൽ ഇന്റർനെറ്റ് ആക്സസ് ഇല്ല."</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ഓപ്ഷനുകൾക്കായി സ്പർശിക്കുക"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-ലേക്ക് കണക്റ്റുചെയ്യാൻ കഴിഞ്ഞില്ല"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" മോശം ഇന്റർനെറ്റ് കണക്ഷനാണുള്ളത്."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"കണക്ഷൻ അനുവദിക്കണോ?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"വൈഫൈ ഡയറക്റ്റ് ആരംഭിക്കുക. ഇത് വൈഫൈ ക്ലയന്റ്/ഹോട്ട്സ്പോട്ട് ഓഫാക്കും."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"വൈഫൈ ഡയറക്റ്റ് ആരംഭിക്കാനായില്ല."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"വൈഫൈ ഡയറക്ട് ഓണാണ്"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ക്രമീകരണങ്ങൾക്കായി സ്പർശിക്കുക"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"അംഗീകരിക്കുക"</string>
<string name="decline" msgid="2112225451706137894">"നിരസിക്കുക"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ക്ഷണം അയച്ചു"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ഫോട്ടോ കൈമാറ്റത്തിനായുള്ള USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-യ്ക്കായുള്ള USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ഒരു USB ആക്സസ്സറി കണക്റ്റുചെയ്തു"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"കൂടുതൽ ഓപ്ഷനുകൾക്ക് സ്പർശിക്കൂ."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ഡീബഗ്ഗിംഗ് കണക്റ്റുചെയ്തു"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ഡീബഗ്ഗിംഗ് ഓഫാക്കാൻ സ്പർശിക്കൂ."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ബഗ് റിപ്പോർട്ട് എടുക്കുന്നു…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ബഗ് റിപ്പോർട്ട് പങ്കിടണോ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ബഗ് റിപ്പോർട്ട് പങ്കിടുന്നു…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"പുതിയ <xliff:g id="NAME">%s</xliff:g> എന്നതിനെ തിരിച്ചറിഞ്ഞു"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ഫോട്ടോകളും മീഡിയയും ട്രാൻസ്ഫർ ചെയ്യാൻ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"കേടായ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> കേടായിരിക്കുന്നു. പരിഹരിക്കാൻ സ്പർശിക്കുക."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"പിന്തുണയില്ലാത്ത <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ഈ <xliff:g id="NAME">%s</xliff:g> എന്നതിനെ ഈ ഉപകരണം പിന്തുണയ്ക്കുന്നില്ല. പിന്തുണയുള്ള ഫോർമാറ്റിൽ സജ്ജമാക്കുന്നതിന് സ്പർശിക്കുക."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> അപ്രതീക്ഷിതമായി നീക്കംചെയ്തു"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"വിവരങ്ങൾ നഷ്ടപ്പെടുന്നത് ഒഴിവാക്കാൻ നീക്കംചെയ്യുന്നതിനുമുമ്പ് <xliff:g id="NAME">%s</xliff:g> അൺമൗണ്ടുചെയ്യുക"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> നീക്കംചെയ്തു"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ഇൻസ്റ്റാൾ ചെയ്ത സെഷനുകൾ റീഡുചെയ്യുന്നതിന് ഒരു അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. സജീവ പാക്കേജ് ഇൻസ്റ്റാളേഷനുകളെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾ കാണുന്നതിന് ഇത് അനുവദിക്കുന്നു."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ അഭ്യർത്ഥിക്കുക"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"പാക്കേജുകളുടെ ഇൻസ്റ്റാളേഷൻ അഭ്യർത്ഥിക്കാൻ ഒരു അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"സൂം ചെയ്യൽ നിയന്ത്രണങ്ങൾക്ക് രണ്ട് തവണ സ്പർശിക്കുക"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"വിജറ്റ് ചേർക്കാനായില്ല."</string>
<string name="ime_action_go" msgid="8320845651737369027">"പോവുക"</string>
<string name="ime_action_search" msgid="658110271822807811">"തിരയൽ"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"അറിയിപ്പ് റാങ്കർ സേവനം"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN സജീവമാക്കി"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> ഉപയോഗിച്ച് VPN പ്രവർത്തനക്ഷമമാക്കി"</string>
- <string name="vpn_text" msgid="3011306607126450322">"നെറ്റ്വർക്ക് നിയന്ത്രിക്കാൻ സ്പർശിക്കുക."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്തു. നെറ്റ്വർക്ക് നിയന്ത്രിക്കാൻ സ്പർശിക്കുക."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"എല്ലായ്പ്പോഴും ഓണായിരിക്കുന്ന VPN കണക്റ്റുചെയ്യുന്നു…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"എല്ലായ്പ്പോഴും ഓണായിരിക്കുന്ന VPN കണക്റ്റുചെയ്തു"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"എല്ലായ്പ്പോഴും ഓണായിരിക്കുന്ന VPN പിശക്"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"കോൺഫിഗർ ചെയ്യാൻ സ്പർശിക്കുക"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ഫയല് തിരഞ്ഞെടുക്കുക"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ഫയലൊന്നും തിരഞ്ഞെടുത്തില്ല"</string>
<string name="reset" msgid="2448168080964209908">"പുനഃസജ്ജമാക്കുക"</string>
<string name="submit" msgid="1602335572089911941">"സമർപ്പിക്കുക"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"കാർ മോഡ് പ്രവർത്തനക്ഷമമാക്കി"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"കാർ മോഡിൽ നിന്ന് പുറത്തുകടക്കാൻ സ്പർശിക്കുക."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ടെതറിംഗ് അല്ലെങ്കിൽ ഹോട്ട്സ്പോട്ട് സജീവമാണ്"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"സജ്ജീകരിക്കാൻ സ്പർശിക്കുക."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"മടങ്ങുക"</string>
<string name="next_button_label" msgid="1080555104677992408">"അടുത്തത്"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ഒഴിവാക്കുക"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"അക്കൗണ്ട് ചേർക്കുക"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"വർദ്ധിപ്പിക്കുക"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"കുറയ്ക്കുക"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> സ്പർശിച്ച് അമർത്തിപ്പിടിക്കുക."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"വർദ്ധിപ്പിക്കാൻ മുകളിലേയ്ക്കും കുറയ്ക്കാൻ താഴേയ്ക്കും സ്ലൈഡുചെയ്യുക"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"മിനിറ്റ് വർദ്ധിപ്പിക്കുക"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"മിനിറ്റ് കുറയ്ക്കുക"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB സ്റ്റോറേജ്"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"എഡിറ്റുചെയ്യുക"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ഡാറ്റ ഉപയോഗ മുന്നറിയിപ്പ്"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ഉപയോഗവും ക്രമീകരണങ്ങളും കാണാൻ സ്പർശിക്കുക."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ഡാറ്റ പരിധിയിലെത്തി"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ഡാറ്റ പരിധിയിലെത്തി"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"സെല്ലുലാർ ഡാറ്റ പരിധിയിലെത്തി"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"വൈഫൈ ഡാറ്റ പരിധി കവിഞ്ഞു"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"നിശ്ചിത പരിധിയിലും <xliff:g id="SIZE">%s</xliff:g> കൂടുതലാണ്."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"പശ്ചാത്തല ഡാറ്റ പരിമിതപ്പെടുത്തി"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"നിയന്ത്രണം നീക്കംചെയ്യാൻ സ്പർശിക്കുക."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"സുരക്ഷ സർട്ടിഫിക്കറ്റ്"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ഈ സര്ട്ടിഫിക്കറ്റ് സാധുതയുള്ളതാണ്."</string>
<string name="issued_to" msgid="454239480274921032">"ഇതിലേക്ക് നൽകി:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"വർഷം തിരഞ്ഞെടുക്കുക"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ഇല്ലാതാക്കി"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ഔദ്യോഗികം <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ഈ സ്ക്രീൻ അൺപിൻ ചെയ്യാൻ, ബാക്ക് ബട്ടൺ സ്പർശിച്ച് പിടിക്കുക."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ഈ സ്ക്രീൻ അൺപിൻ ചെയ്യാൻ, കാഴ്ച സ്പർശിച്ച് പിടിക്കുക."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"അപ്ലിക്കേഷൻ പിൻ ചെയ്തു: ഈ ഉപകരണത്തിൽ അൺപിൻ ചെയ്യാനാവില്ല."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"സ്ക്രീൻ പിൻ ചെയ്തു"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"സ്ക്രീൻ അൺപിൻ ചെയ്തു"</string>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 74d4215..4444062 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Хүрсэн зүйлсийг чангаар дуудах ба дохио ашиглан дэлгэцийг таньж болно."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Сайжруулсан веб хандалтыг асаах"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Апп контентод илүү хялбар хандуулахын тулд скриптыг суулгана."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Бичсэн текстээ ажиглах"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK-г бичээд шинэ PIN код оруулна уу"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Шинэ PIN код"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Нууц үг бичих бол хүрнэ үү"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Тайлах нууц үгийг бичнэ үү"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Тайлах PIN-г оруулна уу"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Буруу PIN код."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 цаг</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"одоо"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>минут</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>минут</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>цаг</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>цаг</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>хоног</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>хоног</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>жил</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>жил</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"> <xliff:g id="COUNT_1">%d</xliff:g>минутад</item>
+ <item quantity="one"> <xliff:g id="COUNT_0">%d</xliff:g>минутад</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"> <xliff:g id="COUNT_1">%d</xliff:g>цагт</item>
+ <item quantity="one"> <xliff:g id="COUNT_0">%d</xliff:g>цагт</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"> <xliff:g id="COUNT_1">%d</xliff:g>хоногт</item>
+ <item quantity="one"> <xliff:g id="COUNT_0">%d</xliff:g>хоногт</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"> <xliff:g id="COUNT_1">%d</xliff:g>жилд</item>
+ <item quantity="one"> <xliff:g id="COUNT_0">%d</xliff:g>жилд</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Видео алдаа"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Энэ видео энэ төхөөрөмж дээр урсгалаар гарч чадахгүй."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Энэ видеог тоглуулах боломжгүй."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Зарим систем функц ажиллахгүй байна"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Системд хангалттай сан байхгүй байна. 250MБ чөлөөтэй зай байгаа эсэхийг шалгаад дахин эхлүүлнэ үү."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ажиллаж байна"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Илүү мэдээлэл авах бол хүрэх эсвэл апп-г зогсооно уу ."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Тийм"</string>
<string name="cancel" msgid="6442560571259935130">"Цуцлах"</string>
<string name="yes" msgid="5362982303337969312">"Тийм"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Апп-г эхлүүлж байна."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Эхлэлийг дуусгаж байна."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ажиллаж байна"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Апп сэлгэх бол хүрнэ үү"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Апп сэлгэх үү?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Та шинэ апп-г ажиллуулахын өмнө зогсоох ёстой өөр апп ажиллаж байна."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>-руу буцах"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> эхлүүлэх"</string>
<string name="new_app_description" msgid="1932143598371537340">"Хуучин апп-г хадгалахгүйгээр зогсооно уу."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> санах ойн хязгаараас давсан"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Хэт их хуримтлагдсан мэдээллүүдийг цуглуулсан байна; хуваалцахаар бол дарна уу"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Хэт их хуримтлагдсан мэдээллийг хуваалцах уу?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Энэ үйл явц <xliff:g id="PROC">%1$s</xliff:g> нь үйл ажиллагааны санах ойн хязгаар болох <xliff:g id="SIZE">%2$s</xliff:g> хэмжээг давсан байна. Та хэт их хуримтлагдсан мэдээллийг тэдгээрийн өөрсдийнх нь хөгжүүлэгчтэй хуваалцах боломжтой. Болгоомжтой байгаарай: энэхүү хэт их хуримтлагдсан мэдээлэлд аппликейшнаас нэвтрэх боломжтой таны хувийн мэдээлэл агуулагдсан байж болно."</string>
<string name="sendText" msgid="5209874571959469142">"Текст илгээх үйлдлийг сонгох"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-д интернет холболт байхгүй байна"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Сонголт харахын тулд хүрнэ үү."</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-д холбогдож чадсангүй"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" Интернет холболт муу байна."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Холболтыг зөвшөөрөх үү?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Шуудыг эхлүүлнэ үү. Энэ нь Wi-Fi клиент/холболтын цэг унтраана."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Шуудыг эхлүүлж чадсангүй."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Шууд асав"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Тохируулах бол хүрнэ үү"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Зөвшөөрөх"</string>
<string name="decline" msgid="2112225451706137894">"Татгалзах"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Урилга илгээгдсэн"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Фото зураг шилжүүлэх USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-ийн USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB төхөөрөмжид холбогдов"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Нэмэлт сонголтыг харахын тулд дарна."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB дебаг холбогдсон"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB дебагийг идэвхгүй болгох бол хүрнэ үү."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Алдааны тайланг авч байна..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Алдааны тайланг хуваалцах уу?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Алдааны тайланг хуваалцаж байна..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Шинэ <xliff:g id="NAME">%s</xliff:g> илэрлээ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Зураг, медиа шилжүүлэхэд зориулсан"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> гэмтсэн"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> гэмтсэн байна. Засахын тулд хүрнэ үү."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Дэмжээгүй <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Энэ төхөөрөмж <xliff:g id="NAME">%s</xliff:g>-ыг дэмжээгүй байна. Дэмжсэн хэлбэршүүлэлтэд тохируулахын тулд хүрнэ үү."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>-ыг гэнэт гаргасан байна"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Өгөгдөл алдагдахаас сэргийлж <xliff:g id="NAME">%s</xliff:g>-ыг гаргахаас өмнө салга"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g>-ыг гаргасан"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Аппликешн-д суулгах сешн уншихыг зөвшөөрнө. Энэ нь идэвхтэй багцуудыг суулгалтын талаар дэлгэрэнгүй мэдээллийг үзэх боломж олгоно."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"багц суулгахыг хүсэх"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Аппликейшн нь багц суулгахыг хүсэх боломжтой."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Өсгөх контрол дээр хоёр удаа товшино уу"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Өсгөх контрол дээр хоёр удаа товшино уу"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Виджет нэмж чадсангүй."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Очих"</string>
<string name="ime_action_search" msgid="658110271822807811">"Хайх"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Мэдэгдлийг ангилах үйлчилгээ"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN идэвхтэй болов"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN-г <xliff:g id="APP">%s</xliff:g> идэвхтэй болгов"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Сүлжээг удирдах бол хүрнэ үү."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>-д холбогдов. Сүлжээг удирдах бол хүрнэ үү."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Сүлжээг удирдах бол товшино уу."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g>-д холбогдов. Сүлжээг удирдах бол товшино уу."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Байнгын VPN-д холбогдож байна..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Байнга VPN холбоотой"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Байнгын VPN алдаа"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Тохируулах бол хүрнэ үү"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Файл сонгох"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Сонгосон файл байхгүй"</string>
<string name="reset" msgid="2448168080964209908">"Бүгдийг цэвэрлэх"</string>
<string name="submit" msgid="1602335572089911941">"Илгээх"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Машины горим идэвхтэй болов"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Машины горимоос гарах бол хүрнэ үү."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Модем болгох эсвэл идэвхтэй цэг болгох"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Тохируулах бол хүрнэ үү."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Буцах"</string>
<string name="next_button_label" msgid="1080555104677992408">"Дараах"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Алгасах"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Аккаунт нэмэх"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Өсөх"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Бууруулах"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> хүрээд барина уу."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Өсгөх бол дээшээ бууруулах бол доошоо гулсуулна уу."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Минут өсгөх"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Минутыг бууруулах"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB сан"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Засах"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Дата хэрэглээний анхааруулга"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Ашиглалт болон тохиргоог харах бол хүрнэ үү."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G дата хязгаарт хүрсэн"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G дата хязгаарт хүрсэн"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Үүрэн дата хязгаарт хүрсэн"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi дата хязгаар хэтрэв"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> заасан хязгаарыг давав."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Арын дата хязгаарлагдсан"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Хязгаарлалтыг хасах бол хүрнэ үү."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Аюулгүй сертификат"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Сертификат хүчинтэй."</string>
<string name="issued_to" msgid="454239480274921032">"Гаргуулсан:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Жилийг сонгоно уу"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> устсан"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Ажлын <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Энэ дэлгэцийг цуцлахын тулд Буцах товчлуурыг дараад, хүлээнэ үү."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Энэ дэлгэцийг цуцлахын тулд Тойм харагдацанд хүрч барина."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App-ыг тусгайлан тэмдэглэсэн байна: Энэ төхөөрөмж дээр тусгайлан тэмдэглэсэн сонголтыг устгах боломжгүй."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Дэлгэцийг тогтоосон"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Дэлгэцийг сулласан"</string>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index 33635a5..e04b108 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"स्पर्श केलेले आयटम मोठ्याने बोलले जातील आणि जेश्चरचा वापर करून स्क्रीन एक्सप्लोर केली जाऊ शकते."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"वर्धित केलेली वेब प्रवेशयोग्यता चालू करा"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"अॅप सामग्री अधिक प्रवेशयोग्य बनविण्यासाठी कदाचित स्क्रिप्ट स्थापित केली जाऊ शकतात."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"आपण टाइप करता त्या मजकुराचे निरीक्षण करा"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK आणि नवीन पिन कोड टाइप करा"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK कोड"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"नवीन पिन कोड"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"संकेतशब्द टाइप करण्यासाठी स्पर्श करा"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"अनलॉक करण्यासाठी संकेतशब्द टाइप करा"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"अनलॉक करण्यासाठी पिन टाइप करा"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"अयोग्य पिन कोड."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> तास</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"आत्ता"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>मि</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>मि</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>ता</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ता</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>दि</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>दि</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>व</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>व</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>मिनिटामध्ये</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>मिनिटांमध्ये</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>तासामध्ये</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>तासांमध्ये</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>दिवसामध्ये</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>दिवसांमध्ये</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>वर्षामध्ये</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>वर्षांमध्ये</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"व्हिडिओ समस्या"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"या डिव्हाइसवर प्रवाहित करण्यासाठी हा व्हिडिओ वैध नाही."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"हा व्हिडिओ प्ले करू शकत नाही."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"काही सिस्टम कार्ये कार्य करू शकत नाहीत"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"सिस्टीमसाठी पुरेसे संचयन नाही. आपल्याकडे 250MB मोकळे स्थान असल्याचे सुनिश्चित करा आणि रीस्टार्ट करा."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चालत आहे"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"अधिक माहितीसाठी किंवा अॅप थांबविण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ठीक"</string>
<string name="cancel" msgid="6442560571259935130">"रद्द करा"</string>
<string name="yes" msgid="5362982303337969312">"ठीक"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅप्स प्रारंभ करत आहे."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"बूट समाप्त होत आहे."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> चालत आहे"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"अॅप वर स्विच करण्यासाठी स्पर्श करा"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"अॅप्स स्विच करायचे?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"आपण एक नवीन प्रारंभ करण्यापूर्वी आधीपासून चालणारा दुसरा अॅप थांबविणे आवश्यक आहे."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> कडे परत"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> प्रारंभ करा"</string>
<string name="new_app_description" msgid="1932143598371537340">"जतन न करता जुना अॅप थांबवा."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ने मेमेरी मर्यादा वाढविली"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"हीप डंप गोळा केले गेले आहे, सामायिक करण्यासाठी स्पर्श करा"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"हीप डंप सामायिक करायचे?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> प्रक्रियेने त्याची <xliff:g id="SIZE">%2$s</xliff:g> ची प्रक्रिया मेमरी मर्यादा ओलांडली आहे. त्याच्या विकासकासह सामायिक करण्यासाठी आपल्याकरिता हीप डंप उपलब्ध आहे. सावधगिरी बाळगा: या हीप डंपमध्ये आपली कोणतीही वैयक्तिक माहिती असू शकते ज्यात अनुप्रयोग प्रवेश करू शकतो."</string>
<string name="sendText" msgid="5209874571959469142">"मजकुरासाठी क्रिया निवडा"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"वाय-फाय मध्ये इंटरनेट प्रवेश नाही"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"पर्यायांसाठी स्पर्श करा"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाय-फाय ला कनेक्ट करू शकलो नाही"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" खराब इंटरनेट कनेक्शन आहे."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"कनेक्शनला अनुमती द्यायची?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"वाय-फाय थेट प्रारंभ करा. हे वाय-फाय क्लायंट/हॉटस्पॉट बंद करेल."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"वाय-फाय थेट प्रारंभ करू शकलो नाही."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"वाय-फाय थेट चालू आहे"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"सेटिंग्जसाठी स्पर्श करा"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"स्वीकार करा"</string>
<string name="decline" msgid="2112225451706137894">"नकार द्या"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"आमंत्रण पाठविले"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"फोटो स्थानांतरणासाठी USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI साठी USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB उपसाधनावर कनेक्ट केले"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"अधिक पर्यायांसाठी स्पर्श करा."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB डीबग करणे कनेक्ट केले"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB डीबग करणे अक्षम करण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"दोष अहवाल घेत आहे..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"बग अहवाल सामायिक करायचा?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"दोष अहवाल सामायिक करीत आहे..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"नवीन <xliff:g id="NAME">%s</xliff:g> आढळले"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"फोटो आणि मीडिया स्थानांतरित करण्यासाठी"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> दूषित झालेले"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> दूषित आहे. निराकरण करण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> असमर्थित"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"हे डिव्हाइस या <xliff:g id="NAME">%s</xliff:g> ला समर्थन देत नाही. समर्थित फॉर्मेटमध्ये सेट करण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> अनपेक्षितरित्या काढले"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"डेटा गमावणे टाळण्यासाठी काढण्यापूर्वी <xliff:g id="NAME">%s</xliff:g> अनमाउंट करा"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> काढले"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"अनुप्रयोगास स्थापना सत्र वाचण्याची अनुमती देते. हे सक्रिय पॅकेज स्थापनांविषयी तपशील पाहाण्याची यास अनुमती देते."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"पॅकेज स्थापित करण्यासाठी विनंती करा"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"पॅकेजच्या स्थापना करण्यासाठी अनुप्रयोगास अनुमती देते."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"झूम नियंत्रणासाठी दोनदा स्पर्श करा"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"विजेट जोडू शकलो नाही."</string>
<string name="ime_action_go" msgid="8320845651737369027">"जा"</string>
<string name="ime_action_search" msgid="658110271822807811">"शोधा"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"सूचना रॅंकर सेवा"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN सक्रिय"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> द्वारे VPN सक्रिय केले आहे"</string>
- <string name="vpn_text" msgid="3011306607126450322">"नेटवर्क व्यवस्थापित करण्यासाठी स्पर्श करा."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> वर कनेक्ट केले. नेटवर्क व्यवस्थापित करण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN कनेक्ट करणे नेहमी-चालू…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN कनेक्ट केलेले नेहमी-चालू"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"VPN त्रुटी नेहमी-चालू"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"कॉन्फिगर करण्यासाठी स्पर्श करा"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"फाईल निवडा"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"फाईल निवडली नाही"</string>
<string name="reset" msgid="2448168080964209908">"रीसेट करा"</string>
<string name="submit" msgid="1602335572089911941">"सबमिट करा"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"कार मोड सक्षम केला"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"कार मोड मधून निर्गमन करण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"टिथरिंग किंवा हॉटस्पॉट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"सेट अप साठी स्पर्श करा."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"परत"</string>
<string name="next_button_label" msgid="1080555104677992408">"पुढील"</string>
<string name="skip_button_label" msgid="1275362299471631819">"वगळा"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"खाते जोडा"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"वाढवा"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"कमी करा"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> स्पर्श करा आणि धरुन ठेवा."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"वाढवण्यासाठी वर आणि कमी करण्यासाठी खाली स्लाइड करा."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"मिनिट वाढवा"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"मिनिट कमी करा"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB संचयन"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"संपादित करा"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"डेटा वापर चेतावणी"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"वापर आणि सेटिंग्ज पाहण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G डेटा मर्यादा गाठली"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G डेटा मर्यादा गाठली"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"सेल्युलर डेटा मर्यादा गाठली"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"वाय-फाय डेटा मर्यादा ओलांडली"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"निर्दिष्ट केलेल्या मर्यादेबाहेर <xliff:g id="SIZE">%s</xliff:g>."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"पार्श्वभूमी डेटा प्रतिबंधित केला"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"प्रतिबंध काढण्यासाठी स्पर्श करा."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षितता प्रमाणपत्र"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"हे प्रमाणपत्र वैध आहे."</string>
<string name="issued_to" msgid="454239480274921032">"यावर जारी केले:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"वर्ष निवडा"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> हटविली"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्य <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ही स्क्रीन अनपिन करण्यासाठी, परत ला स्पर्श करा आणि धरून ठेवा."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ही स्क्रीन अनपिन करण्यासाठी, विहंगावलोकनास स्पर्श करा आणि धरून ठेवा."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"अॅप पिन केलेला आहे: या डिव्हाइसवर अनपिन करण्यास अनुमती नाही."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रीन पिन केली"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"स्क्रीन अनपिन केली"</string>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index 2840836..e4dd4879 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dapatkan kembali kandungan tetingkap"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Periksa kandungan tetingkap yang berinteraksi dengan anda."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Hidupkan Jelajah melalui Sentuhan"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Item yang disentuh akan disebut dengan kuat dan skrin boleh dijelajah menggunakan gerak isyarat."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Hidupkan kebolehcapaian web dipertingkat"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skrip boleh dipasang untuk menjadikan kandungan apl lebih mudah diakses."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Perhatikan teks yang anda taip"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Taip PUK dan kod PIN baharu"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kod PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kod PIN Baharu"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Sentuh untuk menaip kata laluan"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Taip kata laluan untuk membuka kunci"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Taip PIN untuk membuka kunci"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kod PIN salah."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 jam</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"sekarang"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>j</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>j</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>t</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>t</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>j</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>j</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">dalam <xliff:g id="COUNT_1">%d</xliff:g>t</item>
+ <item quantity="one">dalam <xliff:g id="COUNT_0">%d</xliff:g>t</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Masalah video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Maaf, video ini tidak sah untuk penstriman ke peranti ini."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Tidak dapat mainkan video ini."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Beberapa fungsi sistem mungkin tidak berfungsi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Tidak cukup storan untuk sistem. Pastikan anda mempunyai 250MB ruang kosong dan mulakan semula."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang berjalan"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Sentuh untuk maklumat lanjut atau untuk menghentikan apl."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Batal"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulakan apl."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"But akhir."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> dijalankan"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Sentuh untuk bertukar ke apl"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Tukar apl?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Apl lain sudah pun dijalankan yang mesti dihentikan sebelum anda boleh memulakan yang baharu."</string>
<string name="old_app_action" msgid="493129172238566282">"Kembali ke <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Mulakan <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Hentikan apl lama tanpa menyimpan."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> melebihi had memori"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Longgokan timbunan telah dikumpul; sentuh untuk berkongsi"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Kongsikan longgokan timbunan?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proses <xliff:g id="PROC">%1$s</xliff:g> telah melebihi had memori proses sebanyak <xliff:g id="SIZE">%2$s</xliff:g>. Longgokan timbunan tersedia untuk anda kongsikan dengan pembangun aplikasi. Sila berhati-hati: longgokan timbunan ini boleh mengandungi sebarang maklumat peribadi anda yang boleh diakses oleh aplikasi itu."</string>
<string name="sendText" msgid="5209874571959469142">"Pilih tindakan untuk teks"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tiada akses Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Sentuh untuk mendapatkan pilihan"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Tidak boleh menyambung kepada Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" mempunyai sambungan internet yang kurang baik."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Benarkan sambungan?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Mulakan Wi-Fi Langsung. Hal ini akan mematikan pengendalian klien/liputan Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Tidak dapat memulakan Wi-Fi Langsung."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct dihidupkan"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Sentuh untuk tetapan"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Terima"</string>
<string name="decline" msgid="2112225451706137894">"Tolak"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Jemputan dihantar"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB untuk pemindahan foto"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB untuk MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Disambungkan kepada aksesori USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Sentuh untuk mendapatkan lagi pilihan."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Penyahpepijatan USB disambungkan"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Sentuh untuk melumpuhkan penyahpepijatan USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Mengambil laporan pepijat…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Kongsi laporan pepijat?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Berkongsi laporan pepijat…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> baharu dikesan"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Untuk memindahkan foto dan media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> rosak"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> rosak. Sentuh untuk membetulkannya."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> tidak disokong"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Peranti ini tidak menyokong <xliff:g id="NAME">%s</xliff:g> ini. Sentuh untuk menyediakannya dalam format yang disokong."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ditanggalkan tanpa dijangka"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Nyahlekap <xliff:g id="NAME">%s</xliff:g> sebelum menanggalkannya untuk mengelakkan kehilangan data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> dialih keluar"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Membenarkan aplikasi membaca sesi pemasangan Ini membenarkan apl melihat butiran mengenai pemasangan pakej yang aktif."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"minta pakej pemasangan"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Membenarkan aplikasi meminta pemasangan pakej."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Sentuh dua kali untuk mendapatkan kawalan zum"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Ketik dua kali untuk mendapatkan kawalan zum"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Tidak dapat menambahkan widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Pergi"</string>
<string name="ime_action_search" msgid="658110271822807811">"Cari"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Perkhidmatan penentu kedudukan pemberitahuan"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN diaktifkan"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN diaktifkan oleh <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Sentuh untuk mengurus rangkaian."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Bersambung ke <xliff:g id="SESSION">%s</xliff:g>. Sentuh untuk mengurus rangkaian."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Ketik untuk mengurus rangkaian."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Bersambung kepada <xliff:g id="SESSION">%s</xliff:g>. Ketik untuk mengurus rangkaian."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sentiasa hidup sedang disambungkan..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sentiasa hidup telah disambungkan"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Ralat VPN sentiasa hidup"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Sentuh untuk mengkonfigurasikan"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Pilih fail"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Tiada fail dipilih"</string>
<string name="reset" msgid="2448168080964209908">"Tetapkan semula"</string>
<string name="submit" msgid="1602335572089911941">"Serah"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mod kereta didayakan"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Sentuh untuk keluar dari mod kereta."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Penambatan atau titik panas aktif"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Sentuh untuk menyediakan."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Kembali"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seterusnya"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Langkau"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Tambah akaun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Tingkatkan"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Kurangkan"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> sentuh terus."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Luncurkan ke atas untuk meningkatkan dan ke bawah untuk mengurangkan."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tingkatkan minit"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Kurangkan minit"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Storan USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Amaran penggunaan data"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Sentuh untuk melihat penggunaan dan tetapan."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Mencapai had data 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Mencapai had data 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mencapai had data selular"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Melebihi had data Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> melebihi had yang ditentukan."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data latar belakang terhad"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Sentuh untuk membuang sekatan."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sijil keselamatan"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sijil ini sah."</string>
<string name="issued_to" msgid="454239480274921032">"Dikeluarkan kepada:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Pilih tahun"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> dipadamkan"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Kerja <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Untuk menyahsemat skrin ini, sentuh dan tahan Kembali."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Untuk menyahsemat skrin ini, sentuh dan tahan Ikhtisar."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Apl disemat: Nyahsemat tidak dibenarkan pada peranti ini."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skrin disemat"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skrin dinyahsemat"</string>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index 19d0a3b..f22d37e 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ထိတွေ့လိုက်တဲ့ အရာများကို အသံနဲ့ ထုတ်ပြောမှာဖြစ်ပြီး ဖန်သားပြင်ပေါကနေ လက်နဲ့ ထပ်မံ ကြည့်ရှုနိုင်ပါတယ်"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ပိုမိုကောင်းမွန်သော ဝက်ဘ်အများသုံးစွဲနိုင်မှုကို ဖွင့်ရန်"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"အပလီကေးရှင်းကို ပိုမိုပြည့်စုံစေရန် စကရစ်များကို သွင်းနိုင်ပါတယ်"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ရိုက်သောစာများကို သေချာစွာ စစ်ဆေးပါ"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK နှင့် PIN ကုဒ် အသစ်ကို ရိုက်ထည့်ပါ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK နံပါတ်"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"PIN ကုဒ် အသစ်"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"စကားဝှက် ရိုက်ရန် ထိပါ"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"သော့ဖွင့်ရန် စကားဝှက်ကို ရိုက်ထည့်ပါ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"သော့ဖွင့်ရန် PIN ကို ရိုက်ထည့်ပါ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ပင်နံပါတ်မှားနေပါသည်"</string>
@@ -859,14 +861,38 @@
<item quantity="one"> 1 နာရီ</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ယခု"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>မိနစ်</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>မိနစ်</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>နာရီ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>နာရီ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ရက်</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ရက်</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>နှစ်</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>နှစ်</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>မိနစ်အတွင်း</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>မိနစ်အတွင်း</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>နာရီအတွင်း</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>နာရီအတွင်း</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ရက်အတွင်း</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ရက်အတွင်း</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>နှစ်အတွင်း</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>နှစ်အတွင်း</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ဗီဒီယို ပြဿနာ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ဒီဗိဒီယိုမှာ ဒီကိရိယာ ပေါ်မှာ ဖွင့်ကြည့်၍ မရနိုင်ပါ။"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ဒီဗီဒီယိုကို ပြသလို့ မရပါ"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"တချို့ စနစ်လုပ်ငန်းများ အလုပ် မလုပ်ခြင်း ဖြစ်နိုင်ပါသည်"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"စနစ်အတွက် သိုလှောင်ခန်း မလုံလောက်ပါ။ သင့်ဆီမှာ နေရာလွတ် ၂၅၀ MB ရှိတာ စစ်ကြည့်ပြီး စတင်ပါ။"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> က အလုပ်လုပ်နေသည်။"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"အချက်အလက်များ ပိုသိရန် သို့မဟုတ် အပလီကေးရှင်းကို ရပ်ရန် တို့ထိလိုက်ပါ။"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ကောင်းပြီ"</string>
<string name="cancel" msgid="6442560571259935130">"ထားတော့"</string>
<string name="yes" msgid="5362982303337969312">"ကောင်းပြီ"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"appများကို စတင်နေ"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"လုပ်ငန်းစနစ်ထည့်သွင်း၍ ပြန်လည်စတင်ရန် ပြီးပါပြီ"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> က အလုပ်လုပ်နေသည်"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ppဆီ ပြောင်းရန် ထိပါ"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"appများကို ပြောင်းမလား?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"အခြား app တစ်ခု အလုပ်လုပ်နေ၍ သင်က အသစ် တစ်ခုကို မစမီ ၎င်းကို ရပ်ပစ်ရမည်။"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>သို့ပြန်သွားရန်"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>စတင်ပါ"</string>
<string name="new_app_description" msgid="1932143598371537340">"app အဟောင်းကို မသိမ်းဆည်းဘဲ ရပ်လိုက်ပါ။"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> သိမ်းထားနိုင်မှု အကန့်အသတ် ကျော်လွန်နေ"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"အရေးပေါ် သိမ်းဆည်းပေးမှု လုပ်ပေးပြီးဖြစ်။ မျှဝေရန် တို့ပါ။"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"အရေးပေါ် သိမ်းထားပေးမှု ကို မျှဝေမလား။"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> လုပ်ဆောင်နိုင်မှုသည် <xliff:g id="SIZE">%2$s</xliff:g>ရှိသည့် သိမ်းထားနိုင်မှု ပမာဏထက်ကျော်လွန်သွားသည်။ စက်လုပ်ဆောင်ရည်မြင့်တင်ပေးသူနှင့် မျှဝေမှုလုပ်ရန် အရေးပေါ်သိမ်းထားပေးမှု ရမည်။"</string>
<string name="sendText" msgid="5209874571959469142">"စာတိုအတွက် လုပ်ဆောင်ချက် ရေးပါ"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"ဝိုင်-ဖို်ငတွင် အင်တာနက် ဝင်ရောက်သုံးခွင့် မရှိပါ"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ရွေးချယ်စရာများအတွက် ထိပါ"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ဝိုင်ဖိုင်ကိုချိတ်ဆက်မရပါ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" အင်တာနက် ဆက်သွယ်မှု ကောင်းကောင်းမရှိပါ"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ချိတ်ဆက်မှုကို ခွင့်ပြုမလား?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"တိုက်ရိုက်ဝိုင်ဖိုင်ကို စတင်ပါ။ ၎င်းသည် ဝိုင်ဖိုင် ဟော့စပေါ့ကို ရပ်ဆိုင်းစေမှာ ဖြစ်ပါသည်။"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"တိုက်ရိုက်ဝိုင်ဖိုင်ကို စတင်လို့ မရပါ"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"ဝိုင်ဖိုင် တိုက်ရိုက် ကိုဖွင့်ထားသည်"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"အပြင်အဆင်များအတွက်ထိပါ"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"လက်ခံရန်"</string>
<string name="decline" msgid="2112225451706137894">"လက်မခံပါ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ဖိတ်ကြားချက် ပို့ပြီး"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ဓာတ်ပုံလွှဲပြောင်းရန်အတွက် USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI အတွက် USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USBတွဲဖက်ပစ္စည်းအား ချိတ်ဆက်ထားသည်"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"ထပ်မံရွေးချယ်စရာများအတွက် ထိပါ"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB အမှားစစ်ခြင်းအား ချိတ်ဆက်ထားသည်"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ဒီဘာဂင် ပိတ်ရန် ထိပါ။"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ချွတ်ယွင်းချက် အစီရင်ခံစာပြုစုနေသည်..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ချွတ်ယွင်းချက် အစီရင်ခံစာကို မျှဝေမလား။"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ချွတ်ယွင်းမှုအစီရင်ခံစာ မျှဝေနေသည်…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> အသစ်တွေ့ရှိပါသည်"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ဓာတ်ပုံနှင့် မီဒီယာများ လွှဲပြောင်းရန်အတွက်"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ပျက်စီးနေသော <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> ပျက်စီးနေသည်။ ပြင်ရန် ထိပါ။"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ပံ့ပိုးထားခြင်း မရှိသော <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ဤ <xliff:g id="NAME">%s</xliff:g> အား စက်ကိရိယာမှ ပံ့ပိုးထားခြင်း မရှိပါ။ ပံ့ပိုးထားသည့် ပုံစံအဖြစ် သတ်မှတ်ပြင်ဆင်ရန် ထိပါ။"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> မမျှော်လင့်ဘဲ ဖယ်ရှားခဲ့သည်"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ဒေတာဆုံးရှုံးခြင်းမှ ကာကွယ်ရန် မဖယ်ရှားမှီ <xliff:g id="NAME">%s</xliff:g> ကိုဖြုတ်ပါ။"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ဖယ်ရှားလိုက်ပြီ"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"အပလီကေးရှင်းအား တပ်ဆင်ရေး ချိတ်ဆက်မှုများကို ဖတ်ခွင့်ပြုသည်။ ၎င်းသည် ဖွင့်သုံးနေသည့် အထုပ်အား တပ်ဆင်မှုဆိုင်ရာ အသေးိစတ်များကို ကြည့်ရှုခွင့် ပြုသည်။"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"တပ်ဆင်ရေး အထုပ်များကို တောင်းဆိုပါ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ပက်ကေ့များ သွင်းယူခြင်းအတွက် တောင်းဆိုရန် အပ္ပလီကေးရှင်းအား ခွင့်ပြုပါ"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ချုံ့ချဲ့မှုကို ထိန်းချုပ်ရန် အတွက် နှစ်ကြိမ် ထိပါ"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ဝဒ်ဂျက်ထည့်လို့ မရပါ"</string>
<string name="ime_action_go" msgid="8320845651737369027">"သွားပါ"</string>
<string name="ime_action_search" msgid="658110271822807811">"ရှာဖွေခြင်း"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"သတိပေးချက် အဆင့်သတ်မှတ်ခြင်းဝန်ဆောင်မှု"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ဖွင့်ထားပါသည်"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g>မှVPNအလုပ်လုပ်နေသည်"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ကွန်ရက် ထိန်းသိမ်းရန် တို့ထိပါ"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> ကို ဆက်သွယ်ထားပါသည်။ကွန်ရက်ကို ထိန်းသိမ်းရန် တို့ထိပါ။"</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"အမြဲတမ်းဖွင့်ထား VPN ဆက်သွယ်နေစဉ်…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"အမြဲတမ်းဖွင့်ထား VPN ဆက်သွယ်မှုရှိ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"အမြဲတမ်းဖွင့်ထား VPN အမှား"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ပြင်ဆင်ရန် ထိလိုက်ပါ"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ဖိုင်ရွေးချယ်ရန်"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"မည်သည့်ဖိုင်ကိုမှမရွေးပါ"</string>
<string name="reset" msgid="2448168080964209908">"ပြန်လည်စတင်စေရန်"</string>
<string name="submit" msgid="1602335572089911941">"တင်ပြရန်"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ကားထဲတွင်အသုံးပြုနိုင်သောစနစ် ရရှိနိုင်သည်"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ကားပေါ်ရောက် အခြေအနေမှ ထွက်ရန် ထိလိုက်ပါ"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"တဆင့်ပြန်လည်လွှင့်ခြင်း သို့မဟုတ် ဟော့စပေါ့ ဖွင့်ထားသည်"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"အပြင်အဆင်ပြုလုပ်ရန် ပိုမိုသိနားလည်စေရန် တို့ထိပါ။"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"နောက်သို့"</string>
<string name="next_button_label" msgid="1080555104677992408">"နောက်"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ကျော်"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"အကောင့်ထပ်ထည့်ရန်"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"တိုးရန်"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"လျှော့ရန်"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ကြာကြာ ဖိ ကိုင်ထားပါ"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"တိုးရန် အပေါ်သို့ ပွတ်ဆွဲပြီး၊ လျှော့ရန် အောက်သို့ ပွတ်ဆွဲပါ"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"မိနစ်တိုးရန်"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"မိနစ်လျော့ရန်"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USBဖြင့် သိမ်းဆည်း"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ပြင်ဆင်ရန်"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ဒေတာအသုံးပြုမှုသတိပေးချက်"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ဆက်တင်နှင့်သုံးစွဲမှုကြည့်ရန်ထိပါ"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ဒေတာ ကန့်သတ်ချက် ပြည့်မီသွားပြီ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ဒေတာ ကန့်သတ်ချက် ပြည့်မီသွားပြီ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ဆယ်လူလာ ဒေတာ ကန့်သတ်ချက် ပြည့်မီသွားပြီ"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"သတ်မှတ်ဝိုင်ဖိုင်ဒေတာထက်ကျော်နေ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"သက်မှတ်နှုန်းထက် <xliff:g id="SIZE">%s</xliff:g> ကျော်နေပါသည်"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"နောက်ခံဒေတာ ကန့်သတ်ထားသည်"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ကန့်သတ်ထားမှု ဖျက်ရန် ထိလိုက်ပါ"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"လုံခြံုမှုဆိုင်ရာ အသိအမှတ်ပြုလက်မှတ်"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ဤအသိအမှတ်ပြုလက်မှတ်မှာ တရားဝင်သည်"</string>
<string name="issued_to" msgid="454239480274921032">"ထုတ်ပေးသည်-"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"ခုနှစ်ကို ရွေးပါ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ကို ဖျက်ပြီးပါပြီ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"အလုပ် <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ဤဖန်သားပြင်ကို ပင်ဖြုတ်ရန် နောက်သို့ ကိုထိပြီး ဖိထားပါ။"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ဒီမျက်နှာပြင် ပင်ထိုးမှုကို ဖြုတ်ရန် ခြုံကြည့်မှု ခလုတ်ကို ထိကိုင်ထားပါ။"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appကို ပင်ထိုးထားသည်။ ပင်ဖျက်ခြင်းကို ဒီစက်မှာ မရနိုင်ပါ။"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"မျက်နှာပြင်ကို ပင်ထိုးထား"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"မျက်နှာပြင် ပင်ထိုးမှု ဖြတ်လိုက်ပြီ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index a6377d4..ebb37da 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -220,7 +220,7 @@
<string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiv rapport"</string>
<string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Bruk dette alternativet i de fleste tilfeller. Da kan du spore fremgangen for rapporten, skrive inn flere detaljer om problemet samt ta skjermdumper. Noen deler som tar lang tid å behandle, blir kanskje utelatt."</string>
<string name="bugreport_option_full_title" msgid="6354382025840076439">"Fullstendig rapport"</string>
- <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Bruk dette alternativet for minst mulig forstyrrelser på systemet når enheten din er treg eller ikke svarer, eller når du trenger alle rapportdelene. Det tas ikke noen skjermdump, og du kan ikke legge til flere detaljer."</string>
+ <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Bruk dette alternativet for minst mulig forstyrrelse på systemet når enheten din er treg eller ikke svarer, eller når du trenger alle rapportdelene. Det tas ikke noen skjermdump, og du kan ikke legge til flere detaljer."</string>
<plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
<item quantity="other">Tar skjermdump for feilrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder.</item>
<item quantity="one">Tar skjermdump for feilrapporten om <xliff:g id="NUMBER_0">%d</xliff:g> sekund.</item>
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"hente innhold i vinduer"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Den analyserer innholdet i vinduer du samhandler med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"slå på berøringsutforsking"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Berørte elementer leses høyt, og skjermen kan utforskes ved hjelp av bevegelser."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"slå på forbedret nettilgjengelighet"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skript kan installeres for å gjøre appinnhold mer tilgjengelig."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"observere teksten du skriver inn"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Skriv inn PUK-kode og ny personlig kode"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny PIN-kode"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Trykk for å skrive inn passord"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Skriv inn passord for å låse opp"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Skriv inn PIN-kode for å låse opp"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Feil personlig kode."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 time</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"nå"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> t</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> t</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> år</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> t</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> t</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> år</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Videoproblem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Denne videoen er ikke gyldig for direkteavspilling på enheten."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Kan ikke spille av denne videoen."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Enkelte systemfunksjoner fungerer muligens ikke slik de skal"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Det er ikke nok lagringsplass for systemet. Kontrollér at du har 250 MB ledig plass, og start på nytt."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> kjører"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Trykk for mer informasjon, eller for å stoppe appen."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Avbryt"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starter apper."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Ferdigstiller oppstart."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> kjører"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Trykk for å bytte til appen"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vil du bytte app?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"En annen app kjører og må stoppes før du kan starte en ny app."</string>
<string name="old_app_action" msgid="493129172238566282">"Gå tilbake til <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stopp den gamle appen uten å lagre."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> er over minnegrensen"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Minnedumpen («heap dump») er samlet inn – trykk for å dele"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Vil du dele minnedumpen («heap dump»)?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g>-prosessen er <xliff:g id="SIZE">%2$s</xliff:g> over grensen for prosessminne. En minnedump («heap dump») er tilgjengelig for deling med utvikleren. Vær forsiktig – denne minnedumpen kan inneholde noen av de personlige opplysningene dine som appen har tilgang til."</string>
<string name="sendText" msgid="5209874571959469142">"Velg handling for tekst"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi har ikke Internett-tilgang"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Trykk for å se alternativene"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kan ikke koble til Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" har en dårlig Internett-tilkobling."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vil du tillat tilkoblingen?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. Dette deaktiverer Wi-Fi-klienten/-sonen."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kunne ikke starte Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct er slått på"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Berør for å se innstillinger"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Godta"</string>
<string name="decline" msgid="2112225451706137894">"Avslå"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitasjonen er sendt"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for bildeoverføring"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Koblet til et USB-tilbehør"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Trykk for å se flere alternativer."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-feilsøking tilkoblet"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Trykk for å slå av USB-feilsøking."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Kjører feilrapport …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vil du dele feilrapporten?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deler feilrapporten …"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> ble oppdaget"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For overføring av bilder og medier"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Skadet <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> er skadet. Trykk for å fikse."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> som ikke støttes"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Denne enheten støtter ikke <xliff:g id="NAME">%s</xliff:g>. Trykk for å konfigurere i et støttet format."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ble uventet fjernet"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Løs ut <xliff:g id="NAME">%s</xliff:g> før du fjerner den for å unngå tap av data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ble fjernet."</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Tillater en app å lese installeringsøkter. Dette gjør det mulig for den å se detaljer om aktive pakkeinstallasjoner."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"be om installasjon av pakker"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Lar apper be om installasjon av pakker."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Trykk to ganger for zoomkontroll"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Trykk to ganger for zoomkontroll"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Kunne ikke legge til modulen."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Utfør"</string>
<string name="ime_action_search" msgid="658110271822807811">"Søk"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Tjeneste for rangering av varsler"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN er aktivert"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN er aktivert av <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Trykk for å administrere nettverket."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Koblet til <xliff:g id="SESSION">%s</xliff:g>. Trykk for å administrere nettverket."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Trykk for å administrere nettverket."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Koblet til <xliff:g id="SESSION">%s</xliff:g>. Trykk for å administrere nettverket."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Alltid-på VPN kobler til ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Alltid-på VPN er tilkoblet"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Alltid-på VPN-feil"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Trykk for å konfigurere"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Velg fil"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ingen fil er valgt"</string>
<string name="reset" msgid="2448168080964209908">"Tilbakestill"</string>
<string name="submit" msgid="1602335572089911941">"Send inn"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Bilmodus er aktivert"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Trykk for å avslutte bilmodus."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Internettdeling eller trådløs sone er aktiv"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Trykk for å konfigurere."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Tilbake"</string>
<string name="next_button_label" msgid="1080555104677992408">"Neste"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Hopp over"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Legg til konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Øk"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reduser"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> – trykk og hold inne."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Dra opp for å øke og ned for å redusere."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Øk minutter"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reduser minutter"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-lagring"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Rediger"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advarsel for høyt dataforbruk"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Trykk for å se bruk og innst."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Datagrensen for 2G-3G er nådd"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Datagrensen for 4G er nådd"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Grensen for mobildata er nådd"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi-datagrense overskredet"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over angitt grense."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Bakgrunnsdata er begrenset"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Trykk for å fjerne begrensning."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Sikkerhetssertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sertifikatet er gyldig."</string>
<string name="issued_to" msgid="454239480274921032">"Utstedt til:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Velg året"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> er slettet"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Jobb-<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"For å løsne denne skjermen, trykk og hold inne Tilbake."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Hvis du vil avslutte én-appsmodusen for denne skjermen, trykker og holder du på Oversikt."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen er festet – du kan ikke løsne apper på denne enheten."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skjermen er festet"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skjermen er løsnet"</string>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index 0246085..e8098ac 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"छोइएका आइटमहरू चर्को स्वरमा बोलिने छ र स्क्रिन इशाराहरूको प्रयोगले अन्वेषण गर्न सकिन्छ।"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"उच्च वेब पहुँचलाई सुचारु गर्नुहोस्"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"अनुप्रयोगको सामग्रीलाई थप पहुँचयोग्य बनाउन लिपिहरू स्थापना गर्न सक्नु हुन्छ।"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"आफुले टाइप गरेको पाठको निरीक्षण गर्नुहोस्"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK र नयाँ PIN कोड टाइप गर्नुहोस्"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK कोड"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"नयाँ PIN कोड"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"पासवर्ड टाइप गर्न छुनुहोस्"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"अनलक गर्न पासवर्ड टाइप गर्नुहोस्।"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"अनलक गर्न PIN कोड टाइप गर्नुहोस्"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"गलत PIN कोड।"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 घण्टा</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"अहिले"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> मिनेट</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> मिनेट</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> घन्टा</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> घन्टा</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> दिन</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> दिन</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> वर्ष</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> वर्ष</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> मिनेटमा</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> मिनेटमा</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> घन्टामा</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> घन्टामा</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> दिनमा</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> दिनमा</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> वर्षमा</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> वर्षमा</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"भिडियो समस्या"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"यो भिडियो यस उपकरणको लागि स्ट्रिमिङ गर्न मान्य छैन।"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"यो भिडियो चलाउन सक्दैन।"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"सायद केही प्रणाली कार्यक्रमहरूले काम गर्दैनन्"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"प्रणालीको लागि पर्याप्त भण्डारण छैन। तपाईँसँग २५० मेगा बाइट ठाउँ खाली भएको निश्चित गर्नुहोस् र फेरि सुरु गर्नुहोस्।"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चलिरहेको छ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"थप सूचनाको लागि छुनुहोस् वा अनुप्रयोग बन्द गर्नुहोस्।"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ठिक छ"</string>
<string name="cancel" msgid="6442560571259935130">"रद्द गर्नुहोस्"</string>
<string name="yes" msgid="5362982303337969312">"ठिक छ"</string>
@@ -971,14 +998,15 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"एन्ड्रोइड अपग्रेड हुँदैछ…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android शुरू हुँदैछ..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"भण्डारण अनुकूलन गर्दै।"</string>
- <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android स्तरवृद्धि हुँदैछ"</string>
+ <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android को स्तरवृद्धि हुँदैछ"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"स्तरवृद्धि सम्पन्न नभएसम्म केही अनुप्रयोगहरू राम्ररी काम नगर्न सक्छन्"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"अनुप्रयोग अनुकुल हुँदै <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयारी गर्दै।"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"सुरुवात अनुप्रयोगहरू।"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"बुट पुरा हुँदै।"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> चलिरहेको छ"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"अनुप्रयोगमा स्विच गर्न छुनुहोस्"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"अनुप्रयोगहरू स्विच गर्ने हो?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"अर्को अनुप्रयोग पहिले नै चालु छ जुन तपाईंले एउटा नयाँ सुरु गर्नु अघि बन्द गर्नुपर्ने हुन्छ।"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> मा फर्कनुहोस्"</string>
@@ -986,7 +1014,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> सुरु गर्नुहोस्"</string>
<string name="new_app_description" msgid="1932143598371537340">"बचत नगरी पुरानो अनुप्रयोग रोक्नुहोस्।"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ले मेमोरी सीमा नाघ्यो"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"हिप डम्प सङ्कलन गरिएको छ; साझेदारी गर्न छुनुहोस्"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"हिप डम्प साझेदारी गर्नुहुन्छ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"प्रक्रिया <xliff:g id="PROC">%1$s</xliff:g>ले यसको प्रक्रिया मेमोरी सीमा <xliff:g id="SIZE">%2$s</xliff:g> नाघेको छ। तपाईँको लागि विकासकर्तासँग साझेदारी गर्न एउटा हिप डम्प उपलब्ध छ। होसियार हुनुहोस्: यो हिप डम्पमा अनुप्रयोगको पहुँच भएको तपाईँको कुनै पनि व्यक्तिगत जानकारी हुन सक्छ।"</string>
<string name="sendText" msgid="5209874571959469142">"पाठको लागि एउटा प्रकार्य छान्नुहोस्"</string>
@@ -1022,7 +1051,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi मा इन्टरनेट पहुँच छैन"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"विकल्पहरूको लागि छुनुहोस्"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाइ-फाइसँग जडान गर्न सकेन"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" कमजोर इन्टरनेट जडान छ।"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"जडान अनुमति दिने हो?"</string>
@@ -1032,7 +1062,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"वाइफाइ सिधा सुरु गर्नुहोस्। यसले वाइफाइ ग्राहक/हट्स्पटलाई बन्द गराउने छ।"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"वाइफाइ सिधा सुरु हुन सकेन।"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"वाइफाइ प्रत्यक्ष खुल्ला छ"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"सेटिङहरूको लागि छुनुहोस्"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"स्वीकार्नुहोस्"</string>
<string name="decline" msgid="2112225451706137894">"अस्वीकार गर्नुहोस्"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"निमन्त्रणा पठाइएको"</string>
@@ -1084,9 +1115,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"तस्बिर स्थानान्तरणको लागि USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI को लागि USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायकमा जोडिएको छ"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"थप विकल्पहरूका लागि छुनुहोस्।"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB डिबग गर्ने जडित छ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB डिबग गर्ने असक्षम पार्न छुनुहोस्।"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"बग रिपोर्ट लिँदै..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"बग रिपोर्टलाई साझेदारी गर्ने हो?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"बग रिपोर्टलाई साझेदारी गर्दै ..."</string>
@@ -1106,9 +1139,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"नयाँ <xliff:g id="NAME">%s</xliff:g> भेटियो"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"तस्बिरहरू र मिडिया स्थानान्तरणका लागि"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"बिग्रेको <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> बिग्रेको छ। समाधान गर्न छुनुहोस्।"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"असमर्थित <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"यो यन्त्रले यो <xliff:g id="NAME">%s</xliff:g> समर्थन गर्दैन। समर्थित ढाँचामा सेट गर्न छुनुहोस्।"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> अप्रत्याशित रूपमा निकालियो"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"डेटा हराउनबाट जोगाउन निकाल्नु अघि <xliff:g id="NAME">%s</xliff:g> अनमाउन्ट गर्नुहोस्"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"निकालियो <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1144,7 +1179,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"स्थापित सत्र पढ्न अनुप्रयोगलाई अनुमति दिनुहोस्। यसले सक्रिय प्याकेज प्रतिष्ठानहरू बारेमा विवरण हेर्ने अनुमति दिन्छ।"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"स्थापना प्याकेजहरू अनुरोध गर्नुहोस्"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"प्याकेजहरूको स्थापना अनुरोध गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"जुम नियन्त्रणको लागि दुई चोटि टच गर्नुहोस्"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"जुम नियन्त्रणको लागि दुई चोटि ट्याप गर्नुहोस्"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"विजेट थप गर्न सकिँदैन।"</string>
<string name="ime_action_go" msgid="8320845651737369027">"जानुहोस्"</string>
<string name="ime_action_search" msgid="658110271822807811">"खोज्नुहोस्"</string>
@@ -1175,20 +1210,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"सूचनालाई श्रेणी प्रदान गर्ने सेवा"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN सक्रिय भयो"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g>द्वारा सक्रिय गरिएको हो"</string>
- <string name="vpn_text" msgid="3011306607126450322">"नेटवर्क प्रबन्ध गर्न छुनुहोस्।"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>सँग जोडिएको छ। नेटवर्क व्यवस्थापन गर्नको लागि छुनुहोस्।"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"नेटवर्क प्रबन्ध गर्न हान्नुहोस्।"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g>सँग जोडिएको। नेटवर्क प्रबन्ध गर्न हान्नुहोस्।"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN जडान सधै जोड्दै…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"सधैँ खुल्ला हुने VPN जोडिएको"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"सधैँ भरि VPN त्रुटिमा"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"कन्फिगर गर्न टच गर्नुहोस्"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"फाइल छान्नुहोस्"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"कुनै फाइल छानिएको छैन"</string>
<string name="reset" msgid="2448168080964209908">"पुनःसेट गर्नु"</string>
<string name="submit" msgid="1602335572089911941">"पेस गर्नुहोस्"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"कार मोड सक्षम पारियो।"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"कार मोडबाट निस्कन छुनुहोस्।"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"टेथर गर्ने वा हटस्पट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"सेटअप गर्न टच गर्नुहोस्।"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"पछाडि"</string>
<string name="next_button_label" msgid="1080555104677992408">"अर्को"</string>
<string name="skip_button_label" msgid="1275362299471631819">"छोड्नुहोस्"</string>
@@ -1221,7 +1259,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"खाता थप गर्नुहोस्"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"बढाउनुहोस्"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"घटाउनुहोस्"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g>छुनुहोस् र समाउनुहोस्।"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"बढाउन माथि र घटाउन तल सार्नुहोस्।"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"मिनेट बढाउनुहोस्"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"मिनेट घटाउनुहोस्"</string>
@@ -1265,7 +1304,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB भण्डारण"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"सम्पादन गर्नुहोस्"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"डेटा प्रयोग चेतावनी"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"उपयोग र सेटिङहरू हेर्न छुनुहोस्।"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G डेटा सीमा पुग्यो"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G डेटा सीमा पुग्यो"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"सेलुलर डेटा सीमा पुग्यो"</string>
@@ -1277,7 +1317,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"वाइफाइ डेटा SIMा नाघ्यो"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> उल्लेखित सीमा भन्दा बढी छ।"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"पृष्ठभूमिका डेटा प्रतिबन्धित गरिएको छ"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"अवरोध हटाउन छुनुहोस्।"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षा प्रमाणपत्र"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"प्रमाणपत्र मान्य छ।"</string>
<string name="issued_to" msgid="454239480274921032">"द्वारा जारी गरिएको:"</string>
@@ -1493,8 +1534,10 @@
<string name="select_year" msgid="7952052866994196170">"वर्ष चयन गर्नुहोस्"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> हटाइयो"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्य <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"यस स्क्रिनलाई अनपिन गर्न पछाडि बटनलाई छोइराख्नुहोस्।"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"यस पर्दालाई अनपिन गर्न सारांशलाई छुनुहोस् र पक्डनुहोस्।"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"अनुप्रयोग पिन गरियो: यस यन्त्रमा अनपिन गर्ने अनुमति छैन।"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रिन पिन गरियो"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"स्क्रिन अनपिन गरियो"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 3f28e2d..ba9c7ce 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Inhoud van vensters ophalen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"De inhoud inspecteren van een venster waarmee je interactie hebt."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\'Verkennen via aanraking\' inschakelen"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Aangeraakte items worden hardop benoemd en het scherm kan worden verkend door middel van aanraking."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Verbeterde internettoegankelijkheid inschakelen"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Er kunnen scripts worden geïnstalleerd om app-inhoud toegankelijker te maken."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Tekst observeren die u typt"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Geef de PUK-code en de nieuwe pincode op"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nieuwe pincode"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Raak aan om wachtwoord in te voeren"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Typ het wachtwoord om te ontgrendelen"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Typ pincode om te ontgrendelen"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Onjuiste pincode."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 uur</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"nu"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> u</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> u</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> j</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">over <xliff:g id="COUNT_1">%d</xliff:g> m</item>
+ <item quantity="one">over <xliff:g id="COUNT_0">%d</xliff:g> m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">over <xliff:g id="COUNT_1">%d</xliff:g> u</item>
+ <item quantity="one">over <xliff:g id="COUNT_0">%d</xliff:g> u</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">over <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">over <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">over <xliff:g id="COUNT_1">%d</xliff:g> j</item>
+ <item quantity="one">over <xliff:g id="COUNT_0">%d</xliff:g> j</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Probleem met video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Deze video kan niet worden gestreamd naar dit apparaat."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Deze video kan niet worden afgespeeld."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bepaalde systeemfuncties werken mogelijk niet"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Onvoldoende opslagruimte voor het systeem. Zorg ervoor dat je 250 MB vrije ruimte hebt en start opnieuw."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> wordt uitgevoerd"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Raak aan voor meer informatie of om de app te stoppen."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuleren"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps starten."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Opstarten afronden."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> wordt uitgevoerd"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Raak aan om naar app te schakelen"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Schakelen tussen apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Er wordt al een andere app uitgevoerd die moet worden gestopt voordat u een nieuwe app kunt starten."</string>
<string name="old_app_action" msgid="493129172238566282">"Terug naar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> starten"</string>
<string name="new_app_description" msgid="1932143598371537340">"De oude app stoppen zonder opslaan."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> heeft geheugenlimiet overschreden"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Heap dump is verzameld. Tik om te delen"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Heap dump delen?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Het proces <xliff:g id="PROC">%1$s</xliff:g> heeft de procesgeheugenlimiet overschreden met <xliff:g id="SIZE">%2$s</xliff:g>. Een heap dump is voor u beschikbaar om te delen met de betreffende ontwikkelaar. Let op: Deze heap dump kan persoonlijke gegevens bevatten waartoe de app toegang heeft."</string>
<string name="sendText" msgid="5209874571959469142">"Een actie voor tekst selecteren"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wifi-netwerk heeft geen internettoegang"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Tik voor opties"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kan geen verbinding maken met wifi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" heeft een slechte internetverbinding."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Verbinding toestaan?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wifi Direct starten. Hierdoor wordt de wifi-client/hotspot uitgeschakeld."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kan Wifi Direct niet starten."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wifi Direct is actief"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Aanraken voor instellingen"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Accepteren"</string>
<string name="decline" msgid="2112225451706137894">"Weigeren"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Uitnodiging verzonden"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB voor foto-overdracht"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB voor MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Aangesloten op een USB-accessoire"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Tik voor meer opties."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-foutopsporing verbonden"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Tik om USB-foutopsporing uit te schakelen."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Bugrapport genereren…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Bugrapport delen?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Bugrapport delen…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nieuwe <xliff:g id="NAME">%s</xliff:g> gedetecteerd"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Voor overzetten van foto\'s en media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> beschadigd"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> is beschadigd. Tik om te corrigeren."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> niet ondersteund"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Dit apparaat biedt geen ondersteuning voor deze <xliff:g id="NAME">%s</xliff:g>. Tik om deze te configureren met een ondersteunde indeling."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> is onverwacht verwijderd"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ontkoppel <xliff:g id="NAME">%s</xliff:g> voordat u deze verwijdert om gegevensverlies te voorkomen"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> verwijderd"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Hiermee wordt een app toegestaan installatiesessies te lezen. Zo kan de app informatie bekijken over actieve pakketinstallaties."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"installatiepakketten aanvragen"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Hiermee kan een app installatie van pakketten aanvragen."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Raak twee keer aan voor zoomregeling"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tik twee keer voor zoomregeling"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Kan widget niet toevoegen."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ga"</string>
<string name="ime_action_search" msgid="658110271822807811">"Zoeken"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Rangschikkingsservice voor meldingen"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN is geactiveerd"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN wordt geactiveerd door <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Raak aan om het netwerk te beheren."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Verbonden met <xliff:g id="SESSION">%s</xliff:g>. Tik om het netwerk te beheren."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tik om het netwerk te beheren."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Verbonden met <xliff:g id="SESSION">%s</xliff:g>. Tik om het netwerk te beheren."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN-verbinding maken…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN-verbinding"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Fout met Always-on VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Aanraken om te configureren"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Bestand kiezen"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Geen bestand geselecteerd"</string>
<string name="reset" msgid="2448168080964209908">"Resetten"</string>
<string name="submit" msgid="1602335572089911941">"Verzenden"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Automodus ingeschakeld"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Raak aan om de automodus te sluiten."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering of hotspot actief"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Aanraken voor instellen."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Vorige"</string>
<string name="next_button_label" msgid="1080555104677992408">"Volgende"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Overslaan"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Account toevoegen"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Verhogen"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Verlagen"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> blijven aanraken."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Veeg omhoog om te verhogen en omlaag om te verlagen."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Hogere waarde voor minuten"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Lagere waarde voor minuten"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-opslag"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Bewerken"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Waarschuwing v. gegevensgebruik"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Aanraken: gebruik/inst. bekijken"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Gegevenslimiet van 2G-3G bereikt"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Gegevenslimiet van 4G bereikt"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobiele gegevenslimiet bereikt"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wifi-datalimiet overschreden"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> meer dan limiet."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Achtergrondgegevens beperkt"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Raak aan voor opheffen beperking"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Beveiligingscertificaat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Dit certificaat is geldig."</string>
<string name="issued_to" msgid="454239480274921032">"Uitgegeven voor:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Jaar selecteren"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> verwijderd"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Werk <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Tik op Terug en houd vast om dit scherm los te maken."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Blijf \'Overzicht\' aanraken om dit scherm los te maken."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is vastgezet: losmaken is niet toegestaan op dit apparaat."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Scherm vastgezet"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Scherm losgemaakt"</string>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index 282fb98..070128d 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ਛੋਹੀਆਂ ਗਈਆਂ ਆਈਟਮਾਂ ਉੱਚੀ ਬੋਲਣਗੀਆਂ ਅਤੇ ਸਕ੍ਰੀਨ ਨੂੰ ਸੰਕੇਤਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਖੋਜਿਆ ਜਾ ਸਕਦਾ ਹੈ।"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ਵਧੀ ਹੋਈ ਵੈਬ ਪਹੁੰਚਯੋਗਤਾ ਚਾਲੂ ਕਰੋ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ਐਪ ਸਮੱਗਰੀ ਨੂੰ ਵੱਧ ਪਹੁੰਚਯੋਗ ਬਣਾਉਣ ਲਈ ਸਕ੍ਰਿਪਟਾਂ ਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ।"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ਜੋ ਟੈਕਸਟ ਤੁਸੀਂ ਟਾਈਪ ਕਰਦੇ ਹੋ, ਉਸਦਾ ਨਿਰੀਖਣ ਕਰੋ"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK ਅਤੇ ਨਵਾਂ PIN ਕੋਡ ਟਾਈਪ ਕਰੋ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK ਕੋਡ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ਨਵਾਂ PIN ਕੋਡ"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"ਪਾਸਵਰਡ ਟਾਈਪ ਕਰਨ ਲਈ ਛੋਹਵੋ"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ਅਨਲੌਕ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਟਾਈਪ ਕਰੋ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ਅਨਲੌਕ ਕਰਨ ਲਈ PIN ਟਾਈਪ ਕਰੋ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ਗ਼ਲਤ PIN ਕੋਡ।"</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ਘੰਟੇ</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ਹੁਣ"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਮਿੰਟ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਮਿੰਟ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਘੰਟੇ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਘੰਟੇ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਦਿਨ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਦਿਨ</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਸਾਲ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਸਾਲ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਮਿੰਟ ਵਿੱਚ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਮਿੰਟ ਵਿੱਚ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਘੰਟੇ ਵਿੱਚ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਘੰਟੇ ਵਿੱਚ</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਦਿਨ ਵਿੱਚ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਦਿਨ ਵਿੱਚ</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਸਾਲ ਵਿੱਚ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਸਾਲ ਵਿੱਚ</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ਵੀਡੀਓ ਸਮੱਸਿਆ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ਇਹ ਵੀਡੀਓ ਇਸ ਡਿਵਾਈਸ ਤੇ ਸਟ੍ਰੀਮਿੰਗ ਲਈ ਪ੍ਰਮਾਣਿਕ ਨਹੀਂ ਹੈ।"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ਇਹ ਵੀਡੀਓ ਪਲੇ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ਕੁਝ ਸਿਸਟਮ ਫੰਕਸ਼ਨ ਕੰਮ ਨਹੀਂ ਵੀ ਕਰ ਸਕਦੇ"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ਸਿਸਟਮ ਲਈ ਪੂਰੀ ਸਟੋਰੇਜ ਨਹੀਂ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ 250MB ਖਾਲੀ ਸਪੇਸ ਹੈ ਅਤੇ ਰੀਸਟਾਰਟ ਕਰੋ।"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"ਹੋਰ ਜਾਣਕਾਰੀ ਜਾਂ ਐਪ ਬੰਦ ਕਰਨ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ਠੀਕ"</string>
<string name="cancel" msgid="6442560571259935130">"ਰੱਦ ਕਰੋ"</string>
<string name="yes" msgid="5362982303337969312">"ਠੀਕ"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ਐਪਸ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ਬੂਟ ਪੂਰਾ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ਐਪ ਤੇ ਸਵਿਚ ਕਰਨ ਲਈ ਛੋਹਵੋ"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ਕੀ ਐਪਸ ਸਵਿਚ ਕਰਨੇ ਹਨ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ਦੂਜਾ ਐਪ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ, ਜਿਸਨੂੰ ਤੁਹਾਡੇ ਵੱਲੋਂ ਇੱਕ ਨਵਾਂ ਐਪ ਚਾਲੂ ਕਰ ਸਕਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਰੋਕਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> ਤੇ ਵਾਪਸ ਜਾਓ"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
<string name="new_app_description" msgid="1932143598371537340">"ਸੁਰੱਖਿਅਤ ਕੀਤੇ ਬਿਨਾਂ ਪੁਰਾਣਾ ਐਪ ਬੰਦ ਕਰੋ।"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ਦੀ ਮੈਮਰੀ ਸੀਮਾ ਵਧ ਗਈ ਹੈ"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"ਹੀਪ ਡੰਪ ਇਕੱਤਰ ਕੀਤਾ ਗਿਆ ਹੈ; ਸ਼ੇਅਰ ਕਰਨ ਲਈ ਛੋਹਵੋ"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ਕੀ ਹੀਪ ਡੰਪ ਸ਼ੇਅਰ ਕਰਨਾ ਹੈ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"ਪ੍ਰਕਿਰਿਆ <xliff:g id="PROC">%1$s</xliff:g> ਦੀ ਆਪਣੀ ਪ੍ਰਕਿਰਿਆ ਮੈਮਰੀ ਸੀਮਾ<xliff:g id="SIZE">%2$s</xliff:g> ਵਧ ਗਈ ਹੈ। ਇਸਦੇ ਵਿਕਾਸਕਾਰ ਨਾਲ ਸ਼ੇਅਰ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਲਈ ਇੱਕ ਹੀਪ ਡੰਪ ਉਪਲਬਧ ਹੈ। ਸਾਵਧਾਨ ਰਹੋ: ਇਸ ਹੀਪ ਡੰਪ ਵਿੱਚ ਤੁਹਾਡੀ ਕੋਈ ਵੀ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਸਤੇ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਪਹੁੰਚ ਹੈ।"</string>
<string name="sendText" msgid="5209874571959469142">"ਟੈਕਸਟ ਲਈ ਇੱਕ ਕਿਰਿਆ ਚੁਣੋ"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ਦੀ ਕੋਈ ਇੰਟਰਨੈਟ ਪਹੁੰਚ ਨਹੀਂ ਹੈ"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ਚੋਣਾਂ ਲਈ ਛੋਹਵੋ"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ਇਸਦਾ ਇੱਕ ਖ਼ਰਾਬ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਹੈ।"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ਕੀ ਕਨੈਕਸ਼ਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ਡਾਇਰੈਕਟ ਚਾਲੂ ਕਰੋ। ਇਹ Wi-Fi ਕਲਾਈਂਟ/ਹੌਟਸਪੌਟ ਨੂੰ ਬੰਦ ਕਰ ਦੇਵੇਗਾ।"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ਡਾਇਰੈਕਟ ਚਾਲੂ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ਡਾਇਰੈਕਟ ਚਾਲੂ ਹੈ।"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ਸੈਟਿੰਗਾਂ ਲਈ ਛੋਹਵੋ"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ਸਵੀਕਾਰ ਕਰੋ"</string>
<string name="decline" msgid="2112225451706137894">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ਸੱਦਾ ਭੇਜਿਆ"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ਫੋਟੋ ਟ੍ਰਾਂਸਫ਼ਰ ਲਈ USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI ਲਈ USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ਇੱਕ USB ਐਕਸੈਸਰੀ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"ਹੋਰ ਵਿਕਲਪਾਂ ਲਈ ਸਪਰਸ਼ ਕਰੋ।"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ਡੀਬਗਿੰਗ ਕਨੈਕਟ ਕੀਤੀ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ਡੀਬਗਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ਬੱਗ ਰਿਪਰੋਟ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ਕੀ ਬੱਗ ਰਿਪੋਰਟ ਸਾਂਝੀ ਕਰਨੀ ਹੈ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ਬੱਗ ਰਿਪੋਰਟ ਸਾਂਝੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ਨਵੇਂ <xliff:g id="NAME">%s</xliff:g> ਦਾ ਪਤਾ ਲਗਾਇਆ ਗਿਆ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ਫੋਟੋਆਂ ਅਤੇ ਮੀਡੀਆ ਨੂੰ ਟ੍ਰਾਂਸਫ਼ਰ ਕਰਨ ਲਈ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ਕਰਪਟਿਡ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> ਕਰਪਟ ਹੈ। ਠੀਕ ਕਰਨ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ਅਸਮਰਥਿਤ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ਇਹ ਡਿਵਾਈਸ ਇਸ <xliff:g id="NAME">%s</xliff:g> ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ। ਇੱਕ ਸਮਰਥਿਤ ਫੌਰਮੈਟ ਵਿੱਚ ਸੈਟ ਅਪ ਕਰਨ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਅਚਨਚੇਤ ਹਟਾਇਆ ਗਿਆ"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ਡੇਟਾ ਦੇ ਨੁਕਸਾਨ ਤੋਂ ਬੱਚਣ ਲਈ ਹਟਾਉਣ ਤੋਂ ਪਹਿਲਾਂ <xliff:g id="NAME">%s</xliff:g> ਅਨਮਾਊਂਟ ਕਰੋ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"ਹਟਾਇਆ <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਇੰਸਟੌਲ ਸੈਸ਼ਨ ਪੜ੍ਹਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਇਸਨੂੰ ਸਕਿਰਿਆ ਪੈਕੇਜ ਇੰਸਟੌਲੇਸ਼ਨਾਂ ਬਾਰੇ ਵੇਰਵੇ ਦੇਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"ਪੈਕੇਜ ਸਥਾਪਿਤ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕਰੋ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ਪੈਕੇਜ ਦੀ ਸਥਾਪਨਾ ਦੀ ਬੇਨਤੀ ਕਰਨ ਲਈ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਅਨੁਮਤੀ ਦਿੰਦਾ ਹੈ"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ਜ਼ੂਮ ਨਿਯੰਤਰਣ ਲਈ ਦੋ ਵਾਰ ਛੋਹਵੋ"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ਵਿਜੇਟ ਨਹੀਂ ਜੋੜ ਸਕਿਆ।"</string>
<string name="ime_action_go" msgid="8320845651737369027">"ਜਾਓ"</string>
<string name="ime_action_search" msgid="658110271822807811">"ਖੋਜੋ"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"ਸੂਚਨਾ ਰੈਂਕਰ ਸੇਵਾ"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ਸਕਿਰਿਆ ਕੀਤਾ"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g> ਰਾਹੀਂ ਸਕਿਰਿਆ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ਨੈਟਵਰਕ ਵਿਵਸਥਿਤ ਕਰਨ ਲਈ ਛੋਹਵੋ।"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ। ਨੈਟਵਰਕ ਵਿਵਸਥਿਤ ਕਰਨ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ਹਮੇਸ਼ਾਂ-ਚਾਲੂ VPN ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ਹਮੇਸ਼ਾਂ-ਚਾਲੂ VPN ਕਨੈਕਟ ਕੀਤਾ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ਹਮੇਸ਼ਾਂ-ਚਾਲੂ VPN ਅਸ਼ੁੱਧੀ"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ਕੌਂਫਿਗਰ ਕਰਨ ਲਈ ਛੋਹਵੋ"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ਫਾਈਲ ਚੁਣੋ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ਕੋਈ ਫਾਈਲ ਨਹੀਂ ਚੁਣੀ ਗਈ"</string>
<string name="reset" msgid="2448168080964209908">"ਰੀਸੈਟ ਕਰੋ"</string>
<string name="submit" msgid="1602335572089911941">"ਪ੍ਰਸਤੁਤ ਕਰੋ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ਕਾਰ ਮੋਡ ਸਮਰਥਿਤ"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ਕਾਰ ਮੋਡ ਤੋਂ ਬਾਹਰ ਜਾਣ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ਟੀਥਰਿਗ ਜਾਂ ਹੌਟਸਪੌਟ ਸਕਿਰਿਆ"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"ਸੈਟ ਅਪ ਕਰਨ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"ਪਿੱਛੇ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ਅਗਲਾ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ਛੱਡੋ"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ਖਾਤਾ ਜੋੜੋ"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ਵਧਾਓ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ਘਟਾਓ"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ਨੂੰ ਛੋਹਵੋ ਅਤੇ ਹੋਲਡ ਕਰੋ।"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ਵਧਾਉਣ ਲਈ ਉੱਪਰ ਅਤੇ ਘਟਾਉਣ ਲਈ ਹੇਠਾਂ ਸਲਾਈਡ ਕਰੋ।"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ਮਿੰਟ ਵਧਾਓ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ਮਿੰਟ ਘਟਾਓ"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB ਸਟੋਰੇਜ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ਸੰਪਾਦਿਤ ਕਰੋ"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ਡਾਟਾ ਵਰਤੋਂ ਚਿਤਾਵਨੀ"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ਵਰਤੋਂ ਅਤੇ ਸੈਟਿੰਗਾਂ ਦੇਖਣ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ਡਾਟਾ ਸੀਮਾ ਪੂਰੀ ਹੋ ਗਈ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ਡਾਟਾ ਸੀਮਾ ਪੂਰੀ ਹੋਈ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ਸੈਲਿਊਲਰ ਡਾਟਾ ਸੀਮਾ ਪੂਰੀ ਹੋ ਗਈ"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ਡਾਟਾ ਸੀਮਾ ਵਧ ਗਈ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ਤੋਂ ਵੱਧ ਨਿਰਦਿਸ਼ਟ ਸੀਮਾ।"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ਪਿਛੋਕੜ ਡਾਟਾ ਪ੍ਰਤਿਬੰਧਿਤ"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ਪ੍ਰਤਿਬੰਧ ਹਟਾਉਣ ਲਈ ਛੋਹਵੋ।"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"ਸੁਰੱਖਿਆ ਸਰਟੀਫਿਕੇਟ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ਇਹ ਸਰਟੀਫਿਕੇਟ ਪ੍ਰਮਾਣਿਕ ਹੈ।"</string>
<string name="issued_to" msgid="454239480274921032">"ਨੂੰ ਜਾਰੀ ਕੀਤਾ ਗਿਆ:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"ਸਾਲ ਚੁਣੋ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ਹਟਾਇਆ ਗਿਆ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ਕੰਮ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿੰਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾਈ ਰੱਖੋ।"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿਨ ਕਰਨ ਲਈ, ਰੂਪ-ਰੇਖਾ ਨੂੰ ਛੋਹਵੋ ਅਤੇ ਹੋਲਡ ਕਰੋ।"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ਐਪ ਪਿੰਨਡ ਹੈ: ਇਸ ਡਿਵਾਈਸ ਤੇ ਅਨਪਿਨ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ।"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ਸਕ੍ਰੀਨ ਪਿੰਨ ਕੀਤੀ"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ਸਕ੍ਰੀਨ ਅਨਪਿਨ ਕੀਤੀ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index ee58766..69da1af 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -269,7 +269,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pobieranie zawartości okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Sprawdzanie zawartości okna, z którego korzystasz."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Włączenie czytania dotykiem"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Klikane elementy będą wymawiane na głos, a ekran można przeglądać, używając gestów."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Włączenie ułatwień dostępu w internecie"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Można zainstalować skrypty, by zawartość aplikacji była łatwiej dostępna."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obserwowanie wpisywanego tekstu"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Wpisz kod PUK i nowy kod PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kod PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nowy PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotknij, aby wpisać hasło."</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Wpisz hasło, aby odblokować."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Wpisz kod PIN, aby odblokować."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Błędny kod PIN"</string>
@@ -873,14 +875,54 @@
<item quantity="one">1 godzina</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"teraz"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> godz.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> godz.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> godz.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> godz.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dni</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> dni</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dnia</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dzień</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> lata</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> lat</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> roku</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> rok</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> godz.</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> godz.</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> godz.</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> godz.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> dni</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> dni</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> dnia</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> dzień</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="few">za <xliff:g id="COUNT_1">%d</xliff:g> lata</item>
+ <item quantity="many">za <xliff:g id="COUNT_1">%d</xliff:g> lat</item>
+ <item quantity="other">za <xliff:g id="COUNT_1">%d</xliff:g> roku</item>
+ <item quantity="one">za <xliff:g id="COUNT_0">%d</xliff:g> rok</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problem z filmem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Ten film nie nadaje się do strumieniowego przesyłania do tego urządzenia."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Nie można odtworzyć tego filmu."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Niektóre funkcje systemu mogą nie działać"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Za mało pamięci w systemie. Upewnij się, że masz 250 MB wolnego miejsca i uruchom urządzenie ponownie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest uruchomiona"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Kliknij, aby uzyskać więcej informacji lub zatrzymać aplikację."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Anuluj"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uruchamianie aplikacji."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Kończenie uruchamiania."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Działa <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Dotknij, aby przejść do aplikacji."</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Czy przełączyć aplikacje?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Działa już inna aplikacja, którą trzeba zatrzymać, aby możliwe było uruchomienie nowej."</string>
<string name="old_app_action" msgid="493129172238566282">"Powrót do aplikacji <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Uruchom <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zatrzymaj starą aplikację bez zapisywania."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> przekroczył limit pamięci"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Pobrano zrzut stosu – kliknij, by go udostępnić"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Udostępnić zrzut stosu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> przekroczył swój limit pamięci, który wynosi <xliff:g id="SIZE">%2$s</xliff:g>. Możesz udostępnić zrzut stosu programiście procesu. Uwaga: ten zrzut może zawierać wszelkie dane osobowe, do których aplikacja ma dostęp."</string>
<string name="sendText" msgid="5209874571959469142">"Wybierz czynność, jaka ma zostać wykonana na tekście"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Sieć Wi-Fi nie ma dostępu do internetu"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Kliknij, by zobaczyć opcje"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nie można połączyć się z siecią Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ma powolne połączenie internetowe."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Zezwolić na połączenie?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Uruchom Wi-Fi Direct. Spowoduje to wyłączenie klienta lub punktu dostępu Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nie można uruchomić Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct włączone"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Dotknij, aby zmienić ustawienia"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Akceptuj"</string>
<string name="decline" msgid="2112225451706137894">"Odrzuć"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Wysłano zaproszenie"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB w trybie przesyłania zdjęć"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB w trybie MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Podłączono akcesorium USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Kliknij, by zobaczyć więcej opcji."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Podłączono moduł debugowania USB"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Dotknij, aby wyłączyć debugowanie USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Zgłaszam błąd…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Udostępnić raport o błędzie?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Udostępniam raport o błędzie…"</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Wykryto nowy nośnik: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Do przenoszenia zdjęć i multimediów"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Nośnik <xliff:g id="NAME">%s</xliff:g> uszkodzony"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Nośnik <xliff:g id="NAME">%s</xliff:g> jest uszkodzony. Kliknij, by go naprawić."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nośnik <xliff:g id="NAME">%s</xliff:g> nieobsługiwany"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"To urządzenie nie obsługuje tego nośnika <xliff:g id="NAME">%s</xliff:g>. Kliknij, by skonfigurować go w obsługiwanym formacie."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>: nieoczekiwane wyjęcie"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Odłącz nośnik <xliff:g id="NAME">%s</xliff:g> przed jego wyjęciem, by uniknąć utraty danych"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Wyjęto: <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Pozwala aplikacji odczytywać sesje instalacji. Umożliwia to jej na poznanie szczegółów aktywnych instalacji pakietów."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"żądanie instalacji pakietów"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Zezwala aplikacji żądanie instalacji pakietów."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dotknij dwukrotnie, aby sterować powiększeniem."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Dotknij dwukrotnie, aby sterować powiększeniem"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nie można dodać widżetu."</string>
<string name="ime_action_go" msgid="8320845651737369027">"OK"</string>
<string name="ime_action_search" msgid="658110271822807811">"Szukaj"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Usługa rankingu powiadomień"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN aktywny"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Obsługa sieci VPN została włączona przez aplikację <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Dotknij, aby zarządzać siecią."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Nawiązano połączenie z: <xliff:g id="SESSION">%s</xliff:g>. Dotknij, aby zarządzać siecią."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Dotknij, aby zarządzać siecią."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Nawiązano połączenie: <xliff:g id="SESSION">%s</xliff:g>. Dotknij, aby zarządzać siecią."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Łączę ze stałą siecią VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Połączono ze stałą siecią VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Błąd stałej sieci VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Kliknij, by skonfigurować"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Wybierz plik"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nie wybrano pliku"</string>
<string name="reset" msgid="2448168080964209908">"Resetuj"</string>
<string name="submit" msgid="1602335572089911941">"Prześlij"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Tryb samochodowy włączony"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Dotknij, aby zamknąć tryb samochodowy."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Aktywny tethering lub punkt dostępu"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Dotknij, aby skonfigurować."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Wróć"</string>
<string name="next_button_label" msgid="1080555104677992408">"Dalej"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Pomiń"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Zwiększ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Zmniejsz"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> dotknij i przytrzymaj."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Przesuń w górę, by zwiększyć, i w dół, by zmniejszyć."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Zmień minutę na późniejszą"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Zmień minutę na wcześniejszą"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Nośnik USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edytuj"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Ostrzeżenie o transmisji danych"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Dotknij – użycie i ustawienia."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Osiągnięto limit danych 2G/3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Osiągnięto limit danych 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Osiągnięto limit danych komórkowych"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Przekroczono limit danych Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ponad określony limit"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dane w tle są ograniczone"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Dotknij, by usunąć ograniczenie."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certyfikat zabezpieczeń"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certyfikat jest ważny."</string>
<string name="issued_to" msgid="454239480274921032">"Wystawiony dla:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Wybierz rok"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> usunięte"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (praca)"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Aby odpiąć ten ekran, naciśnij i przytrzymaj Wstecz."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Aby odpiąć ten ekran, naciśnij i przytrzymaj Przegląd."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacja jest przypięta. Nie możesz jej odpiąć na tym urządzeniu."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran przypięty"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran odpięty"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index da22e5e..b935cdb 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar cont. da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo da janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Itens tocados serão falados em voz alta e a tela poderá ser explorada por meio de gestos."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ativar acessibilidade na Web aprimorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts podem ser instalados para tornar o conteúdo do app mais acessível."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto digitado"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Insira o PUK e o novo código PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toque para inserir a senha"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Digite a senha para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Insira o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problema com o vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Este vídeo não é válido para transmissão neste dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Não é possível reproduzir este vídeo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Algumas funções do sistema podem não funcionar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Não há armazenamento suficiente para o sistema. Certifique-se de ter 250 MB de espaço livre e reinicie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> está em execução"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Toque para mais informações ou para parar o app."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Concluindo a inicialização."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Toque para alternar para o app"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Alternar entre apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Outro app já está em execução e deve ser interrompido antes que você inicie um novo app."</string>
<string name="old_app_action" msgid="493129172238566282">"Voltar para <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Parar o app antigo sem salvar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> excedeu o limite de memória"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"O despejo de heap foi coletado. Toque para compartilhar"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Compartilhar despejo de heap?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O processo <xliff:g id="PROC">%1$s</xliff:g> excedeu seu limite de memória de <xliff:g id="SIZE">%2$s</xliff:g>. Um despejo de heap está disponível para compartilhamento com o desenvolvedor. Tenha cuidado: esse despejo de heap pode conter informações pessoais às quais o aplicativo tem acesso."</string>
<string name="sendText" msgid="5209874571959469142">"Escolha uma ação para o texto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"O Wi-Fi não tem acesso à Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Toque para ver as opções"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Não foi possível se conectar a redes Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tem uma conexão de baixa qualidade com a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permitir conexão?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar o Wi-Fi Direct. Isso desativará o ponto de acesso/cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Não foi possível iniciar o Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ativado"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Tocar para acessar configurações"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Aceitar"</string>
<string name="decline" msgid="2112225451706137894">"Recusar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Convite enviado"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a um acessório USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Toque para ver mais opções."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB conectada"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Toque para desativar a depuração do USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Gerando relatório do bug..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Compartilhar relatório do bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartilhando relatório do bug…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novo <xliff:g id="NAME">%s</xliff:g> detectado"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos e mídia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> corrompido"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> está corrompida. Toque para corrigir."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> não compatível"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Este dispositivo não é compatível com o <xliff:g id="NAME">%s</xliff:g>. Toque para configurar em um formato compatível."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desconecte <xliff:g id="NAME">%s</xliff:g> antes da remoção para evitar a perda de dados"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mídia <xliff:g id="NAME">%s</xliff:g> removida."</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permite que um app leia sessões de instalação. Isso permite que ele veja detalhes sobre as instalações de pacote ativas."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"solicitar pacotes de instalação"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permite que um app solicite a instalação de pacotes."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toque duas vezes para controlar o zoom"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Toque duas vezes para ter controle do zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Não foi possível adicionar widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ir"</string>
<string name="ime_action_search" msgid="658110271822807811">"Pesquisar"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Serviço de classificação de notificação"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ativada"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"A VPN está ativada por <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Toque para gerenciar a rede."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toque para gerenciar a rede."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Toque para gerenciar a rede."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toque para gerenciar a rede."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sempre ativa conectando..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre ativa conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro na VPN sempre ativa"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Toque para configurar"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Escolher arquivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nenhum arquivo escolhido"</string>
<string name="reset" msgid="2448168080964209908">"Redefinir"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo carro ativado"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toque para sair do modo Carro."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Vínculo ou ponto de acesso ativo"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toque para configurar."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Voltar"</string>
<string name="next_button_label" msgid="1080555104677992408">"Avançar"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorar"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adicionar conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuir"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> toque e mantenha pressionado."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Deslize para cima para aumentar e para baixo para diminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Diminuir minuto"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Armazenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso sobre uso de dados"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Toque p/ ver uso e config."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de dados 2G-3G atingido"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de dados 4G atingido"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite de dados celular atingido"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite de dados Wi-Fi excedido"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> acima do limite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dados de segundo plano restritos"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toque para remover a restrição."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de segurança"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Selecione o ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> excluído"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Trabalho: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Para liberar esta tela, mantenha o botão \"Voltar\" pressionado."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Para liberar esta tela, toque e mantenha pressionado \"Visão geral\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"O app está fixado. A liberação não é permitida neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Tela fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Tela liberada"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 51b09b8..fba59bd 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Obter conteúdo da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo de uma janela com a qual está a interagir."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar Através do Toque"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Os itens em que tocar serão pronunciados em voz alta e o ecrã poderá ser explorado através de toques."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ativar a acessibilidade Web melhorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Poderão ser instalados scripts para tornar o conteúdo da aplicação mais acessível."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto que escreve"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escreva o PUK e o novo código PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toque para escrever a palavra-passe"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Escreva a palavra-passe para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Escreva o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 hora</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>a</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">dentro de <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="one">dentro de <xliff:g id="COUNT_0">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">dentro de <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one">dentro de <xliff:g id="COUNT_0">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">dentro de <xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="one">dentro de <xliff:g id="COUNT_0">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">dentro de <xliff:g id="COUNT_1">%d</xliff:g>a</item>
+ <item quantity="one">dentro de <xliff:g id="COUNT_0">%d</xliff:g>a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problema com o vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Este vídeo não é válido para transmissão em fluxo contínuo neste aparelho."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Não é possível reproduzir este vídeo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Algumas funções do sistema poderão não funcionar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Não existe armazenamento suficiente para o sistema. Certifique-se de que tem 250 MB de espaço livre e reinicie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> em execução"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Toque para obter mais informações ou para parar a aplicação."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"A iniciar aplicações"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"A concluir o arranque."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Toque para mudar para a aplicação"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Mudar de aplicação?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Já está em execução outra aplicação, que terá de ser parada para que possa iniciar uma nova."</string>
<string name="old_app_action" msgid="493129172238566282">"Regressar a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Parar a aplicação antiga sem guardar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> excedeu o limite da memória"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Foi recolhida a captura da área dinâmica para dados. Toque para partilhar"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Pretende partilhar a captura da área dinâmica para dados?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O processo <xliff:g id="PROC">%1$s</xliff:g> excedeu o respetivo limite de memória do processo de <xliff:g id="SIZE">%2$s</xliff:g>. Está disponível uma captura da área dinâmica para dados para partilhar com o respetivo programador. Tenha atenção: esta captura da área dinâmica para dados pode conter algumas das suas informações pessoais a que a aplicação tem acesso."</string>
<string name="sendText" msgid="5209874571959469142">"Escolha uma ação para o texto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"O Wi-Fi não tem acesso à Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Tocar para obter opções"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Não foi possível ligar a Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tem uma ligação à internet fraca."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permitir ligação?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar o Wi-Fi Direct. Esta opção desativará o cliente/zona Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Não foi possível iniciar o Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"O Wi-Fi Direct está ativado"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Toque para aceder às definições"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Aceitar"</string>
<string name="decline" msgid="2112225451706137894">"Recusar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Convite enviado"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ligado a um acessório USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Toque para ver mais opções."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB ligada"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Toque para desat. a depuração USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"A criar relatório de erro…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Pretende partilhar o relatório de erro?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"A partilhar relatório de erro…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novo <xliff:g id="NAME">%s</xliff:g> detetado"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Transf. fotos, conteúdos multimédia."</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> danificado"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> está danificado. Toque para corrigir."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> não suportado"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"O dispositivo não suporta este <xliff:g id="NAME">%s</xliff:g>. Toque para configurar num formato suportado."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desmontar o <xliff:g id="NAME">%s</xliff:g> antes da remoção para evitar a perda de dados"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> removido"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permite que uma aplicação leia sessões de instalação. Isto permite que veja detalhes acerca de instalações de pacotes ativas."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"solicitar pacotes de instalação"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permite que uma aplicação solicite a instalação de pacotes."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toque duas vezes para controlar o zoom"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tocar duas vezes para controlar o zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Não foi possível adicionar widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ir"</string>
<string name="ime_action_search" msgid="658110271822807811">"Pesquisar"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Serviço de classificação de notificações"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ativada"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"A VPN foi ativada pelo <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Toque para gerir a rede."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Ligado a <xliff:g id="SESSION">%s</xliff:g>. Toque para gerir a rede."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Toque para gerir a rede."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Ligado a <xliff:g id="SESSION">%s</xliff:g>. Toque para gerir a rede."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"A ligar VPN sempre ativa..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre ativa ligada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro da VPN sempre ativa"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Tocar para configurar"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Escolher ficheiro"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Não foi selecionado nenhum ficheiro"</string>
<string name="reset" msgid="2448168080964209908">"Repor"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo automóvel ativado"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toque para sair do modo automóvel."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Ligação ponto a ponto ou hotspot activos"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toque para configurar."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Anterior"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seguinte"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorar"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adicionar conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuir"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Toque sem soltar em <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Deslizar para cima para aumentar e para baixo para diminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minutos"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Diminuir minutos"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Armazenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso de utilização de dados"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Toque para ver a utilização e as definições."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de dados 2G/3G atingido"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de dados 4G atingido"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite de dados móveis atingido"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite de dados Wi-Fi excedido"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> acima do limite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dados em seg. plano restringidos"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toque para remover a restrição."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de segurança"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Selecionar ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabalho"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Para soltar este ecrã, toque sem soltar em Anterior."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Para soltar este ecrã, toque sem soltar em Visão geral."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"A aplicação está fixa: não é permitido soltá-la neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ecrã fixo"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ecrã solto"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index da22e5e..b935cdb 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar cont. da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo da janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Itens tocados serão falados em voz alta e a tela poderá ser explorada por meio de gestos."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ativar acessibilidade na Web aprimorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts podem ser instalados para tornar o conteúdo do app mais acessível."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto digitado"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Insira o PUK e o novo código PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toque para inserir a senha"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Digite a senha para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Insira o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ <item quantity="other">em <xliff:g id="COUNT_1">%d</xliff:g> a</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problema com o vídeo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Este vídeo não é válido para transmissão neste dispositivo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Não é possível reproduzir este vídeo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Algumas funções do sistema podem não funcionar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Não há armazenamento suficiente para o sistema. Certifique-se de ter 250 MB de espaço livre e reinicie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> está em execução"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Toque para mais informações ou para parar o app."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Concluindo a inicialização."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Toque para alternar para o app"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Alternar entre apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Outro app já está em execução e deve ser interrompido antes que você inicie um novo app."</string>
<string name="old_app_action" msgid="493129172238566282">"Voltar para <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Parar o app antigo sem salvar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> excedeu o limite de memória"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"O despejo de heap foi coletado. Toque para compartilhar"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Compartilhar despejo de heap?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O processo <xliff:g id="PROC">%1$s</xliff:g> excedeu seu limite de memória de <xliff:g id="SIZE">%2$s</xliff:g>. Um despejo de heap está disponível para compartilhamento com o desenvolvedor. Tenha cuidado: esse despejo de heap pode conter informações pessoais às quais o aplicativo tem acesso."</string>
<string name="sendText" msgid="5209874571959469142">"Escolha uma ação para o texto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"O Wi-Fi não tem acesso à Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Toque para ver as opções"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Não foi possível se conectar a redes Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tem uma conexão de baixa qualidade com a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permitir conexão?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar o Wi-Fi Direct. Isso desativará o ponto de acesso/cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Não foi possível iniciar o Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ativado"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Tocar para acessar configurações"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Aceitar"</string>
<string name="decline" msgid="2112225451706137894">"Recusar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Convite enviado"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a um acessório USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Toque para ver mais opções."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB conectada"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Toque para desativar a depuração do USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Gerando relatório do bug..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Compartilhar relatório do bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartilhando relatório do bug…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novo <xliff:g id="NAME">%s</xliff:g> detectado"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos e mídia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> corrompido"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> está corrompida. Toque para corrigir."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> não compatível"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Este dispositivo não é compatível com o <xliff:g id="NAME">%s</xliff:g>. Toque para configurar em um formato compatível."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desconecte <xliff:g id="NAME">%s</xliff:g> antes da remoção para evitar a perda de dados"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mídia <xliff:g id="NAME">%s</xliff:g> removida."</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permite que um app leia sessões de instalação. Isso permite que ele veja detalhes sobre as instalações de pacote ativas."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"solicitar pacotes de instalação"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permite que um app solicite a instalação de pacotes."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toque duas vezes para controlar o zoom"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Toque duas vezes para ter controle do zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Não foi possível adicionar widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Ir"</string>
<string name="ime_action_search" msgid="658110271822807811">"Pesquisar"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Serviço de classificação de notificação"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ativada"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"A VPN está ativada por <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Toque para gerenciar a rede."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toque para gerenciar a rede."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Toque para gerenciar a rede."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Conectado a <xliff:g id="SESSION">%s</xliff:g>. Toque para gerenciar a rede."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sempre ativa conectando..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre ativa conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro na VPN sempre ativa"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Toque para configurar"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Escolher arquivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nenhum arquivo escolhido"</string>
<string name="reset" msgid="2448168080964209908">"Redefinir"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo carro ativado"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toque para sair do modo Carro."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Vínculo ou ponto de acesso ativo"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Toque para configurar."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Voltar"</string>
<string name="next_button_label" msgid="1080555104677992408">"Avançar"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorar"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adicionar conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuir"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> toque e mantenha pressionado."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Deslize para cima para aumentar e para baixo para diminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Diminuir minuto"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Armazenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso sobre uso de dados"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Toque p/ ver uso e config."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de dados 2G-3G atingido"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de dados 4G atingido"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite de dados celular atingido"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite de dados Wi-Fi excedido"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> acima do limite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dados de segundo plano restritos"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toque para remover a restrição."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de segurança"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Selecione o ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> excluído"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Trabalho: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Para liberar esta tela, mantenha o botão \"Voltar\" pressionado."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Para liberar esta tela, toque e mantenha pressionado \"Visão geral\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"O app está fixado. A liberação não é permitida neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Tela fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Tela liberada"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index b344deb..24c8fc5 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -266,7 +266,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperează conținutul ferestrei"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspectează conținutul unei ferestre cu care interacționați."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activează funcția Explorați prin atingere"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Elementele atinse vor fi rostite cu voce tare, iar ecranul poate fi explorat utilizând gesturi."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activează accesibilitatea web îmbunătățită"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Pot fi instalate scripturi pentru a face conținutul aplicațiilor mai accesibil."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Remarcă textul pe care îl introduceți"</string>
@@ -665,7 +666,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introduceți codul PUK și noul cod PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codul PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Noul cod PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Atingeți și introduceți parola"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introduceți parola pentru a debloca"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introduceți codul PIN pentru a debloca"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Cod PIN incorect."</string>
@@ -866,14 +868,46 @@
<item quantity="one">O oră</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"acum"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> zile</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> de zile</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> zi</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> ani</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> de ani</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> an</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> min.</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> min.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> zile</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> de zile</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> zi</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="few">peste <xliff:g id="COUNT_1">%d</xliff:g> ani</item>
+ <item quantity="other">peste <xliff:g id="COUNT_1">%d</xliff:g> de ani</item>
+ <item quantity="one">peste <xliff:g id="COUNT_0">%d</xliff:g> an</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problemă video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Acest fișier video nu este valid pentru a fi transmis în flux către acest dispozitiv."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Nu puteți reda acest videoclip"</string>
@@ -905,7 +939,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Este posibil ca unele funcții de sistem să nu funcționeze"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Spațiu de stocare insuficient pentru sistem. Asigurați-vă că aveți 250 MB de spațiu liber și reporniți."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> rulează acum"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Atingeți pentru mai multe informații sau pentru a opri aplicația."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Anulați"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -979,7 +1014,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Se pornesc aplicațiile."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Se finalizează pornirea."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Rulează <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Atingeți pentru a comuta la aplicație"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Comutați între aplicații?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"O altă aplicație rulează deja și trebuie oprită înainte a putea porni o aplicație nouă."</string>
<string name="old_app_action" msgid="493129172238566282">"Reveniți la <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -987,7 +1023,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Porniți <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Opriți vechea aplicație fără să salvați."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> a depășit limita de memorie"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Datele privind memoria au fost culese; atingeți pentru a trimite"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Trimiteți datele privind memoria?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Procesul <xliff:g id="PROC">%1$s</xliff:g> și-a depășit limita de memorie de <xliff:g id="SIZE">%2$s</xliff:g>. Sunt disponibile datele privind memoria, pe care le puteți trimite dezvoltatorului. Atenție: aceste date privind memoria pot conține informațiile personale la care aplicația are acces."</string>
<string name="sendText" msgid="5209874571959469142">"Alegeți o acțiune pentru text"</string>
@@ -1025,7 +1062,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Rețeaua Wi-Fi nu are acces la internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Atingeți pentru opțiuni"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nu se poate conecta la Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" are o conexiune la internet slabă."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permiteți conectarea?"</string>
@@ -1035,7 +1073,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Porniți Wi-Fi Direct. Acest lucru va dezactiva clientul/hotspotul Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct nu a putut porni."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct este activat"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Atingeți pentru setări"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Acceptați"</string>
<string name="decline" msgid="2112225451706137894">"Refuzați"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitația a fost trimisă."</string>
@@ -1087,9 +1126,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Conexiune USB pentru transferul fotografiilor"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"Conexiune USB pentru MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectat la un accesoriu USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Atingeți pentru mai multe opțiuni."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depanarea USB este conectată"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Atingeți pentru a dezactiva depanarea USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Se creează un raport de eroare…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Trimiteți raportul de eroare?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Se trimite raportul de eroare…"</string>
@@ -1109,9 +1150,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"A fost detectat un nou <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Pentru a transfera fotografii și fișiere media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> este deteriorat"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> este deteriorat. Atingeți pentru remediere."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> necompatibil"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Acest dispozitiv nu este compatibil cu acest <xliff:g id="NAME">%s</xliff:g>. Atingeți pentru configurare într-un format compatibil."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> scos pe neașteptate"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Demontați <xliff:g id="NAME">%s</xliff:g> înainte de a-l scoate pentru a nu pierde datele"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> scos"</string>
@@ -1147,7 +1190,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Permite unei aplicații accesul la citirea sesiunilor de instalare. Aceasta poate vedea detalii despre instalările de pachete active."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"să solicite pachete de instalare"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Permite unei aplicații să solicite instalarea pachetelor."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Atingeți de două ori pentru a mări/micșora"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Apăsați de două ori pentru a controla mărirea/micșorarea"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nu s-a putut adăuga widgetul."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Accesați"</string>
<string name="ime_action_search" msgid="658110271822807811">"Căutați"</string>
@@ -1178,20 +1221,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Serviciul de clasificare a notificărilor"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN activat"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN este activată de <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Atingeți pentru a gestiona rețeaua."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Conectat la <xliff:g id="SESSION">%s</xliff:g>. Atingeți pentru a gestiona rețeaua."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Apăsați pentru a gestiona rețeaua."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Conectat la <xliff:g id="SESSION">%s</xliff:g>. Apăsați pentru a gestiona rețeaua."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Se efectuează conectarea la rețeaua VPN activată permanent…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Conectat(ă) la rețeaua VPN activată permanent"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Eroare de rețea VPN activată permanent"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Atingeți pentru a configura"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Alegeți un fișier"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nu au fost găsite fișiere"</string>
<string name="reset" msgid="2448168080964209908">"Resetați"</string>
<string name="submit" msgid="1602335572089911941">"Trimiteți"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mod Mașină activat"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Atingeți pentru a ieși din modul Mașină."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering sau hotspot activ"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Atingeți pentru a configura."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Înapoi"</string>
<string name="next_button_label" msgid="1080555104677992408">"Înainte"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omiteți"</string>
@@ -1225,7 +1271,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adăugați un cont"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Creșteți"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reduceți"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Atingeți și țineți apăsat <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Glisați în sus pentru a crește și în jos pentru a reduce."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Creșteți valoarea pentru minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reduceți valoarea pentru minute"</string>
@@ -1269,7 +1316,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Dsipozitiv de stocare USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editați"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avertisment de utiliz. a datelor"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Atingeți pt. a afișa utiliz./set."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Ați atins limita de date 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Ați atins limita de date 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Ați atins limita de date mobile"</string>
@@ -1281,7 +1329,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"S-a depășit limita de date Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> peste limita specificată."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Datele de fundal restricționate"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Atingeți pt. a elimina limita."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de securitate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certificatul este valid."</string>
<string name="issued_to" msgid="454239480274921032">"Emis către:"</string>
@@ -1498,8 +1547,10 @@
<string name="select_year" msgid="7952052866994196170">"Selectați anul"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> a fost șters"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de serviciu"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Pentru a anula fixarea acestui ecran, atingeți lung opțiunea Înapoi."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Pentru a anula fixarea pe ecran, apăsați lung pe Vizualizare generală."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplicația este fixată: Anularea fixării nu este permisă pe acest dispozitiv."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ecran fixat"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Fixarea ecranului anulată"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 7a4bcdf..2d1a0da 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -269,7 +269,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Произносить названия элементов и включать навигацию с помощью жестов."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Включать спец. возможности для Интернета"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Могут быть установлены дополнительные скрипты."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Обрабатывать набираемый текст"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Введите PUK-код и новый PIN-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новый PIN-код"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Нажмите для ввода пароля"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Введите пароль"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Введите PIN-код"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неверный PIN-код."</string>
@@ -873,14 +875,54 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часов</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"сейчас"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> л.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> мин.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> ч.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> д.</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> л.</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Ошибка"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Это видео не предназначено для потокового воспроизведения на данном устройстве."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Не удалось воспроизвести видео."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Некоторые функции могут не работать"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Недостаточно свободного места для системы. Освободите не менее 250 МБ дискового пространства и перезапустите устройство."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" выполняется"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Нажмите, чтобы получить дополнительные данные или выключить приложение."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ОК"</string>
<string name="cancel" msgid="6442560571259935130">"Отмена"</string>
<string name="yes" msgid="5362982303337969312">"ОК"</string>
@@ -980,13 +1023,14 @@
<string name="android_start_title" msgid="8418054686415318207">"Запуск Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизация хранилища…"</string>
<string name="android_upgrading_notification_title" msgid="1619393112444671028">"Обновление Android"</string>
- <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Во время обновления некоторые приложения могут работать со сбоями."</string>
+ <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Во время обновления возможны неполадки в работе приложений."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизация приложения <xliff:g id="NUMBER_0">%1$d</xliff:g> из <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="8162599310274079154">"Подготовка приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"..."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск приложений."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Окончание загрузки..."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Приложение <xliff:g id="APP">%1$s</xliff:g> запущено"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Нажмите, чтобы переключиться на приложение"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Переключение приложений"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Выполняется другое приложение, которое необходимо остановить перед запуском нового."</string>
<string name="old_app_action" msgid="493129172238566282">"Вернуться к приложению <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Запустить приложение <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Остановить старое приложение без сохранения изменений."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Объем памяти процесса \"<xliff:g id="PROC">%1$s</xliff:g>\" превышен"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Создан дамп кучи. Нажмите, чтобы отправить его."</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Отправить дамп кучи?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процесс \"<xliff:g id="PROC">%1$s</xliff:g>\" превысил объем памяти (<xliff:g id="SIZE">%2$s</xliff:g>). При необходимости отправьте созданный дамп кучи разработчику. Обратите внимание, что файл может содержать личные данные, доступные приложению."</string>
<string name="sendText" msgid="5209874571959469142">"Выберите действие для текста"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Сеть Wi-Fi не подключена к Интернету"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Ещё варианты"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не удалось подключиться к сети Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" – плохое интернет-соединение."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Разрешить подключение?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Начать соединение через Wi-Fi Direct. Модуль Wi-Fi будет отключен."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Не удалось запустить Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct включен"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Нажмите, чтобы открыть настройки"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Принять"</string>
<string name="decline" msgid="2112225451706137894">"Отклонить"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Приглашение отправлено"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Передача фото через USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI через USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB-устройство подключено"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Нажмите, чтобы настроить."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Отладка по USB разрешена"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Нажмите, чтобы отключить отладку по USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Подготовка отчета об ошибке"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Разрешить доступ к информации об ошибке?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Отправка отчета об ошибке"</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Обнаружена новая карта \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Для переноса фотографий и других файлов"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> не работает"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Устройство \"<xliff:g id="NAME">%s</xliff:g>\" повреждено. Нажмите, чтобы это исправить."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> не поддерживается"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"<xliff:g id="NAME">%s</xliff:g> не поддерживается. Нажмите, чтобы выбрать совместимый с вашим устройством формат."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Карта \"<xliff:g id="NAME">%s</xliff:g>\" извлечена неправильно"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Перед тем как извлечь карту \"<xliff:g id="NAME">%s</xliff:g>\", отключите ее, чтобы избежать потери данных."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Карта \"<xliff:g id="NAME">%s</xliff:g>\" извлечена"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Чтение данных текущих сеансов установки пакетов."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"Запрос пакетов установки"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Приложение сможет запрашивать разрешения на установку пакетов."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Нажмите дважды для изменения масштаба"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Нажмите дважды для изменения масштаба"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Не удалось добавить виджет."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Выбрать"</string>
<string name="ime_action_search" msgid="658110271822807811">"Поиск"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Сервис для оценки важности уведомлений"</string>
<string name="vpn_title" msgid="19615213552042827">"Сеть VPN активна"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Сеть VPN активирована приложением <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Нажмите, чтобы открыть настройки."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Сеть VPN подключена: <xliff:g id="SESSION">%s</xliff:g>. Нажмите, чтобы открыть настройки."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Нажмите здесь, чтобы изменить настройки сети."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Подключено: \"<xliff:g id="SESSION">%s</xliff:g>\". Нажмите здесь, чтобы изменить настройки сети."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Подключение…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Подключено"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Ошибка"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Нажмите, чтобы изменить настройки"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Выбрать файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Не выбран файл"</string>
<string name="reset" msgid="2448168080964209908">"Сбросить"</string>
<string name="submit" msgid="1602335572089911941">"Отправить"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Режим \"В автомобиле\""</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Чтобы выйти, нажмите здесь."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Включен режим модема"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Нажмите для настройки."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Далее"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Пропустить"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Добавить аккаунт"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Увеличить"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Уменьшить"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Нажмите и удерживайте <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Проведите вверх, чтобы увеличить значение, и вниз, чтобы уменьшить его."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"На минуту вперед"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"На минуту назад"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-накопитель"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Изменить"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Осталось мало трафика"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Проверьте трафик и настройки."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Достигнут лимит трафика 2G/3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Достигнут лимит трафика 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Достигнут лимит мобильного трафика"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Превышен лимит трафика Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Лимит превышен на <xliff:g id="SIZE">%s</xliff:g>."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Фон. режим ограничен"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Снять ограничение..."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Сертификат безопасности"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Этот сертификат действителен."</string>
<string name="issued_to" msgid="454239480274921032">"Кому выдан:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Выберите год"</string>
<string name="deleted_key" msgid="7659477886625566590">"Цифра <xliff:g id="KEY">%1$s</xliff:g> удалена"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Рабочий <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Чтобы открепить экран, нажмите и удерживайте кнопку \"Назад\"."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Чтобы открепить экран, нажмите и удерживайте кнопку \"Обзор\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Включена блокировка в приложении. Ее отключение запрещено правилами организации."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Блокировка включена"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Блокировка выключена"</string>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index ca33806..530f894 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ස්පර්ශ කරන අයිතම හඬ නගා කතා කෙරෙනු ඇති අතර ඉංගිති භාවිතයෙන් තිරය ගවේෂණය කිරීමට පුළුවනි."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"උසස් වෙබ් ප්රවේශ්යතාව සක්රිය කරන්න"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"යෙදුම් අන්තර්ගතයට ප්රවේශ්යතාවය වැඩිවන ලෙස සකස් කිරීමට ඇතැම් විට ස්ක්රිප්ට් ස්ථාපනය කර ඇත."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ඔබ ටයිප් කළ පෙළ බලන්න"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK සහ නව PIN කේතය ටයිප් කරන්න"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK කේතය"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"නව PIN කේතය"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"මුරපදය ටයිප් කිරීමට ස්පර්ශ කරන්න"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"අගුළු ඇරීමට මුරපදය ටයිප් කරන්න"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"අගුළු හැරීමට PIN එක ටයිප් කරන්න"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"වැරදි PIN කේතයකි."</string>
@@ -861,14 +863,38 @@
<item quantity="other">පැය <xliff:g id="COUNT">%d</xliff:g></item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"දැන්"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one">මි <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="other">මි <xliff:g id="COUNT_1">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one">පැ <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="other">පැ <xliff:g id="COUNT_1">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one">දි <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="other">දි <xliff:g id="COUNT_1">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one">ව <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="other">ව <xliff:g id="COUNT_1">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">මි <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ <item quantity="other">මි <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">පැ <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ <item quantity="other">පැ <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">දි <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ <item quantity="other">දි <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">ව <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ <item quantity="other">ව <xliff:g id="COUNT_1">%d</xliff:g>කදී</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"වීඩියෝ ගැටලුව"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"මේ වීඩියෝව මෙම උපාංගයට ප්රවාහනය සඳහා වලංගු නැත."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"මෙම වීඩියෝව ධාවනය කළ නොහැක."</string>
@@ -900,7 +926,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"සමහර පද්ධති කාර්යයන් ක්රියා නොකරනු ඇත"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"පද්ධතිය සඳහා ප්රමාණවත් ඉඩ නොමැත. ඔබට 250MB නිදහස් ඉඩක් තිබෙන ඔබට තිබෙන බව සහතික කරගෙන නැවත උත්සාහ කරන්න."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ධාවනය වේ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"වැඩිපුර තොරතුරු හෝ යෙදුම නැවතීම සඳහා ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"හරි"</string>
<string name="cancel" msgid="6442560571259935130">"අවලංගු කරන්න"</string>
<string name="yes" msgid="5362982303337969312">"හරි"</string>
@@ -974,7 +1001,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"යෙදුම් ආරම්භ කරමින්."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ඇරඹුම අවසාන කරමින්."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ධාවනය වෙමින්"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"යෙදුමට මාරු වීමට ස්පර්ශ කරන්න"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"යෙදුම් මාරු වනවාද?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"අලුත් යෙදුමක් ආරම්භ කිරීමට පෙර තවමත් ක්රියාවෙහි යෙදෙමින් පවතින යෙදුම නැවැත්විය යුතුයි."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> වෙත ආපසු යන්න"</string>
@@ -982,7 +1010,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> අරඹන්න"</string>
<string name="new_app_description" msgid="1932143598371537340">"සුරැකීමකින් තොරව පරණ යෙදුම නවත්වන්න."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> මතකයේ සීමාව ඉක්මවා ඇත"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"සංච හැලීම් සම්මුච්චිය වී ඇත; බෙදාගැනීමට ස්පර්ශ කරන්න"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"සංච නික්ෂේපය බෙදාගන්න ද?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> ක්රියාවලිය එහි ක්රියාවලියේ <xliff:g id="SIZE">%2$s</xliff:g> මතකය ඉක්මවා ඇත. ඔබට එහි වර්ධකයන් සමග බෙදාගැනීමට සංච නික්ෂේපයක් ඇත. ප්රවේසම් වන්න: මෙම යෙදුම පිවිසිය හැකි ඔබගේ පෞද්ගලික තොරතුරු මෙම සංච නික්ෂේපයෙහි අඩංගු වී තිබිය හැකිය."</string>
<string name="sendText" msgid="5209874571959469142">"පෙළ සඳහා ක්රියාව තෝරන්න"</string>
@@ -1018,7 +1047,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi හට අන්තර්ජාල ප්රවේශය නැත"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"විකල්ප සඳහා ස්පර්ශ කරන්න"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi වෙත සම්බන්ධ විය නොහැක"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" දුබල අන්තර්ජාල සම්බන්ධතාවයක් ඇත."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"සම්බන්ධතාවයට ඉඩ දෙන්නද?"</string>
@@ -1028,7 +1058,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ඍජු Wi-Fi ආරම්භ කරන්න. මෙය Wi-Fi සේවාදායක/හොට්ස්පොට් එක අක්රිය කරනු ඇත."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ඍජු Wi-Fi ආරම්භ කළ නොහැක."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ඍජු සම්බන්ධතාව සක්රියයි"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"සැකසීම් සඳහා ස්පර්ශ කරන්න"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"පිළිගන්න"</string>
<string name="decline" msgid="2112225451706137894">"ප්රතික්ෂේප කරන්න"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ආරාධනාව යවන ලදි"</string>
@@ -1080,9 +1111,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ඡායාරූප හුවමාරුව සඳහා USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI සඳහා USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB මෙවලමකට සම්බන්ධිතයි"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"වඩා වැඩි විකල්ප සඳහා ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB නිදොස්කරණය සම්බන්ධිතයි"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB නිදොස්කරණය අබල කිරීමට ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"දෝෂ වාර්තාවක් ගනිමින්…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"දෝෂ වාර්තාව බෙදා ගන්නද?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"දෝෂ වාර්තාවක් බෙදා ගනිමින්..."</string>
@@ -1102,9 +1135,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"නව <xliff:g id="NAME">%s</xliff:g> අනාවරණය කරන ලදි"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ඡායාරූප සහ මාධ්ය හුවමාරු කිරීම සඳහා"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"දූෂිත <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> දූෂිතයි. නිවැරදි කිරීමට ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"සහාය නොදක්වන <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"මෙම උපාංගය මෙම <xliff:g id="NAME">%s</xliff:g> සඳහා සහාය නොදක්වයි. සහාය දක්වන ආකෘතියකින් පිහිටුවීමට ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> අනපේක්ෂිතව ඉවත් කරන ලදි"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"දත්ත නැතිවීම වැළක්වීමට <xliff:g id="NAME">%s</xliff:g> ආචයනය ඉවත්කිරීමට පෙර ගලවන්න."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ඉවත් කරන ලදි"</string>
@@ -1140,7 +1175,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ස්ථාපන සැසිය කියවීමට යෙදුමට ඉඩ දෙන්න. සක්රිය පැකේජ ස්ථාපනය පිළිබඳ විස්තර බැලීමට එයට මෙයින් ඉඩ දෙයි."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"ස්ථාපන පැකේජ ඉල්ලීම"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ස්ථාපන පැකේජ ඉල්ලීමට යෙදුමකට අවසර දීම."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"විශාලන පාලනය සඳහා දෙවරක් ස්පර්ශ කරන්න"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"විශාලන පාලක සඳහා දෙවතාවක් තට්ටු කරන්න"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"විජටය එකතු කිරීමට නොහැකි විය."</string>
<string name="ime_action_go" msgid="8320845651737369027">"යන්න"</string>
<string name="ime_action_search" msgid="658110271822807811">"සෙවීම"</string>
@@ -1171,20 +1206,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"දැනුම්දීම් ශ්රේණිගත කිරීමේ සේවාව"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN ක්රියාත්මකයි"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> මඟින් VPN සක්රීය කරන ලදි"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ජාලය කළමනාකරණය කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> වෙත සම්බන්ධ වුණි. ජාලය කළමනාකරණය කිරීමට ස්පර්ශ කරන්න."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"ජාලය කළමනාකරණය කිරීමට තට්ටු කරන්න."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g> වෙත සම්බන්ධිතයි. ජාලය කළමනාකරණය කිරීමට තට්ටු කරන්න."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"සැමවිටම VPN සම්බන්ධ වෙමින්…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"නිරතුරුවම VPN සම්බන්ධ කර ඇත"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"සැමවිට සක්රිය VPN දෝෂය"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"වින්යාස කිරීමට ස්පර්ශ කරන්න"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ගොනුව තෝරන්න"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ගොනුවක් තෝරාගෙන නැත"</string>
<string name="reset" msgid="2448168080964209908">"යළි පිහිටුවන්න"</string>
<string name="submit" msgid="1602335572089911941">"යොමු කරන්න"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"මෝටර් රථ ආකාරය සබල කර ඇත"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"මෝටර් රථ ආකාරයෙන් පිටවීමට ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ටෙදරින් හෝ හොට්ස්පොට් සක්රීයයි"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"සකස් කිරීමට ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"ආපසු"</string>
<string name="next_button_label" msgid="1080555104677992408">"මීලඟ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"මඟ හරින්න"</string>
@@ -1217,7 +1255,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ගිණුමක් එකතු කරන්න"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"වැඩි කරන්න"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"අඩු කරන්න"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ස්පර්ශ කර රඳවා සිටින්න."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"වැඩි කිරීමට ඉහලට සර්පණය කරන්න සහ අඩු කිරීමට පහලට සර්පණය කරන්න."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"මිනිත්තුවක් වැඩි කරන්න"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"මිනිත්තුව අඩු කරන්න"</string>
@@ -1261,7 +1300,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB ආචයනය"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"සංස්කරණය කරන්න"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"දත්ත භාවිතා අවවාදය"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"භාවිතය සහ සැකසීම් බැලීමට ස්පර්ශ කරන්න."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G දත්ත සීමාවට ළඟාවී ඇත"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G දත්ත සීමාවට ළඟාවී ඇත"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"සෙල්යුලර් දත්ත සීමාවට ළඟාවී ඇත"</string>
@@ -1273,7 +1313,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi දත්ත සීමාව ඉක්මවා යන ලදි"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"සඳහන් කළ සීමාවට වඩා <xliff:g id="SIZE">%s</xliff:g> වැඩිය."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"පසුබිම් දත්ත සිමා කරන ලදි"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"සීමා කිරීම ඉවත් කිරීමට ස්පර්ශ කරන්න"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"ආරක්ෂිත සහතිකය"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"මෙම සහතිකය වලංගුයි."</string>
<string name="issued_to" msgid="454239480274921032">"ලබාදුන්නේ:"</string>
@@ -1489,8 +1530,10 @@
<string name="select_year" msgid="7952052866994196170">"වසර තෝරන්න"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> මකා දමන ලදි"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"වැඩ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"මෙම තිරය ඇමුණුම් ඉවත් කිරීමට, ස්පර්ශ කර අල්ලාගෙන සිටින්න."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"මෙම තීරයේ ඇමුණුම ඉවත් කිරීමට, දළ විශ්ලේෂණය ස්පර්ශ කර අල්ලා සිටින්න."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"යෙදුම අමුණා ඇත: ගැලවීමට මෙම උපාංගය මත ඉඩ දිය නොහැකිය."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"තිරය අගුළු දමා ඇත"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"තිරයේ අගුළු ඇර ඇත"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index bb5ac2d..84fbea3 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -269,7 +269,8 @@
<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>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Po dotyku na položku sa vysloví jej názov a obrazovku je možné preskúmať pomocou gest."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Zapnúť vylepšenú dostupnosť na webe"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Môže nainštalovať skripty na sprístupnenie obsahu aplikácie."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sledovať zadávaný text"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Zadajte kód PUK a nový kód PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kód PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nový kód PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotknutím zadajte heslo"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Zadajte heslo na odomknutie"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Zadajte kód PIN na odomknutie"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Nesprávny kód PIN."</string>
@@ -873,14 +875,54 @@
<item quantity="one">1 hodina</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"teraz"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> r.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> r.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> r.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> r.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="few">o <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="many">o <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">o <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">o <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="few">o <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="many">o <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">o <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="one">o <xliff:g id="COUNT_0">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="few">o <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="many">o <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="other">o <xliff:g id="COUNT_1">%d</xliff:g> d.</item>
+ <item quantity="one">o <xliff:g id="COUNT_0">%d</xliff:g> d.</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="few">o <xliff:g id="COUNT_1">%d</xliff:g> r.</item>
+ <item quantity="many">o <xliff:g id="COUNT_1">%d</xliff:g>r.</item>
+ <item quantity="other">o <xliff:g id="COUNT_1">%d</xliff:g> r.</item>
+ <item quantity="one">o <xliff:g id="COUNT_0">%d</xliff:g> r.</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problém s videom"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Je nám ľúto, ale toto video sa nedá streamovať do tohto zariadenia."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Toto video nie je možné prehrať."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Niektoré systémové funkcie nemusia fungovať"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"V úložisku nie je dostatok voľného miesta pre systém. Zaistite, aby ste mali 250 MB voľného miesta a zariadenie reštartujte."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> je spustená"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Dotykom si zobrazíte viac informácií alebo zastavíte aplikáciu."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Zrušiť"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Prebieha spúšťanie aplikácií."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Prebieha dokončovanie spúšťania."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Spustená aplikácia: <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Dotknutím prepnite na aplikáciu"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Prepnúť aplikácie?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Pred spustením novej aplikácie treba zastaviť inú spustenú aplikáciu."</string>
<string name="old_app_action" msgid="493129172238566282">"Návrat k <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Spustiť <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zastaviť starú aplikáciu bez uloženia."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> prekročil limit pamäte"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Boli zhromaždené zálohy údajov; zdieľajte ich klepnutím"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Chcete zdieľať zálohy údajov?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> prekročil limit <xliff:g id="SIZE">%2$s</xliff:g> pre pamäť procesu. Máte k dispozícii zálohy údajov, ktoré môžete zdieľať s vývojárom. Postupujte opatrne: tieto zálohy údajov nesmú obsahovať žiadne osobné informácie, ku ktorým má táto aplikácia prístup."</string>
<string name="sendText" msgid="5209874571959469142">"Zvoľte akciu pre text"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Sieť Wi-Fi nemá prístup k internetu"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Možnosti zobrazíte klepnutím"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nepodarilo sa pripojiť k sieti Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" má nekvalitné internetové pripojenie."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Povoliť pripojenie?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Spustiť priame pripojenie siete Wi-Fi. Táto možnosť vypne sieť Wi-Fi v režime klient alebo hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Priame pripojenie siete Wi-Fi sa nepodarilo spustiť"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Priame pripojenie siete Wi-Fi je zapnuté"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Nastavenia otvoríte dotykom"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Prijať"</string>
<string name="decline" msgid="2112225451706137894">"Odmietnuť"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozvánka bola odoslaná"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB na prenos fotiek"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB na pripojenie zariadenia MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Pripojené k periférnemu zariadeniu USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Ďalšie možnosti zobrazíte klepnutím."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Ladenie cez USB pripojené"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Klepnutím zakážete ladenie cez USB"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Preberá sa hlásenie chyby…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Chcete zdieľať hlásenie chyby?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Zdieľa sa hlásenie chyby…"</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Bolo zistené nové úložisko <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Na prenos fotiek a médií"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Poškodené úložisko <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Úložisko <xliff:g id="NAME">%s</xliff:g> je poškodené. Opravíte ho klepnutím."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepodporované úložisko <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Toto zariadenie nepodporuje dané úložisko (<xliff:g id="NAME">%s</xliff:g>). Klepnutím ho nastavíte v podporovanom formáte."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Úl. <xliff:g id="NAME">%s</xliff:g> bolo neočakávane odobraté"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ak chcete zabrániť strate údajov, úložisko <xliff:g id="NAME">%s</xliff:g> pred odobratím odpojte"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Úložisko <xliff:g id="NAME">%s</xliff:g> bolo odobraté"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Toto povolenie umožňuje aplikácii čítať relácie inštalácií a zobraziť tak podrobnosti o aktívnych inštaláciách balíkov."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"odosielanie žiadostí o inštaláciu balíkov"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Umožňuje aplikácii vyžiadať inštaláciu balíkov."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Ovládacie prvky lupy zobrazíte dvojitým dotknutím"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Dvojitým klepnutím môžete ovládať priblíženie"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Miniaplikáciu sa nepodarilo pridať."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Hľadať"</string>
<string name="ime_action_search" msgid="658110271822807811">"Hľadať"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Služba na hodnotenie upozornení"</string>
<string name="vpn_title" msgid="19615213552042827">"Sieť VPN je aktivovaná"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Aplikáciu <xliff:g id="APP">%s</xliff:g> aktivovala sieť VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Dotykom môžete spravovať sieť."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Pripojené k relácii <xliff:g id="SESSION">%s</xliff:g>. Po dotyku môžete sieť spravovať."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Kliknutím zobrazíte správu siete."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Pripojené k relácii <xliff:g id="SESSION">%s</xliff:g>. Po klepnutí môžete sieť spravovať."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Pripájanie k vždy zapnutej sieti VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Pripojenie k vždy zapnutej sieti VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Chyba vždy zapnutej siete VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Dotykom spustíte konfiguráciu"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Zvoliť súbor"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nie je vybratý žiadny súbor"</string>
<string name="reset" msgid="2448168080964209908">"Obnoviť"</string>
<string name="submit" msgid="1602335572089911941">"Odoslať"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Aktivovaný režim V aute"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Dotykom ukončite režim V aute."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering alebo prístupový bod je aktívny"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Dotykom nastavte."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Späť"</string>
<string name="next_button_label" msgid="1080555104677992408">"Ďalej"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskočiť"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Pridať účet"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Zvýšiť"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Znížiť"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Dotknite sa a podržte <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Ak chcete hodnotu zvýšiť, prejdite prstom nahor. Ak chcete hodnotu znížiť, prejdite prstom nadol."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Pridať minútu"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Ubrať minútu"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Ukladací priestor USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Upraviť"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozornenie o využití dát"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Zobr. využív. dát a nastavení."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Bol dosiahnutý limit 2G–3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Bol dosiahnutý limit 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Bol dosiahnutý limit mobilných dát"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Dát. limit Wi-Fi bol prekročený"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> nad stanovenou hranicou."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dátové prenosy obmedzené"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Klepnutím obmedzenie odstránite."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certifikát zabezpečenia"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certifikát je platný."</string>
<string name="issued_to" msgid="454239480274921032">"Vydané pre:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Vyberte rok"</string>
<string name="deleted_key" msgid="7659477886625566590">"Číslo <xliff:g id="KEY">%1$s</xliff:g> bolo odstránené"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Práca – <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Ak chcete uvoľniť túto obrazovku, klepnite na tlačidlo Späť a podržte ho."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Ak chcete uvoľniť túto obrazovku, klepnite na tlačidlo Prehľad a podržte ho."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikácia je pripnutá. Uvoľnenie nie je na tomto zariadení povolené."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Obrazovka bola pripnutá"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Obrazovka bola uvoľnená"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index ce97f05..dd4e467 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -269,7 +269,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pridobiti vsebino okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Preverjanje vsebine okna, ki ga uporabljate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vklopiti raziskovanje z dotikom"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Elementi, ki se jih dotaknete, bodo izrečeni naglas, zaslon pa lahko raziskujete s potezami."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Vklopiti izboljšano dostopnost spleta za ljudi s posebnimi potrebami"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Za boljšo dostopnost vsebine aplikacije je mogoče namestiti skripte."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Opazovati besedilo, ki ga natipkate"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Vnesite kodo PUK in novo kodo PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Koda PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nova koda PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotaknite se za vnos gesla"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Vnesite geslo za odklepanje"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Vnesite PIN za odklepanje"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Napačna koda PIN."</string>
@@ -873,14 +875,54 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ur</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"zdaj"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">čez <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="two">čez <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="few">čez <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="other">čez <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">čez <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="two">čez <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="few">čez <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ <item quantity="other">čez <xliff:g id="COUNT_1">%d</xliff:g> h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">čez <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="two">čez <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="few">čez <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="other">čez <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">čez <xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ <item quantity="two">čez <xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ <item quantity="few">čez <xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ <item quantity="other">čez <xliff:g id="COUNT_1">%d</xliff:g> l</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Težava z videoposnetkom"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Ta videoposnetek ni veljaven za pretakanje v to napravo."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Tega videoposnetka ni mogoče predvajati."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Nekatere sistemske funkcije morda ne delujejo"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"V shrambi ni dovolj prostora za sistem. Sprostite 250 MB prostora in znova zaženite napravo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> se izvaja"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Dotaknite se, če želite izvedeti več ali ustaviti aplikacijo."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"V redu"</string>
<string name="cancel" msgid="6442560571259935130">"Prekliči"</string>
<string name="yes" msgid="5362982303337969312">"V redu"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Zagon aplikacij."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Dokončevanje zagona."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> se izvaja"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Dotaknite se, da preklopite na aplikacijo"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Želite preklopiti aplikacije?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Preden zaženete novo aplikacijo, ustavite izvajano."</string>
<string name="old_app_action" msgid="493129172238566282">"Vrni se na <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Začni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ustavi prejšnjo aplikacijo brez shranjevanja."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> je presegel omejitev pomnilnika"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Izvoz kopice je zbran; dotaknite se za deljenje z drugimi"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Deljenje izvoza kopice z drugimi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> je presegel <xliff:g id="SIZE">%2$s</xliff:g> omejitve pomnilnika za proces. Izvoz kopice je na voljo, da ga delite z razvijalcem. Previdno: izvoz kopice lahko vsebuje vaše osebne podatke, do katerih ima aplikacija dostop."</string>
<string name="sendText" msgid="5209874571959469142">"Izberite dejanje za besedilo"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Omrežje Wi-Fi nima dostopa do interneta"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Dotaknite se za prikaz možnosti"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Z omrežjem Wi-Fi se ni mogoče povezati"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima slabo internetno povezavo."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Ali dovolite vzpostavitev povezave?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Zaženite Wi-Fi Direct. S tem boste izklopili odjemalca/dostopno točko Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct ni bilo mogoče zagnati."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je vklopljen"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Dotaknite se za nastavitve"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Sprejmem"</string>
<string name="decline" msgid="2112225451706137894">"Zavrni"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Povabilo je poslano"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prenos fotografij"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Priključen na dodatek USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Za več možnosti se dotaknite."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Iskanje in odpravljanje napak USB je povezano"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Dotaknite se, če želite onemogočiti iskanje in odpravljanje napak prek vrat USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Zajemanje poročila o napakah …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Želite poslati poročilo o napakah?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Pošiljanje poročila o napakah …"</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Zaznana je bila nova shramba <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prenos fotografij in predstavnosti"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Naprava za sh. <xliff:g id="NAME">%s</xliff:g> je poškodovana"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Naprava za shranjevanje <xliff:g id="NAME">%s</xliff:g> je poškodovana. Dotaknite se za popravilo."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepodprta naprava za shran. <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Ta naprava ne podpira naprave za shranjevanje <xliff:g id="NAME">%s</xliff:g>. Dotaknite se za nastavitev v podprti obliki."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Shramba <xliff:g id="NAME">%s</xliff:g> nepričak. odstranjena"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Izpnite shrambo <xliff:g id="NAME">%s</xliff:g>, preden jo odstranite, da se izognete izgubi podatkov."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Shramba <xliff:g id="NAME">%s</xliff:g> je bila odstranjena"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Aplikaciji omogoča branje sej namestitev. Tako lahko bere podrobnosti o aktivnih namestitvah paketov."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"zahtevanje paketov za namestitev"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Aplikaciji omogoča zahtevanje namestitve paketov."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dvakrat se dotaknite za nadzor povečave/pomanjšave"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tapnite dvakrat za nadzor povečave/pomanjšave"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Pripomočka ni bilo mogoče dodati."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Pojdi"</string>
<string name="ime_action_search" msgid="658110271822807811">"Iskanje"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Storitev za določanje stopenj pomembnosti obvestil"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN aktiviran"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN je aktivirala aplikacija <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Dotaknite se, če želite upravljati omrežje."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Vzpostavljena povezava s sejo <xliff:g id="SESSION">%s</xliff:g>. Dotaknite se, če želite upravljati omrežje."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tapnite za upravljanje omrežja."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Povezan z mestom <xliff:g id="SESSION">%s</xliff:g>. Tapnite za upravljanje omrežja."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezovanje v stalno vklopljeno navidezno zasebno omrežje ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Vzpostavljena povezava v stalno vklopljeno navidezno zasebno omrežje"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Napaka stalno vklopljenega navideznega zasebnega omrežja"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Dotaknite se, če želite konfigurirati"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Izberi datoteko"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nobena datoteka ni izbrana"</string>
<string name="reset" msgid="2448168080964209908">"Ponastavi"</string>
<string name="submit" msgid="1602335572089911941">"Pošlji"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Način delovanja za avtomobil je omogočen"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Dotaknite se, če želite zapreti avtomobilski način."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Aktivna povezava z internetom ali dostopna točka sta aktivni"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Dotaknite se, da nastavite."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Nazaj"</string>
<string name="next_button_label" msgid="1080555104677992408">"Naprej"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj račun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Več"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Manj"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Dotaknite se vrednosti <xliff:g id="VALUE">%s</xliff:g> in jo pridržite."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Povlecite navzgor za povečanje in navzdol za zmanjšanje."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povečanje vrednosti za minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Zmanjšanje vrednosti za minuto"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Pomnilnik USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Uredi"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Opozorilo o uporabi podatkov"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Dotaknite se za uporabo in nast."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dosežena pod. omejitev za 2G/3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dosežena pod. omejitev za 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dosežena mobilna pod. omejitev"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Presež. omej. za podatke Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Velikost <xliff:g id="SIZE">%s</xliff:g> presega omejitev"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Podatki v ozadju so omejeni"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Dotaknite se, da odst. omejitev."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Varnostno potrdilo"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"To potrdilo je veljavno."</string>
<string name="issued_to" msgid="454239480274921032">"Izdano za:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Izberite leto"</string>
<string name="deleted_key" msgid="7659477886625566590">"Številka <xliff:g id="KEY">%1$s</xliff:g> je izbrisana"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> za delo"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Če želite odpeti ta zaslon, se dotaknite tipke za nazaj in jo pridržite."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Če želite odpeti ta zaslon, se dotaknite tipke Pregled in jo pridržite."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je pripeta: v tej napravi odpenjanje ni dovoljeno."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Zaslon je pripet"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Zaslon je odpet"</string>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index 60a0234..3f2b30d 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Nxjerrë përmbajtjen e dritares"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspekton përmbajtjen e dritares me të cilën po ndërvepron."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizojë funksionin \"Eksploro me prekje\""</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Artikujt e prekur do të lexohen me zë të lartë dhe ekrani mund të eksplorohet duke përdorur gjeste."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktivizojë qasjen e përmirësuar në ueb"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skriptet mund të instalohen për ta bërë përmbajtjen e aplikacionit më të qasshme."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Vëzhgojë tekstin që shkruan"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Shkruaj PUK-un dhe PIN-in e ri"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kodi PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kod i ri PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Prek për të shkruar fjalëkalimin"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Shkruaj fjalëkalimin për të shkyçur"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Shkruaj PIN-in për ta shkyçur"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kodi PIN është i pasaktë."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 orë</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"tani"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> orë</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> orë</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ditë</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ditë</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> vite</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> vit</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">në <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">në <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">në <xliff:g id="COUNT_1">%d</xliff:g> orë</item>
+ <item quantity="one">në <xliff:g id="COUNT_0">%d</xliff:g> orë</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">në <xliff:g id="COUNT_1">%d</xliff:g> ditë</item>
+ <item quantity="one">në <xliff:g id="COUNT_0">%d</xliff:g> ditë</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">në <xliff:g id="COUNT_1">%d</xliff:g> vite</item>
+ <item quantity="one">në <xliff:g id="COUNT_0">%d</xliff:g> vit</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problem me videon"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Kjo video nuk ofrohet për transmetim në këtë pajisje."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Videoja nuk mund të luhet."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Disa funksione të sistemit mund të mos punojnë"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nuk ka hapësirë të mjaftueshme ruajtjeje për sistemin. Sigurohu që të kesh 250 MB hapësirë të lirë dhe pastaj të rifillosh."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> është në punë."</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Prek për më shumë informacion ose për të ndaluar aplikacionin."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Në rregull"</string>
<string name="cancel" msgid="6442560571259935130">"Anulo"</string>
<string name="yes" msgid="5362982303337969312">"Në rregull"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikacionet e fillimit."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Po përfundon nisjen."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> është në punë"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Prek për të kaluar tek aplikacioni"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Të ndryshohen aplikacionet?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Një tjetër aplikacion është në punë dhe duhet ndaluar përpara se të nisësh një tjetër."</string>
<string name="old_app_action" msgid="493129172238566282">"Kthehu në <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Fillo <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ndalo aplikacionin e vjetër pa e ruajtur."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> e ka kaluar kufirin e memories"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Skedarët fiktivë u stivosën; prek për t\'i ndarë"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Të ndahet stiva e skedarëve fiktivë?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Procesi <xliff:g id="PROC">%1$s</xliff:g> ka kaluar kufirin e tij të memories së procesit me <xliff:g id="SIZE">%2$s</xliff:g>. Mundësohet stivimi e skedarëve fiktivë në mënyrë që t\'i ndani me zhvilluesit e tyre. Bëni kujdes pasi stiva e skedarëve fiktivë mund të përmbajë ndonjë informacion tëndin personal ku aplikacioni ka qasje."</string>
<string name="sendText" msgid="5209874571959469142">"Zgjidh një veprim për tekstin"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nuk ka qasje në internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Prek për opsionet"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nuk mund të lidhej me Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ka një lidhje të dobët interneti."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Të lejohet lidhja?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Fillo \"Wi-Fi Direkt\". Kjo do ta çaktivizojë klientin ose zonën e qasjes Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nuk mundi të fillonte \"Wi-Fi Direkt\"."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"\"Wi-Fi Direkt\" është aktiv"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Prek për \"cilësimet\""</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Prano"</string>
<string name="decline" msgid="2112225451706137894">"Refuzo"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Ftesa u dërgua"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB për transferimin e fotografive"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB për MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"U lidh me një ndihmës USB-je"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Prek për më shumë opsione."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Korrigjuesi i USB-së i lidhur"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Prek për të çaktivizuar korrigjimin e gabimeve të USB-së."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Po merret raporti i defekteve në kod…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Të ndahet raporti i defektit në kod?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Po ndan raportin e defekteve në kod..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"U zbulua karta e re <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Për transferimin e fotografive dhe skedarëve të tjerë"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> e dëmtuar"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> është e dëmtuar. Prek për ta rregulluar."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> nuk mbështetet"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Kjo pajisje nuk e mbështet këtë <xliff:g id="NAME">%s</xliff:g>. Prek për ta konfiguruar në një format të mbështetur."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> u hoq papritur"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Shkëput <xliff:g id="NAME">%s</xliff:g> para se ta heqësh për të shmangur humbjen e të dhënave"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Është hequr <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Lejon një aplikacion të lexojë sesionet e instalimit. Kjo e lejon atë të shohë detaje rreth instalimeve të paketave aktive."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"kërko paketat e instalimit"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Lejon që një aplikacion të kërkojë instalimin e paketave."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Prek dy herë për të kontrolluar zmadhimin"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nuk mundi të shtonte miniaplikacion."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Shko"</string>
<string name="ime_action_search" msgid="658110271822807811">"Kërko"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Shërbimi i klasifikimit të njoftimeve"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN-ja u aktivizua"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN-ja është aktivizuar nga <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Prek për të menaxhuar rrjetin."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Lidhur me <xliff:g id="SESSION">%s</xliff:g>. Prek për të menaxhuar rrjetin."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Po lidh VPN-në për aktivizim të përhershëm…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN e lidhur në mënyrë të përhershme"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Gabimi VPN-je për aktivizimin e përhershëm"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Prek për të konfiguruar"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Zgjidh skedarin"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nuk u zgjodh asnjë skedar"</string>
<string name="reset" msgid="2448168080964209908">"Rivendos"</string>
<string name="submit" msgid="1602335572089911941">"Dërgo"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modaliteti \"në makinë\" është i aktivizuar"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Prek për të dalë nga modaliteti \"në makinë\"."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Lidhja e çiftimit ose ajo e qasjes në zona publike interneti është aktive"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Prek për të konfiguruar."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Prapa"</string>
<string name="next_button_label" msgid="1080555104677992408">"Përpara"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Kapërce"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Shto llogari"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Rrit"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Pakëso"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Prek dhe mbaj shtypur <xliff:g id="VALUE">%s</xliff:g>"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Rrëshqit lart për të rritur dhe poshtë për të pakësuar."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Rrit vlerat për minutë"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Pakëso vlerat për minutë"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Hapësira ruajtëse e USB-së"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redakto"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Paralajmërim për përdorimin e të dhënave"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Prek për të parë përdorimin dhe cilësimet."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Kufiri i të dhënave 2G-3G u arrit"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Kufiri i të dhënave 4G u arrit"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Kufiri i të dhënave celulare u arrit"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Kufiri i të dhënave Wi-Fi u tejkalua"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> mbi kufirin e përcaktuar."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Të dhënat e sfondit janë të kufizuara"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Prek për të hequr kufizimin."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certifikatë sigurie"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certifikata është e vlefshme."</string>
<string name="issued_to" msgid="454239480274921032">"Lëshuar për:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"Përzgjidh vitin"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> u fshi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Puna <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Për t\'i hequr gozhdimin ekranit, prek dhe mbaj shtypur \"Prapa\"."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Për t\'i hequr gozhdimin ekranit, prek dhe mbaj shtypur \"Përmbledhje\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ekrani është i gozhduar. Anulimi i mbërthimit nuk lejohet nga organizata jote."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekrani u gozhdua"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekrani u hoq nga gozhdimi"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index ae21a6e..7eb7f83 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -266,7 +266,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Ставке које додирнете ће бити изговорене, а можете да се крећете по екрану покретима."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Укључи побољшану приступачност веба"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Могу да се инсталирају скрипте да би садржај апликација био приступачнији."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Прати текст који уносите"</string>
@@ -665,7 +666,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Унесите PUK и нови PIN кôд"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK кôд"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нови PIN кôд"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Додирните да бисте унели лозинку"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Откуцајте лозинку да бисте откључали"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Унесите PIN за откључавање"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN кôд је нетачан."</string>
@@ -866,14 +868,46 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> сати</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"сада"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> мин</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> мин</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> мин</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> дан</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> дана</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> дана</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g> мин</item>
+ <item quantity="few">за <xliff:g id="COUNT_1">%d</xliff:g> мин</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g> мин</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ <item quantity="few">за <xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g> ч</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g> дан</item>
+ <item quantity="few">за <xliff:g id="COUNT_1">%d</xliff:g> дана</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g> дана</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">за <xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="few">за <xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="other">за <xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Проблем са видео снимком"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Овај видео не може да се стримује на овом уређају."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Не можете да пустите овај видео."</string>
@@ -905,7 +939,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Неке системске функције можда не функционишу"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Нема довољно меморијског простора за систем. Уверите се да имате 250 MB слободног простора и поново покрените."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> је покренута"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Додирните за више информација или заустављање апликације."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Потврди"</string>
<string name="cancel" msgid="6442560571259935130">"Откажи"</string>
<string name="yes" msgid="5362982303337969312">"Потврди"</string>
@@ -979,7 +1014,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Покретање апликација."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Завршавање покретања."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Апликација <xliff:g id="APP">%1$s</xliff:g> је покренута"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Додирните да бисте прешли на апликацију"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Желите ли да пређете на другу апликацију?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Већ је покренута друга апликација која мора да буде заустављена да бисте могли да покренете нову."</string>
<string name="old_app_action" msgid="493129172238566282">"Врати се у <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -987,7 +1023,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Покрени <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Зауставља стару апликацију без чувања."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> премашује ограничење меморије"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Снимак динамичког дела меморије је направљен; додирните за дељење"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Желите ли да делите снимак динамичког дела меморије?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процес <xliff:g id="PROC">%1$s</xliff:g> је премашио ограничење меморије за процес од <xliff:g id="SIZE">%2$s</xliff:g>. Снимак динамичког дела меморије је доступан и можете да га делите са програмером. Будите опрезни: овај снимак динамичког дела меморије може да садржи неке личне податке којима апликација може да приступа."</string>
<string name="sendText" msgid="5209874571959469142">"Изаберите радњу за текст"</string>
@@ -1025,7 +1062,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi нема приступ интернету"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Додирните за опције"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Није могуће повезати са Wi-Fi мрежом"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" има лошу интернет везу."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Желите ли да дозволите повезивање?"</string>
@@ -1035,7 +1073,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Покрените Wi-Fi Direct. Тиме ћете искључити клијента/хотспот за Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Није могуће покренути Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct је укључен"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Додирните за подешавања"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Прихвати"</string>
<string name="decline" msgid="2112225451706137894">"Одбиј"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Позивница је послата"</string>
@@ -1087,9 +1126,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB за пренос слика"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB за MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Повезано са USB додатком"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Додирните за још опција."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Отклањање грешака са USB-а је успостављено"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Додирните да бисте онемогућили отклањање грешака са USB-а."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Извештај о грешци се генерише…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Желите ли да поделите извештај о грешци?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Дели се извештај о грешци…"</string>
@@ -1109,9 +1150,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Нови уређај <xliff:g id="NAME">%s</xliff:g> је откривен"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"За пренос слика и медија"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Уређај <xliff:g id="NAME">%s</xliff:g> је оштећен"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Уређај <xliff:g id="NAME">%s</xliff:g> је оштећен. Додирните да бисте га поправили."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Уређај <xliff:g id="NAME">%s</xliff:g> није подржан"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Овај уређај не подржава уређај <xliff:g id="NAME">%s</xliff:g>. Додирните да бисте подесили подржани формат."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Уређај <xliff:g id="NAME">%s</xliff:g> је неочекивано уклоњен"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Искључите уређај <xliff:g id="NAME">%s</xliff:g> пре уклањања да не бисте изгубили податке"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Уређај <xliff:g id="NAME">%s</xliff:g> је уклоњен"</string>
@@ -1147,7 +1190,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Дозвољава апликацији да чита сесије инсталирања. То јој дозвољава да види детаље о активним инсталацијама пакета."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"захтевање пакета за инсталирање"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Омогућава да апликација захтева инсталацију пакета."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Додирните двапут да бисте контролисали зум"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Додирните двапут за контролу зумирања"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Није могуће додати виџет."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Иди"</string>
<string name="ime_action_search" msgid="658110271822807811">"Претражи"</string>
@@ -1178,20 +1221,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Услуга рангирања обавештења"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN је активиран"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Апликација <xliff:g id="APP">%s</xliff:g> је активирала VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Додирните да бисте управљали мрежом."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Повезано са сесијом <xliff:g id="SESSION">%s</xliff:g>. Додирните да бисте управљали мрежом."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Додирните да бисте управљали мрежом."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Повезано са сесијом <xliff:g id="SESSION">%s</xliff:g>. Додирните да бисте управљали мрежом."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Повезивање стално укљученог VPN-а..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Стално укључени VPN је повезан"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Грешка стално укљученог VPN-а"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Додирните да бисте конфигурисали"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Одабери датотеку"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Није изабрана ниједна датотека"</string>
<string name="reset" msgid="2448168080964209908">"Поново постави"</string>
<string name="submit" msgid="1602335572089911941">"Пошаљи"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Режим рада у аутомобилу је омогућен"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Додирните да бисте изашли из режима рада у аутомобилу."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Активно повезивање са интернетом преко мобилног уређаја или хотспот"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Додирните да бисте подесили."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Прескочи"</string>
@@ -1225,7 +1271,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Додај налог"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Повећавање"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Смањивање"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> додирните и задржите."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Превуците нагоре да бисте повећали, а надоле да бисте смањили."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Повећавање минута"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Смањивање минута"</string>
@@ -1269,7 +1316,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB меморија"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Измени"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Упозорење о потрошњи података"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Додирните за преглед кор. и под."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Нема више 2G-3G података"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Нема више 4G података"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Нема више података за мобилне"</string>
@@ -1281,7 +1329,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Прекорачење преноса Wi-Fi подат."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> преко наведеног ограничења."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Позадински подаци су ограничени"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Додирните да бисте уклонили ограничење."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Безбедносни сертификат"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Овај сертификат је важећи."</string>
<string name="issued_to" msgid="454239480274921032">"Издато за:"</string>
@@ -1498,8 +1547,10 @@
<string name="select_year" msgid="7952052866994196170">"Изаберите годину"</string>
<string name="deleted_key" msgid="7659477886625566590">"Избрисали сте <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> на послу"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Да бисте откачили овај екран, додирните и задржите Назад."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Да бисте откачили овај екран, додирните и задржите Преглед."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Апликација је закачена: откачињање није дозвољено на овом уређају."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екран је закачен"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екран је откачен"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 9237270..b05264a 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Hämta fönsterinnehåll"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Granska innehållet i ett fönster som du interagerar med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivera Explore by Touch"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Objekt som användaren rör vid läses upp högt och skärmen kan utforskas med hjälp av rörelser."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktivera förbättrad webbtillgänglighet"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skript kan installeras för att göra appens innehåll tillgängligare."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observera text som du skriver"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ange PUK-koden och en ny PIN-kod"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kod"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny PIN-kod"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Tryck om du vill ange lösenord"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ange lösenord för att låsa upp"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ange PIN-kod för att låsa upp"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Fel PIN-kod."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 timme</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"nu"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> tim.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> tim.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> år</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> min</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> min</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> tim.</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> tim.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> d</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">om <xliff:g id="COUNT_1">%d</xliff:g> år</item>
+ <item quantity="one">om <xliff:g id="COUNT_0">%d</xliff:g> år</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Videoproblem"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Videon kan tyvärr inte spelas upp i den här enheten."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Det går inte att spela upp videon."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Det kan hända att vissa systemfunktioner inte fungerar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Det finns inte tillräckligt med utrymme för systemet. Kontrollera att du har ett lagringsutrymme på minst 250 MB och starta om."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> körs"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Tryck om du vill veta mer eller stoppa appen."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Avbryt"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Appar startas."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Uppgraderingen är klar."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> körs"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Tryck om du vill byta till appen"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vill du byta app?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"En annan app som körs måste avslutas innan du kan starta en ny."</string>
<string name="old_app_action" msgid="493129172238566282">"Gå tillbaka till <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Starta <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Avbryt den gamla appen utan att spara."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Minnesgränsen har överskridits för <xliff:g id="PROC">%1$s</xliff:g>"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"En minnesdump har skapats – tryck här om du vill dela den"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Vill du dela minnesdumpen?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Minnesgränsen på <xliff:g id="SIZE">%2$s</xliff:g> har överskridits för processen <xliff:g id="PROC">%1$s</xliff:g>. En dump av minnesheapen har skapats så att du kan dela den med utvecklaren. Var försiktig: minnesdumpen kan innehålla personliga uppgifter som appen har åtkomst till."</string>
<string name="sendText" msgid="5209874571959469142">"Välj en åtgärd för text"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-nätverket är inte anslutet till internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Visa alternativ genom att trycka"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Det gick inte att ansluta till Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" har en dålig Internetanslutning."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Tillåt anslutning?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Starta direkt Wi-Fi-användning. Detta inaktiverar Wi-Fi-användning med klient/trådlös surfzon."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Det gick inte att starta Wi-Fi direkt."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct är aktiverat"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Tryck om du vill visa inställningar"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Godkänn"</string>
<string name="decline" msgid="2112225451706137894">"Avvisa"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Inbjudan har skickats"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB för överföring av foton"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB för MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ansluten till ett USB-tillbehör"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Visa fler alternativ genom att trycka."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-felsökning ansluten"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Tryck om du vill inaktivera USB-felsökning."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Felrapporten överförs …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vill du dela felrapporten?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Felrapporten delas …"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nytt <xliff:g id="NAME">%s</xliff:g> har hittats"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"För överföring av foton och media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> har skadats"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> har skadats. Åtgärda genom att trycka."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> stöds inte"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Enheten har inte stöd för <xliff:g id="NAME">%s</xliff:g>. Tryck om du vill konfigurera i ett format som stöds."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> togs bort oväntat"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Montera bort <xliff:g id="NAME">%s</xliff:g> före borttagningen för att undvika dataförlust"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Ditt <xliff:g id="NAME">%s</xliff:g> har tagits bort"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Tillåt appen att läsa installationssessioner. Det ger den tillgång till uppgifter om aktiva paketinstallationer."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"begära installationspaket"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Tillåter att en app begär paketinstallation."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Tryck två gånger för zoomkontroll"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Peka två gånger för zoomkontroll"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Det gick inte att lägga till widgeten."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Kör"</string>
<string name="ime_action_search" msgid="658110271822807811">"Sök"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Rankningstjänst för aviseringar"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN är aktiverat"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN aktiveras av <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Tryck om du vill hantera nätverket."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Ansluten till <xliff:g id="SESSION">%s</xliff:g>. Knacka lätt om du vill hantera nätverket."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Knacka lätt för att hantera nätverket."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Ansluten till <xliff:g id="SESSION">%s</xliff:g>. Knacka lätt för att hantera nätverket."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Ansluter till Always-on VPN ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Ansluten till Always-on VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Fel på Always-on VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Tryck om du vill konfigurera"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Välj fil"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ingen fil har valts"</string>
<string name="reset" msgid="2448168080964209908">"Återställ"</string>
<string name="submit" msgid="1602335572089911941">"Skicka"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Billäge aktiverat"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Tryck här om du vill avsluta billäget."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Internetdelning eller surfpunkt aktiverad"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Tryck om du vill konfigurera."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Tillbaka"</string>
<string name="next_button_label" msgid="1080555104677992408">"Nästa"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Hoppa över"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Lägg till konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Öka"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Minska"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> tryck länge."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Dra uppåt för att öka och nedåt för att minska."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Öka minuter"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minska minuter"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-lagring"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redigera"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Varning angående dataanvändning"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Visa användning och inställning"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Datagränsen för 2G-3G har uppnåtts"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Datagränsen för 4G har uppnåtts"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Datagränsen för mobilen har uppnåtts"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Gränsen för data via Wi-Fi har överskridits"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> över angiven gräns."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Bakgrundsdata är begränsade"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Tryck för att ta bort begränsning"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Säkerhetscertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certifikatet är giltigt."</string>
<string name="issued_to" msgid="454239480274921032">"Utfärdad till:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Välj år"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> har tagits bort"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> för arbetet"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Om du vill lossa skärmen trycker du länge på Tillbaka."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Om du vill lossa skämen trycker du länge på Översikt."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen är fäst. Att lossa den är inte tillåtet på den här enheten."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skärmen är fäst"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skärmen är inte längre fäst"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index f670455..8fc9d48 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -261,7 +261,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Rejesha maudhui ya dirisha"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Chunguza maudhui ya dirisha unaloingiliana nalo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Washa Chunguza kwa Mguso"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Vipengee vilivyoguswa vitatamkwa kwa sauti na skrini inaweza kuchunguzwa kwa kutumia ishara."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Washa ufikiaji wa wavuti ulioboreshwa"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Hati zinaweza kusakinishwa ili kuyafanya maudhui ya programu kufikiwa zaidi."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Angalia maandishi unayoyacharaza"</string>
@@ -660,7 +661,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ingiza PUK na msimbo mpya wa PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Msimbo wa PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Msimbo mpya wa PIN"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Gusa kuingiza nenosiri "</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Charaza nenosiri ili kufungua"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ingiza PIN ili kufungua"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Msimbo wa PIN usio sahihi."</string>
@@ -857,14 +859,38 @@
<item quantity="one">Saa 1</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"sasa"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other">Dak <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">Dak <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other">Saa <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">Saa <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other">Siku <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">Siku <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other">miaka <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">mwaka <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">kwa dak <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">kwa dak <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">kwa saa <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">kwa saa <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">kwa siku <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">kwa siku <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">kwa miaka <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">kwa maka <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Shida ya video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Video hii si halali kutiririshwa kwa kifaa hiki."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Haiwezi kucheza video hii."</string>
@@ -896,7 +922,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Baadhi ya vipengee vya mfumo huenda visifanye kazi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Hifadhi haitoshi kwa ajili ya mfumo. Hakikisha una MB 250 za nafasi ya hifadhi isiyotumika na uanzishe upya."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> inatumiwa"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Gusa ili upate maelezo zaidi au usitishe programu."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Sawa"</string>
<string name="cancel" msgid="6442560571259935130">"Ghairi"</string>
<string name="yes" msgid="5362982303337969312">"Sawa"</string>
@@ -970,7 +997,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Programu zinaanza"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Inamaliza kuwasha."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> inaendelea"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Gusa ili kubadilisha hadi programu"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Badilisha programu?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Programmu nyingine tayari inaendeshwa na lazima hiyo ikomeshwe kabla ya kuanza nyingine mpya."</string>
<string name="old_app_action" msgid="493129172238566282">"Rejea katika <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -978,7 +1006,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Anza <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Komesha programu ya zamani bila kuhifadhi."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> imezidi kiwango cha hifadhi kinachotakikana"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Picha ya hifadhi imepigwa; gusa ili uishiriki"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Ungependa kushiriki picha ya binafsi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Mchakato wa <xliff:g id="PROC">%1$s</xliff:g> umezidi kiwango kinachotakikana cha hifadhi cha <xliff:g id="SIZE">%2$s</xliff:g>. Unaweza kupata picha ya hifadhi ili uishiriki na msadini programu wa picha. Tahadhari: picha hii ya hifadhi inaweza kuwa na maelezo yako ya binafsi ambayo yanaweza kufikiwa na programu."</string>
<string name="sendText" msgid="5209874571959469142">"Chagua kitendo kwa ajili ya maandishi"</string>
@@ -1014,7 +1043,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi haina muunganisho wa intaneti"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Gusa upate chaguo"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Haikuweza kuunganisha kwa Mtandao-Hewa"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ina muunganisho duni wa Mtandao."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Ungepenga kuruhusu muunganisho?"</string>
@@ -1024,7 +1054,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Anzisha Wi-Fi Moja kwa Moja. Hii itazima mteja/mtandao-hewa wa Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Haikuweza kuanzisha Wi-Fi Moja kwa Moja."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ya Moja kwa Moja imewashwa"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Gusa kwa ajili ya mipangilio"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Kubali"</string>
<string name="decline" msgid="2112225451706137894">"Kataa"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Mwaliko umetumwa"</string>
@@ -1076,9 +1107,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB kwa ajili ya kuhamisha picha"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB kwa ajili ya MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Imeunganishwa kwa kifuasi cha USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Gusa kwa chaguo zaidi."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Utatuaji wa USB umeunganishwa"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Gusa ili uzime utatuaji wa USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Inatayarisha ripoti ya hitilafu…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Ungependa kushiriki ripoti ya hitilafu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Inashiriki ripoti ya hitilafu…"</string>
@@ -1098,9 +1131,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> mpya imegunduliwa"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Kwa ajili ya kuhamisha picha na maudhui"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> iliyoharibika"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> imeharibika. Gusa ili uirekebishe."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> isiyotumika"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Kifaa hiki hakitumii <xliff:g id="NAME">%s</xliff:g> hii. Gusa ili upange katika umbizo linalotumika."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> imeondolewa bila kutarajiwa"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ondoa <xliff:g id="NAME">%s</xliff:g> kabla ya kuchomoa ili kuepuka kupoteza data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> imeondolewa"</string>
@@ -1136,7 +1171,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Huruhusu programu kusoma vipindi vya kusanikisha. Hii huiruhusu kuona maelezo kuhusu usanikishaji wa programu unaoendelea."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"omba ruhusa ya kusakinisha vifurushi"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Huruhusu programu kuomba idhini ya kusakinisha vifurushi."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Gusa mara mbili kwa udhibiti cha kuza"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Gonga mara mbili kwa udhibiti wa kuza"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Haikuweza kuongeza wijeti."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Nenda"</string>
<string name="ime_action_search" msgid="658110271822807811">"Tafuta"</string>
@@ -1167,20 +1202,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Huduma ya kupanga arifa"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN imewezeshwa"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN imeamilishwa na <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Gusa ili kudhibiti mtandao."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Imeunganishwa kwa <xliff:g id="SESSION">%s</xliff:g>. Gusa ili kudhibiti mtandao."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Gonga ili kudhibiti mtandao."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Imeunganishwa kwa <xliff:g id="SESSION">%s</xliff:g>. Gonga ili kudhibiti mtandao"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Kila mara VPN iliyowashwa inaunganishwa…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Kila mara VPN iliyowashwa imeunganishwa"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Kila mara kuna hitilafu ya VPN iliyowashwa"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Gusa ili kusanidi"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Chagua faili"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Hakuna faili iliyochaguliwa"</string>
<string name="reset" msgid="2448168080964209908">"Weka upya"</string>
<string name="submit" msgid="1602335572089911941">"Wasilisha"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mtindo wa gari umewezeshwa"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Gusa ili kutoka katika modi ya gari."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Kushiriki au kusambaza intaneti kumewashwa"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Gusa ili kusanidi."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Nyuma"</string>
<string name="next_button_label" msgid="1080555104677992408">"Ifuatayo"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ruka"</string>
@@ -1213,7 +1251,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ongeza akaunti"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Ongeza"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Punguza"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> gusa na ushikilie."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Sogeza juu ili uongeze na chini ili upunguze."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Ongeza dakika"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Punguza dakika"</string>
@@ -1257,7 +1296,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Hifadhi ya USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Badilisha"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Onyo la matumizi ya data"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Gusa ili kuangalia matumizi na mipangilio."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Kikomo data ya 2G-3G kimefikiwa"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Kikomo cha data ya 4G kimefikiwa"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Kikomo data ya simu kimefikiwa"</string>
@@ -1269,7 +1309,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Taarifa za Wi-fi zimevuka kiwanga"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> juu ya kikomo kilichobainishwa."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data ya mandhari nyuma imezuiwa"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Gusa ili kuondoa kizuizi."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Cheti cha usalama"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Cheti hiki ni halali."</string>
<string name="issued_to" msgid="454239480274921032">"Kimetolewa kwa:"</string>
@@ -1485,8 +1526,10 @@
<string name="select_year" msgid="7952052866994196170">"Chagua mwaka"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> kimefutwa"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Ya kazini <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Ili kubandua skrini hii, gusa na ushikilie kitufe cha Nyuma."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Ili ubanue skrini hii, gusa na ushikilie Muhtasari."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Programu imebanwa: Kubanuliwa hakuruhusiwi kwenye kifaa hiki."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skrini imebandikwa"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skrini imebanduliwa"</string>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index e1867ce..b8cc878 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"தொட்ட உருப்படிகள் சத்தமாகப் பேசும் மற்றும் சைகைகளைப் பயன்படுத்தி திரையை ஆராயலாம்."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"மேம்பட்ட இணைய அணுகல்தன்மையை இயக்கும்"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"பயன்பாட்டு உள்ளடக்கத்தை மேலும் எளிதாக அணுகக்கூடியதாக்க ஸ்கிரிப்ட்கள் நிறுவப்படலாம்."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"நீங்கள் தட்டச்சு செய்யும் உரையைக் கவனிக்கும்"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK மற்றும் புதிய பின் குறியீட்டை உள்ளிடவும்"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK குறியீடு"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"புதிய பின் குறியீடு"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"கடவுச்சொல்லை உள்ளிட, தொடவும்"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"திறக்க, கடவுச்சொல்லை உள்ளிடவும்"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"திறக்க, பின்னை உள்ளிடவும்"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"தவறான பின் குறியீடு."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 மணிநேரம்</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"இப்போது"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>நி</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>நி</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ம</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ம</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>நா</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>நா</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ஆ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ஆ</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> நிமிடங்களில்</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> நிமிடத்தில்</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> மணிநேரத்தில்</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> மணிநேரத்தில்</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> நாட்களில்</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> நாளில்</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ஆண்டுகளில்</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ஆண்டில்</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"வீடியோவில் சிக்கல்"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"சாதனத்தில் ஸ்ட்ரீம் செய்வதற்கு இது சரியான வீடியோ அல்ல."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"இந்த வீடியோவை இயக்க முடியவில்லை."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"சில அமைப்பு செயல்பாடுகள் வேலை செய்யாமல் போகலாம்"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"முறைமையில் போதுமான சேமிப்பகம் இல்லை. 250மெ.பை. அளவு காலி இடவசதி இருப்பதை உறுதிசெய்து மீண்டும் தொடங்கவும்."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> இயக்குகிறது"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"மேலும் தகவலுக்கு அல்லது பயன்பாட்டை நிறுத்துவதற்கு, தொடவும்."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"சரி"</string>
<string name="cancel" msgid="6442560571259935130">"ரத்துசெய்"</string>
<string name="yes" msgid="5362982303337969312">"சரி"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"பயன்பாடுகள் தொடங்கப்படுகின்றன."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"துவக்குதலை முடிக்கிறது."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> இயங்குகிறது"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"பயன்பாட்டிற்கு மாற தொடவும்"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"பயன்பாடுகளை மாற்றவா?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ஏற்கனவே ஒரு பயன்பாடு இயக்கத்தில் உள்ளது, புதிய ஒன்றைத் தொடங்கும்போது முன்பு இதை நிறுத்த வேண்டும்."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> க்குத் திரும்பு"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ஐத் தொடங்கு"</string>
<string name="new_app_description" msgid="1932143598371537340">"சேமிக்காமல், பழைய பயன்பாட்டை நிறுத்தவும்."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"நினைவக வரம்பை <xliff:g id="PROC">%1$s</xliff:g> மீறியது"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"ஹீப் டம்ப் சேகரிக்கப்பட்டது; பகிர, தொடவும்"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ஹீப் டம்பைப் பகிரவா?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="SIZE">%2$s</xliff:g> அளவான தனது செயலாக்க நினைவக வரம்பை <xliff:g id="PROC">%1$s</xliff:g> செயலாக்கம் மீறியது. உங்களுக்கான ஹீப் டம்பினை அதன் டெவெலப்பருடன் பகிரலாம். கவனம்: பயன்பாடு அணுகும் விதத்தில், உங்களைப் பற்றிய எந்தத் தனிப்பட்ட தகவலும் இந்த ஹீப் டம்பில் இருக்கலாம் என்பதை நினைவில்கொள்ளவும்."</string>
<string name="sendText" msgid="5209874571959469142">"உரைக்கான செயலைத் தேர்வுசெய்யவும்"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"வைஃபை இணைய அணுகல் கொண்டிருக்கவில்லை"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"விருப்பங்களுக்குத் தொடவும்"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"வைஃபை உடன் இணைக்க முடியவில்லை"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" இணைய இணைப்பு மோசமாக உள்ளது."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"இணைப்பை அனுமதிக்கவா?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"வைஃபை Direct ஐத் தொடங்குக. இது வைஃபை க்ளையண்ட்/ஹாட்ஸ்பாட்டை முடக்கும்."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"வைஃபை Direct ஐத் தொடங்க முடியவில்லை."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"வைஃபை Direct இயக்கத்தில் உள்ளது"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"அமைப்புகளுக்குத் தொடவும்"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ஏற்கிறேன்"</string>
<string name="decline" msgid="2112225451706137894">"நிராகரி"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"அழைப்பு அனுப்பப்பட்டது"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB, படப் பரிமாற்றத்துக்கு மட்டும்"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB, MIDIக்கு மட்டும்"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB துணைக்கருவியுடன் இணைக்கப்பட்டுள்ளது"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"கூடுதல் விருப்பங்களுக்காகத் தொடவும்."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB பிழைதிருத்தம் இணைக்கப்பட்டது"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB பிழைத்திருத்தத்தை முடக்க, தொடவும்."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"பிழை அறிக்கையை எடுக்கிறது…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"பிழை அறிக்கையைப் பகிரவா?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"பிழை அறிக்கையைப் பகிர்கிறது…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"புதிய <xliff:g id="NAME">%s</xliff:g> கண்டறியப்பட்டது"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"படங்களையும் மீடியாவையும் மாற்றலாம்"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> சிதைந்துள்ளது"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> சிதைந்துள்ளது. சரிசெய்ய, தொடவும்."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ஆதரிக்கப்படாத <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"சாதனம் <xliff:g id="NAME">%s</xliff:g>ஐ ஆதரிக்கவில்லை. ஆதரிக்கப்படும் வடிவமைப்பில் அமைக்க, தொடவும்."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> அகற்றப்பட்டது"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"தரவு இழப்பைத் தவிர்க்க, <xliff:g id="NAME">%s</xliff:g>ஐ அகற்றுவதற்கு முன் இணைப்பு நீக்கவும்"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> அகற்றப்பட்டது"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"நிறுவல் அமர்வுகளைப் படிக்க, பயன்பாட்டை அனுமதிக்கிறது. இது செயல்படும் தொகுப்பு நிறுவல்களைப் பற்றிய விவரங்களைப் பார்க்க அனுமதிக்கிறது."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"நிறுவல் தொகுப்புகளைக் கோருதல்"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"தொகுப்புகளின் நிறுவலைக் கோர, பயன்பாட்டை அனுமதிக்கும்."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"அளவை மாற்றும் கட்டுப்பாடுகளுக்கு இருமுறை தொடவும்"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"விட்ஜெட்டைச் சேர்க்க முடியவில்லை."</string>
<string name="ime_action_go" msgid="8320845651737369027">"செல்"</string>
<string name="ime_action_search" msgid="658110271822807811">"தேடு"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"அறிவிப்பை மதிப்பீடு செய்யும் சேவை"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN செயல்படுத்தப்பட்டது"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> ஆல் VPN செயல்படுத்தப்பட்டது"</string>
- <string name="vpn_text" msgid="3011306607126450322">"நெட்வொர்க்கை நிர்வகிக்கத் தொடவும்."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> இல் இணைக்கப்பட்டது. நெட்வொர்க்கை நிர்வகிக்கத் தொடவும்."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"எப்போதும் இயங்கும் VPN உடன் இணைக்கிறது…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"எப்போதும் இயங்கும் VPN இணைக்கப்பட்டது"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"எப்போதும் இயங்கும் VPN பிழை"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"உள்ளமைக்கத் தொடுக"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"கோப்பைத் தேர்வுசெய்"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"எந்தக் கோப்பும் தேர்வுசெய்யப்படவில்லை"</string>
<string name="reset" msgid="2448168080964209908">"மீட்டமை"</string>
<string name="submit" msgid="1602335572089911941">"சமர்ப்பி"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"கார் பயன்முறை இயக்கப்பட்டது"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"கார் பயன்முறையிலிருந்து வெளியேற தொடவும்."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"டெதெரிங்/ஹாட்ஸ்பாட் இயங்குகிறது"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"அமைக்க, தொடவும்."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"முந்தையது"</string>
<string name="next_button_label" msgid="1080555104677992408">"அடுத்து"</string>
<string name="skip_button_label" msgid="1275362299471631819">"தவிர்"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"கணக்கைச் சேர்"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"அதிகரி"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"குறை"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> தொட்டு, பிடிக்கவும்."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"அதிகரிப்பதற்கு மேலாகவும், குறைப்பதற்குக் கீழாகவும் இழுக்கவும்."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"நிமிடத்தை அதிகரி"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"நிமிடத்தைக் குறை"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB சேமிப்பிடம்"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"திருத்து"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"தரவு பயன்பாட்டு எச்சரிக்கை"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"பயன்பாட்டின் அளவு, அமைப்புகளைத் பார்க்க தொடவும்."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G தரவு வரம்பைக் கடந்தது"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G தரவு வரம்பைக் கடந்தது"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"செல்லுலார் தரவு வரம்பைக் கடந்தது"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"வைஃபை தரவு வரம்பு கடந்தது"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"குறிப்பிட்ட வரம்பைவிட <xliff:g id="SIZE">%s</xliff:g> கூடுதல்."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"பின்புல வரம்பு வரையறுக்கப்பட்டது"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"வரையறையை அகற்ற தொடவும்."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"பாதுகாப்பு சான்றிதழ்"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"இந்தச் சான்றிதழ் சரியானது."</string>
<string name="issued_to" msgid="454239480274921032">"இதற்கு வழங்கப்பட்டது:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"ஆண்டைத் தேர்ந்தெடுக்கவும்"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> நீக்கப்பட்டது"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"பணியிடம் <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"இந்தத் திரையை விலக்க, முந்தையது எனும் பொத்தானைத் தொட்டுப் பிடிக்கவும்."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"இந்தத் திரையை விலக்க, மேலோட்டப் பார்வையைத் தொட்டுப் பிடித்திருக்கவும்."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"பயன்பாடு பொருத்தப்பட்டது: பொருத்தியதை நீக்குவதற்கு இந்தச் சாதனத்தில் அனுமதியில்லை."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"திரை பின் செய்யப்பட்டது"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"திரையின் பின் அகற்றப்பட்டது"</string>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index 8375209..68e4275 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"తాకిన అంశాలు బిగ్గరగా చదివి వినిపించబడతాయి మరియు సంజ్ఞలను ఉపయోగించి స్క్రీన్ను విశ్లేషించవచ్చు."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"మెరుగైన వెబ్ ప్రాప్యతను ప్రారంభిస్తుంది"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"అనువర్తన కంటెంట్కు మరింత సులభ ప్రాప్యత సౌలభ్యం అందించడానికి స్క్రిప్ట్లు ఇన్స్టాల్ చేయబడవచ్చు."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"మీరు టైప్ చేస్తున్న వచనాన్ని పరిశీలిస్తుంది"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK మరియు కొత్త పిన్ కోడ్ను టైప్ చేయండి"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK కోడ్"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"కొత్త పిన్ కోడ్"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"పాస్వర్డ్ను టైప్ చేయడానికి తాకండి"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"అన్లాక్ చేయడానికి పాస్వర్డ్ను టైప్ చేయండి"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"అన్లాక్ చేయడానికి పిన్ను టైప్ చేయండి"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"చెల్లని పిన్ కోడ్."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 గంట</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ఇప్పుడు"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ని.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ని.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> గం.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> గం.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> రో.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> రో.</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> సం.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> సం.</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ని.లో</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ని.లో</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> గం.లో</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> గం.లో</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> రో.లో</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> రో.లో</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> సం.లో</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> సం.లో</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"వీడియో సమస్య"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ఈ పరికరంలో ప్రసారం చేయడానికి ఈ వీడియో చెల్లదు."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ఈ వీడియోను ప్లే చేయడం సాధ్యపడదు."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"కొన్ని సిస్టమ్ కార్యాచరణలు పని చేయకపోవచ్చు"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"సిస్టమ్ కోసం తగినంత నిల్వ లేదు. మీకు 250MB ఖాళీ స్థలం ఉందని నిర్ధారించుకుని, పునఃప్రారంభించండి."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> అమలులో ఉంది"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"మరింత సమాచారం కోసం లేదా అనువర్తనాన్ని ఆపివేయడం కోసం తాకండి."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"సరే"</string>
<string name="cancel" msgid="6442560571259935130">"రద్దు చేయండి"</string>
<string name="yes" msgid="5362982303337969312">"సరే"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"అనువర్తనాలను ప్రారంభిస్తోంది."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"బూట్ను ముగిస్తోంది."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> అమలవుతోంది"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"అనువర్తనాన్ని మార్చడానికి తాకండి"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"అనువర్తనాలను మార్చాలా?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"మరో అనువర్తనం ఇప్పటికే అమలవుతోంది, మీరు మరోదాన్ని ప్రారంభించడానికి ముందు అది తప్పనిసరిగా ఆపివేయబడాలి."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>కు తిరిగి వెళ్లండి"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>ని ప్రారంభించండి"</string>
<string name="new_app_description" msgid="1932143598371537340">"పాత అనువర్తనాన్ని సేవ్ చేయకుండానే ఆపివేయండి."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> మెమరీ పరిమితిని మించిపోయింది"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"హీప్ డంప్ సేకరించబడింది; భాగస్వామ్యం చేయడానికి తాకండి"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"హీప్ డంప్ను భాగస్వామ్యం చేయాలా?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> ప్రాసెస్ దాని <xliff:g id="SIZE">%2$s</xliff:g> ప్రాసెస్ మెమరీ పరిమితిని మించిపోయింది. మీకు దాని డెవలపర్తో భాగస్వామ్యం చేయడానికి హీప్ డంప్ అందుబాటులో ఉంది. జాగ్రత్తగా ఉండండి: ఈ హీప్ డంప్లో అనువర్తనం ప్రాప్యత కలిగి ఉన్న మీ వ్యక్తిగత సమాచారం ఏదైనా ఉండవచ్చు."</string>
<string name="sendText" msgid="5209874571959469142">"వచనం కోసం చర్యను ఎంచుకోండి"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fiకి ఇంటర్నెట్ ప్రాప్యత లేదు"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"ఎంపికల కోసం తాకండి"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fiకి కనెక్ట్ చేయడం సాధ్యపడలేదు"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" బలహీన ఇంటర్నెట్ కనెక్షన్ను కలిగి ఉంది."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"కనెక్షన్ని అనుమతించాలా?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Directను ప్రారంభించండి. దీని వలన Wi-Fi క్లయింట్/హాట్స్పాట్ ఆపివేయబడుతుంది."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Directను ప్రారంభించడం సాధ్యపడలేదు."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ఆన్లో ఉంది"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"సెట్టింగ్ల కోసం తాకండి"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ఆమోదిస్తున్నాను"</string>
<string name="decline" msgid="2112225451706137894">"తిరస్కరిస్తున్నాను"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ఆహ్వానం పంపబడింది"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ఫోటో బదిలీ కోసం USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI కోసం USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ఉపకరణానికి కనెక్ట్ చేయబడింది"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"మరిన్ని ఎంపికల కోసం తాకండి."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB డీబగ్గింగ్ను నిలిపివేయడానికి తాకండి."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"బగ్ నివేదికను తీస్తోంది…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"బగ్ నివేదికను భాగస్వామ్యం చేయాలా?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"బగ్ నివేదికను భాగస్వామ్యం చేస్తోంది..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"కొత్త <xliff:g id="NAME">%s</xliff:g> గుర్తించబడింది"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ఫోటోలు మరియు మీడియాను బదిలీ చేయడానికి"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> పాడైంది"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> పాడైంది. సరి చేయడానికి తాకండి."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g>కి మద్దతు లేదు"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"ఈ పరికరంలో ఈ <xliff:g id="NAME">%s</xliff:g>కి మద్దతు లేదు. మద్దతు ఉన్న ఆకృతిలో సెటప్ చేయడానికి తాకండి."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ఊహించని విధంగా తీసివేయబడింది"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"డేటా కోల్పోకుండా ఉండటానికి <xliff:g id="NAME">%s</xliff:g>ని తీసివేయడానికి ముందు అన్మౌంట్ చేయండి"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> తీసివేయబడింది"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ఇన్స్టాల్ సెషన్లను చదవడానికి అనువర్తనాన్ని అనుమతిస్తుంది. ఇది సక్రియ ప్యాకేజీ ఇన్స్టాలేషన్ల గురించి వివరాలను చూడటానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"ఇన్స్టాల్ ప్యాకేజీలను అభ్యర్థించడం"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ప్యాకేజీల ఇన్స్టాలేషన్ అభ్యర్థించడానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"జూమ్ నియంత్రణ కోసం రెండుసార్లు తాకండి"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"విడ్జెట్ను జోడించడం సాధ్యపడలేదు."</string>
<string name="ime_action_go" msgid="8320845651737369027">"వెళ్లు"</string>
<string name="ime_action_search" msgid="658110271822807811">"శోధించు"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"నోటిఫికేషన్ ర్యాంకర్ సేవ"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN సక్రియం చేయబడింది"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> ద్వారా VPN సక్రియం చేయబడింది"</string>
- <string name="vpn_text" msgid="3011306607126450322">"నెట్వర్క్ను నిర్వహించడానికి తాకండి."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>కు కనెక్ట్ చేయబడింది. నెట్వర్క్ను నిర్వహించడానికి తాకండి."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ఎల్లప్పుడూ-ఆన్లో ఉండే VPN కనెక్ట్ చేయబడుతోంది…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ఎల్లప్పుడూ-ఆన్లో ఉండే VPN కనెక్ట్ చేయబడింది"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ఎల్లప్పుడూ-ఆన్లో ఉండే VPN లోపం"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"కాన్ఫిగర్ చేయడానికి తాకండి"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"ఫైల్ను ఎంచుకోండి"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ఫైల్ ఎంచుకోబడలేదు"</string>
<string name="reset" msgid="2448168080964209908">"రీసెట్ చేయి"</string>
<string name="submit" msgid="1602335572089911941">"సమర్పించు"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"కారు మోడ్ ప్రారంభించబడింది"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"కారు మోడ్ నుండి నిష్క్రమించడానికి తాకండి."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"టీథర్ చేయబడినది లేదా హాట్స్పాట్ సక్రియంగా ఉండేది"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"సెటప్ చేయడానికి తాకండి."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"వెనుకకు"</string>
<string name="next_button_label" msgid="1080555104677992408">"తదుపరి"</string>
<string name="skip_button_label" msgid="1275362299471631819">"దాటవేయి"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ఖాతాను జోడించండి"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"పెంచు"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"తగ్గించు"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g>ని నొక్కి ఉంచండి."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"పెంచడానికి పైకి మరియు తగ్గించడానికి క్రిందికి స్లైడ్ చేయండి."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"నిమిషాన్ని పెంచు"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"నిమిషాన్ని తగ్గించు"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB నిల్వ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"సవరించు"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"డేటా వినియోగం హెచ్చరిక"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"వినియోగం మరియు సెట్టింగ్లను వీక్షించడానికి తాకండి."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G డేటా పరిమితిని చేరుకుంది"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G డేటా పరిమితిని చేరుకుంది"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"సెల్యులార్ డేటా పరిమి. చేరుకుంది"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi డేటా పరిమితి మించిపోయింది"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"పేర్కొన్న పరిమితి కంటే <xliff:g id="SIZE">%s</xliff:g> మించిపోయింది."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"నేపథ్య డేటా పరిమితం చేయబడింది"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"పరిమితిని తీసివేయడానికి తాకండి."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"భద్రతా ప్రమాణపత్రం"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ఈ ప్రమాణపత్రం చెల్లుబాటు అవుతుంది."</string>
<string name="issued_to" msgid="454239480274921032">"దీనికి జారీ చేయబడింది:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"సంవత్సరాన్ని ఎంచుకోండి"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> తొలగించబడింది"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"కార్యాలయం <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"ఈ స్క్రీన్ని అన్పిన్ చేయడానికి, వెనుకకు తాకి అలాగే నొక్కి ఉంచండి."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"ఈ స్క్రీన్ని అన్పిన్ చేయడానికి, అవలోకనం నొక్కి, ఉంచండి."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"అనువర్తనం పిన్ చేయబడింది: ఈ పరికరంలో అన్పిన్ చేయడానికి అనుమతి లేదు."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"స్క్రీన్ పిన్ చేయబడింది"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"స్క్రీన్ అన్పిన్ చేయబడింది"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index b277845..48147c6 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"รายการที่แตะจะถูกพูดออกเสียง และการสำรวจหน้าจอสามารถทำได้ด้วยท่าทางสัมผัส"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"เปิดการเข้าถึงเว็บที่มีประสิทธิภาพมากขึ้น"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"อาจติดตั้งสคริปต์เพื่อทำให้สามารถเข้าถึงเนื้อหาแอปได้ง่ายขึ้น"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"สังเกตข้อความที่คุณพิมพ์"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"พิมพ์ PUK และรหัส PIN ใหม่"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"รหัส PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"รหัส PIN ใหม่"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"แตะเพื่อพิมพ์รหัสผ่าน"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"พิมพ์รหัสผ่านเพื่อปลดล็อก"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"พิมพ์ PIN เพื่อปลดล็อก"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"รหัส PIN ไม่ถูกต้อง"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 ชั่วโมง</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ขณะนี้"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> นาที</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> นาที</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ชม.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ชม.</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> วัน</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> วัน</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ปี</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ปี</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">ใน <xliff:g id="COUNT_1">%d</xliff:g> นาที</item>
+ <item quantity="one">ใน <xliff:g id="COUNT_0">%d</xliff:g> นาที</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">ใน <xliff:g id="COUNT_1">%d</xliff:g> ชม.</item>
+ <item quantity="one">ใน <xliff:g id="COUNT_0">%d</xliff:g> ชม.</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">ใน <xliff:g id="COUNT_1">%d</xliff:g> วัน</item>
+ <item quantity="one">ใน <xliff:g id="COUNT_0">%d</xliff:g> วัน</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">ใน <xliff:g id="COUNT_1">%d</xliff:g> ปี</item>
+ <item quantity="one">ใน <xliff:g id="COUNT_0">%d</xliff:g> ปี</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ปัญหาเกี่ยวกับวิดีโอ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"วิดีโอนี้ไม่สามารถสตรีมไปยังอุปกรณ์นี้"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ไม่สามารถเล่นวิดีโอนี้"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"บางฟังก์ชันระบบอาจไม่ทำงาน"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"พื้นที่เก็บข้อมูลไม่เพียงพอสำหรับระบบ โปรดตรวจสอบว่าคุณมีพื้นที่ว่าง 250 MB แล้วรีสตาร์ท"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> กำลังทำงาน"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"แตะเพื่อดูข้อมูลเพิ่มเติมหรือเพื่อหยุดแอป"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ตกลง"</string>
<string name="cancel" msgid="6442560571259935130">"ยกเลิก"</string>
<string name="yes" msgid="5362982303337969312">"ตกลง"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"กำลังเริ่มต้นแอปพลิเคชัน"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"เสร็จสิ้นการบูต"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> กำลังทำงาน"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"แตะเพื่อสลับไปยังแอปพลิเคชัน"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"สลับแอปพลิเคชันหรือไม่"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"มีแอปพลิเคชันอื่นที่กำลังทำงานอยู่แล้ว ซึ่งต้องหยุดทำงานก่อนที่คุณจะเริ่มแอปพลิเคชันใหม่ได้"</string>
<string name="old_app_action" msgid="493129172238566282">"กลับสู่ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"เริ่มต้น <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"หยุดการทำงานของแอปพลิเคชันเก่าโดยไม่บันทึก"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> เกินขีดจำกัดของหน่วยความจำ"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"รวบรวมฮีพดัมพ์แล้ว แตะเพื่อแชร์"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"แชร์ฮีพดัมพ์ไหม"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"กระบวนการ <xliff:g id="PROC">%1$s</xliff:g> มีขนาดเกิน <xliff:g id="SIZE">%2$s</xliff:g> ซึ่งเป็นขีดจำกัดของหน่วยความจำกระบวนการแล้ว ฮีพดัมพ์จะพร้อมให้คุณแชร์กับนักพัฒนาซอฟต์แวร์ โปรดระวัง ฮีพดัมพ์นี้สามารถเก็บข้อมูลส่วนบุคคลที่แอปพลิเคชันมีสิทธิ์เข้าถึงได้"</string>
<string name="sendText" msgid="5209874571959469142">"เลือกการทำงานกับข้อความ"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ไม่สามารถเข้าถึงอินเทอร์เน็ต"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"แตะเพื่อดูตัวเลือก"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ไม่สามารถเชื่อมต่อ WiFi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" มีสัญญาณอินเทอร์เน็ตไม่ดี"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"อนุญาตการเชื่อมต่อใช่ไหม"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"เริ่มการทำงาน WiFi Direct ซึ่งจะเป็นการปิดการทำงาน WiFi ไคลเอ็นต์/ฮอตสปอต"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ไม่สามารถเริ่ม WiFi Direct ได้"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"เปิด WiFi Direct อยู่"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"แตะเพื่อตั้งค่า"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"ยอมรับ"</string>
<string name="decline" msgid="2112225451706137894">"ปฏิเสธ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ส่งข้อความเชิญแล้ว"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB สำหรับการโอนรูปภาพ"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB สำหรับ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"เชื่อมต่อกับอุปกรณ์เสริม USB แล้ว"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"แตะเพื่อดูตัวเลือกเพิ่มเติม"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"เชื่อมต่อการแก้ไขข้อบกพร่อง USB แล้ว"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"แตะเพื่อปิดใช้งานการแก้ไขข้อบกพร่อง USB"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"กำลังสร้างรายงานข้อบกพร่อง…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"แชร์รายงานข้อบกพร่องไหม"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"กำลังแชร์รายงานข้อบกพร่อง…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ตรวจพบ <xliff:g id="NAME">%s</xliff:g> ใหม่"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"สำหรับการโอนรูปภาพและสื่อ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> เสียหาย"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> ได้รับความเสียหาย แตะเพื่อแก้ไข"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ไม่สนับสนุน <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"อุปกรณ์นี้ไม่สนับสนุน <xliff:g id="NAME">%s</xliff:g> นี้ แตะเพื่อตั้งค่าในรูปแบบที่สนับสนุน"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ถูกนำออกไปโดยไม่คาดคิด"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ยกเลิกการต่อเชื่อม <xliff:g id="NAME">%s</xliff:g> ก่อนนำออกเพื่อหลีกเลี่ยงข้อมูลสูญหาย"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"นำ <xliff:g id="NAME">%s</xliff:g> ออกแล้ว"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"อนุญาตให้แอปพลิเคชันอ่านเซสชันการติดตั้ง ซึ่งจะอนุญาตให้อ่านรายละเอียดเกี่ยวกับการติดตั้งแพ็กเกจที่ใช้งาน"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"ขอติดตั้งแพ็กเกจ"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"อนุญาตให้แอปพลิเคชันขอการติดตั้งแพ็กเกจ"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"แตะสองครั้งเพื่อควบคุมการซูม"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"แตะสองครั้งเพื่อควบคุมการซูม"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ไม่สามารถเพิ่มวิดเจ็ต"</string>
<string name="ime_action_go" msgid="8320845651737369027">"ไป"</string>
<string name="ime_action_search" msgid="658110271822807811">"ค้นหา"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"บริการตัวจัดอันดับการแจ้งเตือน"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN เปิดใช้งานแล้ว"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"เปิดใช้งาน VPN โดย <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"แตะเพื่อจัดการเครือข่าย"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"เชื่อมต่อกับ <xliff:g id="SESSION">%s</xliff:g> แตะเพื่อจัดการเครือข่าย"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"แตะเพื่อจัดการเครือข่าย"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"เชื่อมต่อกับ <xliff:g id="SESSION">%s</xliff:g> แตะเพื่อจัดการเครือข่าย"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"กำลังเชื่อมต่อ VPN แบบเปิดตลอดเวลา…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"เชื่อมต่อ VPN แบบเปิดตลอดเวลาแล้ว"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ข้อผิดพลาดของ VPN แบบเปิดตลอดเวลา"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"แตะเพื่อกำหนดค่า"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"เลือกไฟล์"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ไม่ได้เลือกไฟล์ไว้"</string>
<string name="reset" msgid="2448168080964209908">"รีเซ็ต"</string>
<string name="submit" msgid="1602335572089911941">"ส่ง"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"เปิดการใช้งานโหมดรถยนต์"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"แตะเพื่อออกจากโหมดรถยนต์"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"การปล่อยสัญญาณหรือฮอตสปอตทำงานอยู่"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"แตะเพื่อตั้งค่า"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"กลับ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ถัดไป"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ข้าม"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"เพิ่มบัญชี"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"เพิ่ม"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ลด"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"แตะ <xliff:g id="VALUE">%s</xliff:g> ค้างไว้"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"เลื่อนขึ้นเพื่อเพิ่มและเลื่อนลงเพื่อลด"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"เพิ่มนาที"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ลดนาที"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"ที่เก็บข้อมูล USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"แก้ไข"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"คำเตือนการใช้ข้อมูล"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"แตะเพื่อดูการใช้งานและการตั้งค่า"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"ถึงขีดจำกัดข้อมูล 2G-3G แล้ว"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"ถึงขีดจำกัดข้อมูล 4G แล้ว"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ถึงขีดจำกัดข้อมูลมือถือแล้ว"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"เกินขีดจำกัดข้อมูล WiFi แล้ว"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> เกินขีดจำกัดที่ระบุไว้"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"จำกัดข้อมูลแบ็กกราวด์"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"แตะเพื่อนำข้อจำกัดออก"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"ใบรับรองความปลอดภัย"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ใบรับรองนี้ใช้งานได้"</string>
<string name="issued_to" msgid="454239480274921032">"ออกให้แก่:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"เลือกปี"</string>
<string name="deleted_key" msgid="7659477886625566590">"ลบ <xliff:g id="KEY">%1$s</xliff:g> แล้ว"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g>ที่ทำงาน"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"หากต้องการเลิกตรึงหน้าจอนี้ แตะ \"กลับ\" ค้างไว้"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"หากต้องการเลิกตรึงหน้าจอ แตะ \"ภาพรวม\" ค้างไว้"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"มีการตรึงแอป: ไม่อนุญาตให้เลิกตรึงบนอุปกรณ์นี้"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ตรึงหน้าจอแล้ว"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"เลิกตรึงหน้าจอแล้ว"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 933cab6..b52ed8fd 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Kunin ang content ng window"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Siyasatin ang nilalaman ng isang window kung saan ka nakikipag-ugnayan."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"I-on ang Explore by Touch"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Bibigkasin ang mga pinindot na item at maaaring galugarin ang screen gamit ang mga galaw."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"I-on ang pinahusay na accessibility sa web"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Maaaring mag-install ng mga script upang gawing mas naa-access ang nilalaman ng app."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obserbahan ang tekstong tina-type mo"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"I-type ang PUK at bagong PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Bagong PIN code"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Pindutin upang i-type password"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"I-type ang password upang i-unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"I-type ang PIN upang i-unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Maling PIN code."</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> na oras</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ngayon"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="other">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="other">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="other">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="other">sa loob ng <xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Problema sa video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Hindi wasto ang video na ito para sa streaming sa device na ito."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Hindi ma-play ang video na ito."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Maaaring hindi gumana nang tama ang ilang paggana ng system"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Walang sapat na storage para sa system. Tiyaking mayroon kang 250MB na libreng espasyo at i-restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Tumatakbo ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Pindutin para sa higit pang impormasyon o upang ihinto ang app."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Kanselahin"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Sinisimulan ang apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Pagtatapos ng pag-boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Tumatakbo ang <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Pindutin upang lumipat sa app"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Lumipat ng apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"May tumatakbo nang isa pang app na dapat na ihinto bago ka makapagsimula ng bago."</string>
<string name="old_app_action" msgid="493129172238566282">"Bumalik sa <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Simulan ang <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ihinto ang lumang app nang hindi nagse-save."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Lumampas ang <xliff:g id="PROC">%1$s</xliff:g> sa limitasyon ng memory"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Nakolekta ang heap dump; pindutin upang ibahagi"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Ibahagi ang heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Lumampas ang proseso na <xliff:g id="PROC">%1$s</xliff:g> sa limitasyon ng memory ng proseso nito na <xliff:g id="SIZE">%2$s</xliff:g>. Available ang isang heap dump upang iyong ibahagi sa developer nito. Maging maingat: maaaring naglalaman ang heap dump na ito ng anuman sa iyong personal na impormasyon na naa-access ng application."</string>
<string name="sendText" msgid="5209874571959469142">"Pumili ng pagkilos para sa teksto"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Walang access sa Internet ang Wi-Fi"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Pindutin para sa mga opsyon"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Hindi makakonekta sa Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ay mayroong mahinang koneksyon sa Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Payagan ang kuneksyon?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Simulan ang Wi-Fi Direct. I-o-off nito ang client/hotspot ng Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Hindi masimulan ang Wi-Fi Direct"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Ang Wi-Fi Direct ay naka-on"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Pindutin para sa mga setting"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Tanggapin"</string>
<string name="decline" msgid="2112225451706137894">"Tanggihan"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Naipadala ang imbitasyon"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para sa paglipat ng larawan"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para sa MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Nakakonekta sa isang accessory ng USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Pindutin para sa higit pang mga opsyon."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Konektado ang debugging ng USB"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Pindutin upang i-disable ang pagde-debug ng USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Kinukuha ang ulat ng bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Gusto mo bang ibahagi ang ulat ng bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Ibinabahagi ang ulat ng bug…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Na-detect ang bagong <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para sa paglilipat ng mga larawan at media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Sirang <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"Sira ang <xliff:g id="NAME">%s</xliff:g>. Pindutin upang ayusin."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Hindi sinusuportahang <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Hindi sinusuportahan ng device na ito ang <xliff:g id="NAME">%s</xliff:g> na ito. Pindutin upang i-set up sa isang sinusuportahang format."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Hindi inaasahang naalis ang <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"I-unmount ang <xliff:g id="NAME">%s</xliff:g> bago alisin upang maiwasan ang pagkawala ng data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Inalis ang <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Pinapayagan ang isang application na magbasa ng mga session ng pag-install. Nagbibigay-daan ito upang makita ang mga detalye tungkol sa mga aktibong pag-install ng package."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"humiling ng mga package sa pag-install"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Pinapayagan ang isang application na hilingin ang pag-install ng mga package."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Pindutin nang dalawang beses para sa pagkontrol ng zoom"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tapikin ng dalawang beses para sa pagkontrol ng zoom"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Hindi maidagdag ang widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Pumunta"</string>
<string name="ime_action_search" msgid="658110271822807811">"Paghahanap"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Serbisyo sa pag-rank ng notification"</string>
<string name="vpn_title" msgid="19615213552042827">"Naka-activate ang VPN"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Isinaaktibo ang VPN ng <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Pindutin upang pamahalaan ang network."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Nakakonekta sa <xliff:g id="SESSION">%s</xliff:g>. Pindutin upang pamahalaan ang network."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Tapikin upang pamahalaan ang network."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Nakakonekta sa <xliff:g id="SESSION">%s</xliff:g>. Tapikin upang pamahalaan ang network."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Kumukonekta ang Always-on VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Nakakonekta ang Always-on VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Error sa Always-on VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Pindutin upang i-configure"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Pumili ng file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Walang napiling file"</string>
<string name="reset" msgid="2448168080964209908">"I-reset"</string>
<string name="submit" msgid="1602335572089911941">"Isumite"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Pinagana ang car mode"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Pindutin upang lumabas sa car mode."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Pagsasama o aktibong hotspot"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Pindutin upang i-set up."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Bumalik"</string>
<string name="next_button_label" msgid="1080555104677992408">"Susunod"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Laktawan"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Magdagdag ng account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Dagdagan"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Bawasan"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> pindutin nang matagal."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Mag-slide pataas upang magdagdag at pababa upang magbawas."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Dagdagan ang minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Bawasan ang minuto"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"I-edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Babala sa paggamit ng data"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Pindutin upang tingnan ang paggamit at mga setting."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Naabot na ang limitasyon sa 2G-3G data"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Naabot na ang limitasyon sa 4G data"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Naabot na ang limitasyon sa cellular data"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Lumampas sa limitasyon ng data ng Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Lampas ng <xliff:g id="SIZE">%s</xliff:g> sa tinukoy na limitasyon."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pinaghihigpitan ang data ng background"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Pindutin upang alisin ang paghihigpit."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Certificate ng seguridad"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"May-bisa ang certificate na ito."</string>
<string name="issued_to" msgid="454239480274921032">"Ibinigay kay:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Pumili ng taon"</string>
<string name="deleted_key" msgid="7659477886625566590">"Tinanggal ang <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> sa Trabaho"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Upang i-unpin ang screen na ito, pindutin nang matagal ang Bumalik."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Upang i-unpin ang screen na ito, pindutin nang matagal ang Overview."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Naka-pin ang app: Hindi pinapayagan ang pag-a-unpin sa device na ito."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Naka-pin ang screen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Naka-unpin ang screen"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index ddece4f..a490205 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pencere içeriğini alma"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Etkileşim kurduğunuz pencerenin içeriğini inceler."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Dokunarak Keşfet\'i açma"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Dokunulan öğeler sesli olarak okunur ve ekranı keşfetmek için hareketler kullanılabilir."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Gelişmiş web erişilebilirliğini açma"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Uygulamanın erişilebilirliğini artırmak için komut dosyaları yüklenebilir."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Yazdığınız metni izleme"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK ve yeni PIN kodunu yazın"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodu"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Yeni PIN kodu"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Şifre yazmak için dokunun"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Kilidi açmak için şifreyi yazın"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Kilidi açmak için PIN kodunu yazın"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Yanlış PIN kodu."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 saat</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"şimdi"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dk</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dk</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> sa</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> sa</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> g</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> g</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> y</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> y</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dk içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dk içinde</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> sa içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> sa içinde</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> g içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> g içinde</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> y içinde</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> y içinde</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video sorunu"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bu video bu cihazda akış için uygun değil."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Bu video oynatılamıyor."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bazı sistem işlevleri çalışmayabilir"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistem için yeterli depolama alanı yok. 250 MB boş alanınızın bulunduğundan emin olun ve yeniden başlatın."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> çalışıyor"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Daha fazla bilgi edinmek için veya uygulamayı durdurmak için dokunun."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"Tamam"</string>
<string name="cancel" msgid="6442560571259935130">"İptal"</string>
<string name="yes" msgid="5362982303337969312">"Tamam"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uygulamalar başlatılıyor"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Açılış tamamlanıyor."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> çalışıyor"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Uygulamaya geçiş yapmak için dokunun"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Uygulama değiştirilsin mi?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Başka bir uygulama zaten çalışıyor. Yeni bir uygulama başlatmadan bu uygulama durdurulmalıdır."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> öğesine geri dön"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> uygulamasını başlat"</string>
<string name="new_app_description" msgid="1932143598371537340">"Kaydetmeden eski uygulamayı durdurun."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> bellek sınırını aştı"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Yığın dökümü toplandı. Paylaşmak için dokunun"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Yığın dökümü paylaşılsın mı?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g>, <xliff:g id="SIZE">%2$s</xliff:g> olan işlem bellek sınırını aştı. İşlemin geliştiricisiyle paylaşabileceğiniz bir bellek yığını dökümü hazır. Dikkat: Bu bellek yığını dökümü, uygulamanın erişebildiği tüm kişisel bilgilerinizi içerebilir."</string>
<string name="sendText" msgid="5209874571959469142">"Kısa mesaj için bir işlem seçin"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Kablosuz bağlantıda İnternet erişimi yok"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Seçenekler için dokunun"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kablosuz bağlantısı kurulamadı"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" İnternet bağlantısı zayıf."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Bağlantıya izin verilsin mi?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Kablosuz Doğrudan Bağlantı\'yı başlat. Bu işlem, Kablosuz istemci/hotspot kullanımını kapatacak."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kablosuz Doğrudan Bağlantı başlatılamadı."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Kablosuz Doğrudan Bağlantı özelliği açık"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Ayarlar için dokunun"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Kabul et"</string>
<string name="decline" msgid="2112225451706137894">"Reddet"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Davetiye gönderildi"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Fotoğraf aktarımı için USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI için USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuarına bağlandı"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Daha fazla seçenek için dokunun."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB hata ayıklaması bağlandı"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB hata ayıklama özelliğini devre dışı bırakmak için dokunun."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Hata raporu alınıyor…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Hata raporu paylaşılsın mı?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Hata raporu paylaşılıyor..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Yeni <xliff:g id="NAME">%s</xliff:g> algılandı"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotoğraf ve medya aktarmak için"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Bozuk <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> bozuk. Düzeltmek için dokunun."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Desteklenmeyen <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Bu cihaz bu <xliff:g id="NAME">%s</xliff:g> birimini desteklemiyor. Desteklenen bir biçimde kurmak için dokunun."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> beklenmedik şekilde çıkarıldı"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Veri kaybı olmaması için <xliff:g id="NAME">%s</xliff:g> birimini çıkarmadan önce bağlantısını kesin"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> çıkarıldı"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Bir uygulamanın yükleme oturumlarını okumasına izin verir. Bu, etkin paket yüklemeleriyle ilgili ayrıntıların görülmesine olanak tanır."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"paket yükleme isteğinde bulunma"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Uygulamaya, paketleri yükleme isteğinde bulunma izni verir."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Yakınlaştırma denetimi için iki kez dokunun"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Zum denetimi için iki kez dokun"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget eklenemedi."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Git"</string>
<string name="ime_action_search" msgid="658110271822807811">"Ara"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Bildirim sıralama hizmeti"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN etkinleştirildi"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN, <xliff:g id="APP">%s</xliff:g> tarafından etkinleştirildi"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Ağı yönetmek için dokunun."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> oturumuna bağlandı. Ağı yönetmek için dokunun."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Ağı yönetmek için hafifçe vurun."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"<xliff:g id="SESSION">%s</xliff:g> oturumuna bağlı. Ağı yönetmek için hafifçe vurun."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Her zaman açık VPN\'ye bağlanılıyor…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Her zaman açık VPN\'ye bağlanıldı"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Her zaman açık VPN hatası"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Yapılandırmak için dokunun"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Dosya seç"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Seçili dosya yok"</string>
<string name="reset" msgid="2448168080964209908">"Sıfırla"</string>
<string name="submit" msgid="1602335572089911941">"Gönder"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Araba modu etkin"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Araba modundan çıkmak için dokunun."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering veya hotspot etkin"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Kurulum için dokunun."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Geri"</string>
<string name="next_button_label" msgid="1080555104677992408">"İleri"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Atla"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Hesap ekle"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Artır"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Azalt"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> rakamına dokunun ve basılı tutun."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Artırmak için yukarı, azaltmak için aşağı kaydırın."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Dakikayı artır"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Dakikayı azalt"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB bellek"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Düzenle"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Veri kullanım uyarısı"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Kullanımı ve ayarları görmek için dokunun."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G veri sınırına ulaşıldı"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G veri sınırına ulaşıldı"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Hücre verisi sınırına ulaşıldı"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Kablosuz veri limiti aşıldı"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g>, belirlenen limiti aşıyor."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Arka plan verileri kısıtlı"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Kısıtlamayı kaldırmak için dokunun."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Güvenlik sertifikası"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Bu sertifika geçerli."</string>
<string name="issued_to" msgid="454239480274921032">"Verilen:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Yılı seçin"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> silindi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (İş)"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Bu ekranın sabitlemesini kaldırmak için Geri\'ye dokunup basılı tutun."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Bu ekranın sabitlemesini kaldırmak için Genel Bakış\'a dokunup basılı tutun."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Uygulama sabitlendi. Bu cihazda sabitlemenin kaldırılmasına izin verilmiyor."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran sabitlendi"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran sabitlemesi kaldırıldı"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 758cc1c..7a01ee0 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -269,7 +269,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"Для елементів, яких ви торкаєтеся, надаватимуться голосові підказки, а інтерфейсом можна користуватися за допомогою жестів."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Увімкнути покращення веб-доступності"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Можуть установлюватися сценарії, щоб зробити вміст програми доступнішим."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Переглядати текст, який ви вводите"</string>
@@ -668,7 +669,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Введіть PUK-код і новий PIN-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новий PIN-код"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Торкніться, щоб ввести пароль"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Введіть пароль, щоб розблокувати"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Введіть PIN-код, щоб розблокувати"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неправильний PIN-код."</string>
@@ -873,14 +875,54 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> години</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"зараз"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> день</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> дні</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> днів</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> дня</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> рік</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> роки</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> років</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> року</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> год</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> день</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> дні</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> днів</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> дня</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">через <xliff:g id="COUNT_1">%d</xliff:g> рік</item>
+ <item quantity="few">через <xliff:g id="COUNT_1">%d</xliff:g> роки</item>
+ <item quantity="many">через <xliff:g id="COUNT_1">%d</xliff:g> років</item>
+ <item quantity="other">через <xliff:g id="COUNT_1">%d</xliff:g> року</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Проблема з відео"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Відео не придатне для потокового передавання в цей пристрій."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Неможливо відтворити це відео."</string>
@@ -912,7 +954,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Деякі системні функції можуть не працювати"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Недостатньо місця для системи. Переконайтесь, що на пристрої є 250 Мб вільного місця, і повторіть спробу."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> працює"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Торкніться, щоб дізнатися більше або зупинити програму."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Скасувати"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -986,7 +1029,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск програм."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Завершення завантаження."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Працює <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Торкніться, щоб перейти до програми"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Переключитися між програмами?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Уже працює інша програма, яку потрібно зупинити перед тим, як запускати нову програму."</string>
<string name="old_app_action" msgid="493129172238566282">"Поверн. до <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -994,7 +1038,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Запуст. <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Зупинити попередню програму без збереження."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Процес <xliff:g id="PROC">%1$s</xliff:g> перевищив ліміт пам’яті"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Дані динамічної пам’яті зібрано. Торкніться, щоб поділитися"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Поділитися даними динамічної пам’яті?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процес <xliff:g id="PROC">%1$s</xliff:g> перевищив ліміт пам’яті (<xliff:g id="SIZE">%2$s</xliff:g>). Ви можете поділитися даними динамічної пам’яті з розробником. Увага: ці дані можуть містити вашу особисту інформацію, до якої має доступ додаток."</string>
<string name="sendText" msgid="5209874571959469142">"Виберіть дію для тексту"</string>
@@ -1034,7 +1079,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Мережа Wi-Fi не має доступу до Інтернету"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Торкніться, щоб переглянути опції"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не вдалося під’єднатися до мережі Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" має погане з’єднання з Інтернетом."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Дозволити з’єднання?"</string>
@@ -1044,7 +1090,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Запустити Wi-Fi Direct. Це вимкне з’єднання Wi-Fi клієнт/точка доступу."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Не вдалося запустити Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct увімкнено"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Торкніться, щоб побачити налаштування"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Прийняти"</string>
<string name="decline" msgid="2112225451706137894">"Відхилити"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Запрошення надіслано"</string>
@@ -1096,9 +1143,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB для перенесення фотографій"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB для режиму MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Під’єднано до аксесуара USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Торкніться, щоб побачити більше опцій."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Налагодження USB завершено"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Торкніться, щоб вимкнути налагодження USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Створюється повідомлення про помилку…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Надіслати звіт про помилку?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Надсилається звіт про помилку…"</string>
@@ -1118,9 +1167,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Виявлено новий пристрій пам’яті (<xliff:g id="NAME">%s</xliff:g>)"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Для перенесення фотографій і медіафайлів"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> не підключається"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> не підключається. Торкніться, щоб підключити."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> не підтримується"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"<xliff:g id="NAME">%s</xliff:g> не підтримується на цьому пристрої. Торкніться, щоб налаштувати підтримуваний формат."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> несподівано вийнято"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Перш ніж виймати пристрій пам’яті <xliff:g id="NAME">%s</xliff:g>, відключіть його, щоб не втратити дані"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Ви вийняли пристрій пам’яті <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1156,7 +1207,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Дозволяє додатку читати дані сеансів встановлення. Додаток може бачити деталі про активні встановлення пакетів."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"запитувати дані про пакети встановлення"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Додаток зможе надсилати запити на встановлення пакетів."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Двічі торкніться, щоб керувати масштабом"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Двічі натис. для кер. масшт."</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Не вдалося додати віджет."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Йти"</string>
<string name="ime_action_search" msgid="658110271822807811">"Пошук"</string>
@@ -1187,20 +1238,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Служба встановлення пріоритетності сповіщень"</string>
<string name="vpn_title" msgid="19615213552042827">"Мережу VPN активовано"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"Мережу VPN активовано програмою <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Торкніться, щоб керувати мережею."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Під’єднано до сеансу <xliff:g id="SESSION">%s</xliff:g>. Торкніться, щоб керувати мережею."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Торкніться, щоб керувати мережею."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Під’єднано до <xliff:g id="SESSION">%s</xliff:g>. Торкніться, щоб керувати мережею."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Під’єднання до постійної мережі VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Під’єднано до постійної мережі VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Помилка постійної мережі VPN"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Натисніть, щоб налаштувати"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Виберіть файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Не вибрано файл"</string>
<string name="reset" msgid="2448168080964209908">"Віднов."</string>
<string name="submit" msgid="1602335572089911941">"Надіслати"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Режим авто ввімкн."</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Торкніться, щоб вийти з режиму автомобіля."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Прив\'язка чи точка дост. активна"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Торкніться, щоб налаштувати."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Далі"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Пропустити"</string>
@@ -1235,7 +1289,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Додати облік. запис"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Збільшити"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Зменшити"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> – торкніться й утримуйте."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Проведіть пальцем угору, щоб збільшити, і вниз, щоб зменшити."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"На хвилину вперед"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"На хвилину назад"</string>
@@ -1279,7 +1334,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Носій USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Редагувати"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Застереження про використ. даних"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Торкн.,щоб див. викор. і налашт."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Досягнуто ліміту даних 2G–3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Досягнуто ліміту даних 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Досягнуто ліміту мобільних даних"</string>
@@ -1291,7 +1347,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Перевищено ліміт даних Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> – понад указаний ліміт."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Викор-ня фонових даних обмежено"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Торкн., щоб видалити обмеження."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Сертифікат безпеки"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Цей сертифікат дійсний."</string>
<string name="issued_to" msgid="454239480274921032">"Кому видано:"</string>
@@ -1509,8 +1566,10 @@
<string name="select_year" msgid="7952052866994196170">"Виберіть рік"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> видалено"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Робоча <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Щоб відкріпити цей екран, натисніть і утримуйте кнопку \"Назад\"."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Щоб відкріпити екран, натисніть і утримуйте кнопку \"Огляд\"."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Додаток закріплено. Його не можна відкріпити на цьому пристрої."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екран закріплено"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екран відкріплено"</string>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index 7a562cc..f5e95b6 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"ٹچ کیے ہوئے آئٹمز کو زور سے بولا جائے گا اور اشاروں کا استعمال کرکے اسکرین کو دریافت کیا جا سکتا ہے۔"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"بہتر ویب accessibility کو آن کرنے کی"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ایپ کا مواد مزید قابل رسائی بنانے کیلئے اسکرپٹس کو انسٹال کیا جا سکتا ہے۔"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"آپکے ٹائپ کردہ متن کا مشاہدہ کرنے کی"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK اور نیا PIN کوڈ ٹائپ کریں"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK کوڈ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"نیا PIN کوڈ"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"پاس ورڈ ٹائپ کرنے کیلئے ٹچ کریں"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"غیر مقفل کرنے کیلئے پاس ورڈ ٹائپ کریں"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"غیر مقفل کرنے کیلئے PIN ٹائپ کریں"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"غلط PIN کوڈ۔"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 گھنٹہ</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"ابھی"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> منٹ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> منٹ</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> گھنٹے</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> گھنٹہ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دن</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> دن</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> سال</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> سال</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> منٹ میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> منٹ میں</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> گھنٹے میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> گھنٹہ میں</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دن میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> دن میں</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> سال میں</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> سال میں</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"ویڈیو مسئلہ"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"یہ ویڈیو اس آلہ پر سلسلہ بندی کیلئے درست نہیں ہے۔"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"یہ ویڈیو نہیں چل سکتا۔"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ممکن ہے سسٹم کے کچھ فنکشنز کام نہ کریں"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"سسٹم کیلئے کافی اسٹوریج نہیں ہے۔ اس بات کو یقینی بنائیں کہ آپ کے پاس 250MB خالی جگہ ہے اور دوبارہ شروع کریں۔"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> چل رہا ہے"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"مزید معلومات کیلئے یا ایپ کو روکنے کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"ٹھیک ہے"</string>
<string name="cancel" msgid="6442560571259935130">"منسوخ کریں"</string>
<string name="yes" msgid="5362982303337969312">"ٹھیک ہے"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ایپس شروع ہو رہی ہیں۔"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"بوٹ مکمل ہو رہا ہے۔"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> چل رہی ہے"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ایپ پر سوئچ کرنے کیلئے ٹچ کریں"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ایپس سوئچ کریں؟"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ایک دوسری ایپ پہلے سے چل رہی ہے، جس کا بند ہونا ضروری ہے تاکہ آپ ایک نئی ایپ شروع کر سکیں۔"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> پر واپس جائیں"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> شروع کریں"</string>
<string name="new_app_description" msgid="1932143598371537340">"محفوظ کیے بغیر پرانی ایپ بند کریں۔"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> میموری کی حد سے تجاوز کرگئی"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"ہیپ ڈمپ جمع کر لیا گیا ہے، اشتراک کرنے کیلئے ٹچ کریں"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"ہیپ ڈمپ کا اشتراک کریں؟"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"کارروائی <xliff:g id="PROC">%1$s</xliff:g> اپنی کارروائی کی میموری کی حد <xliff:g id="SIZE">%2$s</xliff:g> سے تجاوز کر گئی ہے۔ آپ کیلئے ایک ہیپ ڈمپ اس کے ڈیولپر سے اشتراک کرنے کیلئے دستیاب ہے۔ احتیاط برتیں: اس ہیپ ڈمپ میں آپ کی ایسی ذاتی معلومات میں سے کوئی بھی شامل ہو سکتی ہے جس تک ایپلیکیشن کو رسائی ہے۔"</string>
<string name="sendText" msgid="5209874571959469142">"متن کیلئے ایک کارروائی منتخب کریں"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi کی انٹرنیٹ تک رسائی نہیں ہے"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"اختیارات کیلئے ٹچ کریں"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi سے مربوط نہیں ہو سکا"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" اس میں ایک کمزور انٹرنیٹ کنکشن ہے۔"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"کنکشن کی اجازت دیں؟"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ڈائرکٹ شروع کریں۔ یہ Wi-Fi کلائنٹ/ہاٹ اسپاٹ کو آف کردے گا۔"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ڈائرکٹ شروع نہیں کرسکا۔"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct آن ہے"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ترتیبات کیلئے چھوئیں"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"قبول کریں"</string>
<string name="decline" msgid="2112225451706137894">"مسترد کریں"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"دعوت بھیج دی گئی"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"تصویر کی منتقلی کیلئے USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI کیلئے USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ایک USB لوازم سے مربوط ہے"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"مزید اختیارات کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ڈیبگ کرنا مربوط ہو گیا"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB ڈیبگنگ کو غیر فعال کرنے کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"بگ رپورٹ لی جا رہی ہے…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"بگ رپورٹ کا اشتراک کریں؟"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"بگ رپورٹ کا اشتراک ہو رہا ہے…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"نئے <xliff:g id="NAME">%s</xliff:g> کا پتا چلا"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"تصاویر اور میڈیا منتقل کرنے کیلئے"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"خراب شدہ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> خراب ہے۔ ٹھیک کرنے کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"غیر تعاون یافتہ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"یہ آلہ <xliff:g id="NAME">%s</xliff:g> کی اعانت نہیں کرتا۔ ایک تعاون یافتہ فارمیٹ میں سیٹ اپ کرنے کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> غیر متوقع طور پر ہٹا دیا گیا"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ڈیٹا ضائع ہونے سے بچانے کیلئے ہٹانے سے پہلے <xliff:g id="NAME">%s</xliff:g> کو اَن ماؤنٹ کریں"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> کو ہٹا دیا گیا"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"ایک ایپلیکیشن کو انسٹال سیشنز پڑھنے کی اجازت دیتا ہے۔ یہ اسے فعال پیکیج انسٹالیشنز کے بارے میں تفصیلات دیکھنے کی اجازت دیتا ہے۔"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"پیکجز انسٹال کرنے کی درخواست کریں"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ایک ایپلیکیشن کو پیکجز انسٹال کرنے کی اجازت دیتی ہے۔"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"زوم کے کنٹرول کیلئے دو بار ٹچ کریں"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"ویجٹس کو شامل نہیں کرسکا۔"</string>
<string name="ime_action_go" msgid="8320845651737369027">"جائیں"</string>
<string name="ime_action_search" msgid="658110271822807811">"تلاش کریں"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"اطلاع کی درجہ بندی سروس"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN فعال ہوگیا"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> کے ذریعہ VPN فعال ہے"</string>
- <string name="vpn_text" msgid="3011306607126450322">"نیٹ ورک کا نظم کرنے کیلئے چھوئیں۔"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> سے مربوط ہوگیا۔ نیٹ ورک کا نظم کرنے کیلئے چھوئیں۔"</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ہمیشہ آن VPN مربوط ہو رہا ہے…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ہمیشہ آن VPN مربوط ہوگیا"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ہمیشہ آن VPN کی خرابی"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ترتیب دینے کیلئے ٹچ کریں"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"فائل منتخب کریں"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"کوئی فائل منتخب نہیں کی گئی"</string>
<string name="reset" msgid="2448168080964209908">"دوبارہ ترتیب دیں"</string>
<string name="submit" msgid="1602335572089911941">"جمع کرائیں"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"کار وضع فعال ہے"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"کار وضع سے باہر نکلنے کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"ربط بنانا یا ہاٹ اسپاٹ فعال"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"سیٹ اپ کیلئے چھوئیں۔"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"واپس جائیں"</string>
<string name="next_button_label" msgid="1080555104677992408">"اگلا"</string>
<string name="skip_button_label" msgid="1275362299471631819">"نظر انداز کریں"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"اکاؤنٹ شامل کریں"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"بڑھائیں"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"گھٹائیں"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ٹچ کریں اور دبائے رکھیں۔"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"بڑھانے کیلئے اوپر اور گھٹانے کیلئے نیچے سلائیڈ کریں۔"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"منٹ بڑھائیں"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"منٹ گھٹائیں"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB اسٹوریج"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ترمیم کریں"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ڈیٹا کے استعمال کی وارننگ"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"استعمال و ترتیبات دیکھنے کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ڈیٹا کی حد کو پہنچ گیا"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ڈیٹا کی حد کو پہنچ گیا"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"سیلولر ڈیٹا کی حد کو پہنچ گیا"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ڈیٹا حد سے متجاوز ہو گیا"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> متعینہ حد سے زیادہ ہے۔"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"پس منظر ڈیٹا محدود ہے"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"پابندی ہٹانے کیلئے ٹچ کریں۔"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"سیکیورٹی سرٹیفیکیٹ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"یہ سرٹیفکیٹ درست ہے۔"</string>
<string name="issued_to" msgid="454239480274921032">"جاری کردہ بنام:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"سال منتخب کریں"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> کو حذف کر دیا گیا"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"دفتر <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"اس اسکرین سے پن ہٹانے کیلئے، پیچھے کو ٹچ کریں اور دبا کر رکھیں۔"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"اس اسکرین سے پن ہٹانے کیلئے، مجموعی جائزہ کو ٹچ کریں اور دبا کر رکھیں۔"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ایپ کو پن کر دیا گیا ہے: اس آلہ پر پن ہٹانے کی اجازت نہیں ہے۔"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"اسکرین کو پن کر دیا گیا"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"اسکرین کا پن ہٹا دیا گیا"</string>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index 71e8394..51b38a0 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Oynadagi kontentni o‘qiydi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Joriy oynadagi kontent mazmunini aniqlaydi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Teginib o‘rganish xizmatini yoqadi"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Tegilgan elementlar nomini talaffuz qiladi va ekran bo‘ylab barmoq orqali kezish imkoniyatini yoqadi."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Internet uchun maxsus imkoniyatlarni yoqadi"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Qo‘shimcha skriptlar o‘rnatilishi mumkin."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Kiritilayotgan matnni kuzatadi"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK-kod va yangi PIN-kodni kiriting"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kod"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Yangi PIN-kod"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Parolni kiritish uchun bosing"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Qulfni ochish uchun parolni kiriting"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Qulfni ochish uchun PIN-kodni kiriting"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Noto‘g‘ri PIN-kod."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 soat</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"hozir"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> daq.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> daq.</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> soat</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> soat</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> kun</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> kun</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> yil</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> yil</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> daq.dan keyin</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> daq.dan keyin</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> soatdan keyin</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> soatdan keyin</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> kundan keyin</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> kundan keyin</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> yildan keyin</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> yildan keyin</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Video muammosi"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Ushbu videoni mazkur qurilmada oqimli rejimda ijro etib bo‘lmaydi."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Ushbu videoni ijro etib bo‘lmadi."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Ba‘zi tizim funksiyalari ishlamasligi mumkin"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Tizim uchun xotirada joy yetarli emas. Avval 250 megabayt joy bo‘shatib, keyin qurilmani o‘chirib yoqing."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ishlamoqda"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Ilova dasturni to‘xtatish yoki tafsilotlar uchun bosing."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Bekor qilish"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ilovalar ishga tushirilmoqda."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Tizimni yuklashni tugatish."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ishlamoqda"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Ilovaga o‘tish uchun bosing"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Ilovalar almashtirilsinmi?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Boshqa ilova ishlab turibdi. Yangisini ishga tushirishdan oldin avvalgisini yoping."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>ga qaytish"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>ni ishga tushirish"</string>
<string name="new_app_description" msgid="1932143598371537340">"O‘zgarishlarni saqlamasdan, eski ilova yopilsin"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> foydalanish uchun ajratilgan xotira chegarasidan o‘tib ketdi"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Hip-damp ma’lumotlari yig‘ilib qoldi; ulashish uchun ushbu yozuvni bosing"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Hip-damp ma’lumotlari bilan ulashasizmi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> jarayoni o‘zi uchun ajratilgan <xliff:g id="SIZE">%2$s</xliff:g> xotira chegarasidan o‘tib ketdi. Ilova dasturchisi bilan ulashishingiz uchun hip-damp ma’lumotlari yig‘ilib qoldi. Ehtiyot bo\'ling: ushbu hip-dampda ilova uchun foydalanishga ruxsat berilgan shaxsiy ma’lumotlaringiz bo‘lishi mumkin."</string>
<string name="sendText" msgid="5209874571959469142">"Matn uchun amalni tanlash"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tarmog‘ida internet aloqasi yo‘q"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Parametrlarni ko‘rish uchun bosing"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi’ga ulana olmadi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tezligi past Internetga ulangan."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Ulanishga ruxsat berilsinmi?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct’ni ishga tushirish. Bu Wi-Fi mijoz/ulanish nuqtasini o‘chiradi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct ishga tushirilmadi."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct yoniq"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Sozlamalarga kirish uchun bosing"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Qabul qilish"</string>
<string name="decline" msgid="2112225451706137894">"Rad qilish"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"taklif jo‘natildi"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB orqali rasm o‘tkazish"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB orqali MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB jihozga ulangan"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Sozlash uchun bosing."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB orqali nosozliklarni tuzatish"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"O‘chirib qo‘yish uchun bosing."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Xatoliklar hisoboti olinmoqda…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Xatoliklar hisoboti yuborilsinmi?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Xatoliklar hisoboti yuborilmoqda…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Yangi <xliff:g id="NAME">%s</xliff:g> kartasi aniqlandi"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Rasm va boshqa fayllarni o‘tkazish"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"“<xliff:g id="NAME">%s</xliff:g>” buzilgan"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"“<xliff:g id="NAME">%s</xliff:g>” buzilgan. Uni tuzatish uchun bu yerga bosing."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> qo‘llab-quvvatlanmaydi"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Bu qurilma ushbu SD-kartani (<xliff:g id="NAME">%s</xliff:g>) qo‘llab-quvvatlamaydi. Uni mos keladigan formatda sozlash uchun bu yerga bosing."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> kutilmaganda chiqarib olindi"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ma’lumotlar yo‘qolishining oldini olish uchun <xliff:g id="NAME">%s</xliff:g> kartasini chiqarishdan oldin u bilan ulanishni uzing"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"“<xliff:g id="NAME">%s</xliff:g>” kartasi chiqarib olingan"</string>
@@ -1138,7 +1173,8 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Ilovaga o‘rnatilgan seanslarni o‘qish uchun ruxsat beradi. Bu unga faol paket o‘rnatmalari haqidagi ma’lumotlarni ko‘rish imkonini beradi."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"paketlarni o‘rnatish so‘rovini yuborish"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Ilovaga paketlarni o‘rnatish so‘rovini yuborish imkonini beradi."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Masshtabni o‘zgartirish uchun ikki marta bosing"</string>
+ <!-- no translation found for tutorial_double_tap_to_zoom_message_short (1311810005957319690) -->
+ <skip />
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Vidjet qo‘shilmadi."</string>
<string name="ime_action_go" msgid="8320845651737369027">"O‘tish"</string>
<string name="ime_action_search" msgid="658110271822807811">"Qidirish"</string>
@@ -1169,20 +1205,25 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Bildirishnomalarni baholash xizmati"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN faollashtirildi"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g> tomonidan faollashtirilgan"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Tarmoqni boshqarish uchun bosing."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>ga ulandi. Tarmoqni boshqarish uchun bosing."</string>
+ <!-- no translation found for vpn_text (1610714069627824309) -->
+ <skip />
+ <!-- no translation found for vpn_text_long (4907843483284977618) -->
+ <skip />
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Ulanmoqda…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Ulandi"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Xato"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Sozlash uchun bosing"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Faylni tanlash"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Hech qanday fayl tanlanmadi"</string>
<string name="reset" msgid="2448168080964209908">"Tiklash"</string>
<string name="submit" msgid="1602335572089911941">"Yuborish"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mashina usuli yoqilgan"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Avtomashina rejimidan chiqish uchun bosing."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Modem rejimi yoniq"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Sozlash uchun bosing."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Orqaga"</string>
<string name="next_button_label" msgid="1080555104677992408">"Keyingi"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Tashlab o‘tish"</string>
@@ -1215,7 +1256,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Hisob qo‘shish"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Ko‘paytirish"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Kamaytirish"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> bosing va ushlab turing."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Ko‘paytirish uchun yuqoriga, kamaytirish uchun pastga suring."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Daqiqani ko‘paytirish"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Daqiqani kamaytirish"</string>
@@ -1259,7 +1301,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB xotira"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Tahrirlash"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Ma’lumotlardan foydalanish ogohlantirilishi"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Trafik sarfi va sozlamalarni ko‘rish uchun bosing."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G trafik chekloviga yetdi"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G trafik chekloviga yetdi"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobil internet chekloviga yetdi"</string>
@@ -1271,7 +1314,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ma’lumot cheklovdan o‘tdi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Chegaradan <xliff:g id="SIZE">%s</xliff:g> oshib ketdi."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Fon rejimi cheklangan"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Cheklovni olib tashlash…"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Xavfsizlik sertifikati"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ushbu sertifikat - to‘g‘ri."</string>
<string name="issued_to" msgid="454239480274921032">"Tegishli:"</string>
@@ -1487,8 +1531,10 @@
<string name="select_year" msgid="7952052866994196170">"Yilni tanlash"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> o‘chirildi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Ish <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Ushbu ekrandan chiqish uchun “Orqaga” tugmasini bosib turing."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Ushbu ekrandan chiqish uchun “Umumiy nazar” tugmasini bosib turing."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ilova qadab qo‘yilgan. Uni ekrandan yechish ushbu qurilmada ta’qiqlangan."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran qadab qo‘yildi"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran bo‘shatildi"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 7e8abb0..53df2da 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Truy xuất nội dung cửa sổ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kiểm tra nội dung của cửa sổ bạn đang tương tác."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Bật Khám phá bằng cách chạm"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Mục đã chạm sẽ được nói to và bạn có thể khám phá màn hình bằng cử chỉ."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Bật khả năng truy cập web nâng cao"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Tập lệnh có thể được cài đặt để làm cho nội dung ứng dụng dễ truy cập hơn."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Xem nội dung bạn nhập"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Nhập PUK và mã PIN mới"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Mã PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Mã PIN mới"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Chạm để nhập mật khẩu"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Nhập mật khẩu để mở khóa"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Nhập mã PIN để mở khóa"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Mã PIN không chính xác."</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 giờ</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"bây giờ"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>phút</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>phút</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>giờ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>giờ</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ngày</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ngày</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>năm</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>năm</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>ph</item>
+ <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>ph</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>gi</item>
+ <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>gi</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>ng</item>
+ <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>ng</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>năm</item>
+ <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>năm</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Sự cố video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Video này không hợp lệ để phát trực tuyến đến thiết bị này."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Không thể phát video này."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Một số chức năng hệ thống có thể không hoạt động"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Không đủ bộ nhớ cho hệ thống. Đảm bảo bạn có 250 MB dung lượng trống và khởi động lại."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang chạy"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Chạm để xem thêm thông tin hoặc dừng ứng dụng."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Hủy"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Khởi động ứng dụng."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Hoàn tất khởi động."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> đang hoạt động"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Chạm để chuyển sang ứng dụng"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Chuyển đổi ứng dụng?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Bạn phải dừng một ứng dụng khác hiện đang chạy trước khi khởi động một ứng dụng mới."</string>
<string name="old_app_action" msgid="493129172238566282">"Quay lại <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Bắt đầu <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Dừng ứng dụng cũ mà không lưu."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> đã vượt quá giới hạn bộ nhớ"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Tệp báo lỗi đã được thu thập; chạm để chia sẻ"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Chia sẻ tệp báo lỗi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Quá trình <xliff:g id="PROC">%1$s</xliff:g> đã vượt quá giới hạn bộ nhớ xử lý <xliff:g id="SIZE">%2$s</xliff:g>. Tệp báo lỗi khả dụng để bạn chia sẻ với nhà phát triển. Hãy cẩn thận: tệp báo lỗi này có thể chứa bất kỳ thông tin cá nhân nào mà ứng dụng có quyền truy cập."</string>
<string name="sendText" msgid="5209874571959469142">"Chọn một tác vụ cho văn bản"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi không có quyền truy cập Internet"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Chạm để biết tùy chọn"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Không thể kết nối với Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" có kết nối Internet không tốt."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Cho phép kết nối?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Khởi động Wi-Fi Direct. Việc này sẽ tắt hoạt động của ứng dụng khách/điểm phát sóng Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Không thể khởi động Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct được bật"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Chạm để cài đặt"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Đồng ý"</string>
<string name="decline" msgid="2112225451706137894">"Từ chối"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Đã gửi thư mời"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB để truyền ảnh"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB cho MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Đã kết nối với phụ kiện USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Chạm để có các tùy chọn khác."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Gỡ lỗi USB đã được kết nối"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Chạm để vô hiệu hóa gỡ lỗi USB."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Đang thu thập báo cáo lỗi…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Chia sẻ báo cáo lỗi?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Đang chia sẻ báo cáo lỗi…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Đã phát hiện <xliff:g id="NAME">%s</xliff:g> mới"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Để chuyển ảnh và phương tiện"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> bị lỗi"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> bị lỗi. Chạm để khắc phục."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> không được hỗ trợ"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Thiết bị này không hỗ trợ <xliff:g id="NAME">%s</xliff:g> này. Hãy chạm để thiết lập ở định dạng được hỗ trợ."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Đã tháo đột ngột <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ngắt kết nối <xliff:g id="NAME">%s</xliff:g> trước khi tháo nhằm tránh mất dữ liệu"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Đã tháo <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Cho phép ứng dụng đọc phiên cài đặt. Thao tác này sẽ cho phép ứng dụng xem chi tiết về gói cài đặt đang hoạt động."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"yêu cầu gói cài đặt"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Cho phép ứng dụng yêu cầu cài đặt gói."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Chạm hai lần để kiểm soát thu phóng"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Nhấn hai lần để kiểm soát thu phóng"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Không thể thêm tiện ích."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Đến"</string>
<string name="ime_action_search" msgid="658110271822807811">"Tìm kiếm"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Dịch vụ xếp hạng thông báo"</string>
<string name="vpn_title" msgid="19615213552042827">"Đã kích hoạt VPN"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN được <xliff:g id="APP">%s</xliff:g> kích hoạt"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Chạm để quản lý mạng."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Đã kết nối với <xliff:g id="SESSION">%s</xliff:g>. Chạm để quản lý mạng."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Chạm để quản lý mạng."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Đã kết nối với <xliff:g id="SESSION">%s</xliff:g>. Chạm để quản lý mạng."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Đang kết nối VPN luôn bật…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Đã kết nối VPN luôn bật"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Lỗi VPN luôn bật"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Chạm để định cấu hình"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Chọn tệp"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Không có tệp nào được chọn"</string>
<string name="reset" msgid="2448168080964209908">"Đặt lại"</string>
<string name="submit" msgid="1602335572089911941">"Gửi"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Chế độ trên ô tô đã được bật"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Chạm để thoát khỏi chế độ trên ô tô."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Chức năng điểm truy cập Internet hoặc điểm phát sóng đang hoạt động"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Chạm để thiết lập."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Quay lại"</string>
<string name="next_button_label" msgid="1080555104677992408">"Tiếp theo"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Bỏ qua"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Thêm tài khoản"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Tăng"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Giảm"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Chạm và giữ <xliff:g id="VALUE">%s</xliff:g>."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Trượt lên để tăng và trượt xuống để giảm."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tăng phút"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Giảm phút"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Bộ lưu trữ USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Chỉnh sửa"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Cảnh báo sử dụng dữ liệu"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Chạm để xem sử dụng và cài đặt."</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Đã đạt tới giới hạn dữ liệu 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Đã đạt tới giới hạn dữ liệu 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Đã đạt tới giới hạn dữ liệu di động"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Vượt quá g.hạn d.liệu Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> vượt quá g.hạn được chỉ định."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dữ liệu nền bị giới hạn"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Chạm để xóa giới hạn."</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Chứng chỉ bảo mật"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Chứng chỉ này hợp lệ."</string>
<string name="issued_to" msgid="454239480274921032">"Cấp cho:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Chọn năm"</string>
<string name="deleted_key" msgid="7659477886625566590">"Đã xóa <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> làm việc"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Để bỏ ghim màn hình này, chạm và giữ Quay lại."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Để bỏ khóa màn hình này, chạm và giữ Tổng quan."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ứng dụng được ghim: Không được phép bỏ ghim trên thiết bị này."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Đã ghim màn hình"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Đã bỏ ghim màn hình"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 8ae1043..eac51ef 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"设备可大声读出用户触摸的内容,而用户可以通过手势浏览屏幕。"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"启用网页无障碍增强功能"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"安装脚本以方便访问应用的内容。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"监测您输入的文字"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"请输入PUK码和新的PIN码"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK码"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新的PIN码"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"触摸可输入密码"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"输入密码以解锁"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"输入PIN码进行解锁"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN码有误。"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 小时</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"现在"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分钟</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分钟</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小时</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小时</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分钟内</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分钟内</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小时内</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小时内</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天内</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天内</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年内</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年内</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"视频问题"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"抱歉,该视频不适合在此设备上播放。"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"无法播放此视频。"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"某些系统功能可能无法正常使用"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"系统存储空间不足。请确保您有250MB的可用空间,然后重新启动。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”正在运行"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"触摸即可了解详情或停止应用。"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"确定"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
<string name="yes" msgid="5362982303337969312">"确定"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在启动应用。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"即将完成启动。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>正在运行"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"触摸可切换至应用"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"切换应用吗?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"已有一个应用正在运行,要启动新的应用,您必须先停止该应用。"</string>
<string name="old_app_action" msgid="493129172238566282">"返回至<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"启动<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"停止旧的应用,但不保存。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>占用的内存已超出限制"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"已收集堆转储数据;触摸即可共享"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"要共享堆转储数据吗?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g>进程占用的内存已超出限制 (<xliff:g id="SIZE">%2$s</xliff:g>)。您可以将收集的堆转储数据共享给相应的开发者。请注意:此数据中可能包含该应用有权存取的您的个人信息。"</string>
<string name="sendText" msgid="5209874571959469142">"选择要对文字执行的操作"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"此 WLAN 网络无法访问互联网"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"触摸即可查看选项"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"无法连接到WLAN"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 互联网连接状况不佳。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"要允许连接吗?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"启动WLAN直连。此操作将会关闭WLAN客户端/热点。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"无法启动WLAN直连。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"已启用WLAN直连"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"通过触摸进行设置"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"接受"</string>
<string name="decline" msgid="2112225451706137894">"拒绝"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"邀请已发送"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"正在通过 USB 传输照片"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"正在通过 USB 连接到 MIDI 接口"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"已连接到USB配件"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"触摸以查看更多选项。"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"已连接到USB调试"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"触摸可停用USB调试。"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"正在生成错误报告…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"要分享错误报告吗?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"正在分享错误报告…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"检测到新的<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"可用于传输照片和媒体文件"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>已损坏"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g>已损坏。触摸即可修复。"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g>不受支持"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"此设备不支持该<xliff:g id="NAME">%s</xliff:g>。触摸即可设置为支持的格式。"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>已意外移除"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"请先卸载<xliff:g id="NAME">%s</xliff:g>,再将其移除,以防数据丢失。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"已移除<xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"允许应用读取安装会话。这样,应用将可以查看有关当前软件包安装的详情。"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"请求安装文件包"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"允许应用请求安装文件包。"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"触摸两次可进行缩放控制"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"双击可以进行缩放控制"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"无法添加小部件。"</string>
<string name="ime_action_go" msgid="8320845651737369027">"开始"</string>
<string name="ime_action_search" msgid="658110271822807811">"搜索"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"通知重要程度排序服务"</string>
<string name="vpn_title" msgid="19615213552042827">"已激活VPN"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g>已激活VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"触摸可管理网络。"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"已连接到“<xliff:g id="SESSION">%s</xliff:g>”。触摸可管理网络。"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"点按即可管理网络。"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"已连接到<xliff:g id="SESSION">%s</xliff:g>。点按即可管理网络。"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在连接到始终开启的 VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"已连接到始终开启的 VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"始终开启的 VPN 出现错误"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"触摸即可进行配置"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"选择文件"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"未选定任何文件"</string>
<string name="reset" msgid="2448168080964209908">"重置"</string>
<string name="submit" msgid="1602335572089911941">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"已启用车载模式"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"触摸可退出车载模式。"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"网络共享或热点已启用"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"触摸可进行设置。"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"上一步"</string>
<string name="next_button_label" msgid="1080555104677992408">"下一步"</string>
<string name="skip_button_label" msgid="1275362299471631819">"跳过"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"添加帐号"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"增大"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"减小"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"触摸 <xliff:g id="VALUE">%s</xliff:g> 次并按住。"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑动可增大数值,向下滑动可减小数值。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增大分钟值"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"减小分钟值"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB存储器"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"修改"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"流量警告"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"触摸可查看使用情况和设置。"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"已达到2G-3G流量上限"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"已达到4G流量上限"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"已达到移动数据流量上限"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"超出了WLAN数据流量上限"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"超出规定上限 <xliff:g id="SIZE">%s</xliff:g>。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"后台流量受限制"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"触摸可去除限制。"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"安全证书"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"该证书有效。"</string>
<string name="issued_to" msgid="454239480274921032">"颁发给:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"选择年份"</string>
<string name="deleted_key" msgid="7659477886625566590">"已删除<xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"工作<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"要取消固定此屏幕,请触摸并按住“返回”按钮。"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"要取消固定此屏幕,请触摸并按住概览按钮。"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"应用处于固定状态:在此设备上不允许退出该模式。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"已固定屏幕"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"已取消固定屏幕"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 667a844..088b9e841 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"朗讀您輕觸的項目,並可讓您使用手勢探索螢幕。"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"開啟增強版網頁無障礙設定"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"可能會安裝程式碼,使應用程式內容更易於存取。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"記錄您輸入的文字"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"輸入 PUK 碼和新 PIN 碼"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 碼"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新 PIN 碼"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"輕觸即可輸入密碼"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"輸入密碼即可解鎖"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"輸入 PIN 碼即可解鎖"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 碼不正確。"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 小時</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"現在"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分鐘</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分鐘</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小時</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小時</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分鐘後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分鐘後</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小時後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小時後</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天後</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年後</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年後</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"影片問題"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"這部影片的格式無效,無法以串流傳送至這部裝置。"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"無法播放這部影片。"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"部分系統功能可能無法運作"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"系統儲存空間不足。請確認裝置有 250 MB 的可用空間,然後重新啟動。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」執行中"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"輕觸即可瞭解詳情或停止應用程式。"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"確定"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
<string name="yes" msgid="5362982303337969312">"確定"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"啟動完成。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"正在執行 <xliff:g id="APP">%1$s</xliff:g>"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"輕觸即可切換應用程式"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"切換應用程式?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"另一個應用程式已在執行,您必須停止執行該應用程式,才能啟動新的應用程式。"</string>
<string name="old_app_action" msgid="493129172238566282">"返回 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"啟動 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"停止舊的應用程式,且不儲存。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> 的記憶體用量已超過限額"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"已收集堆轉儲;輕觸即可分享"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"分享堆轉儲?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"這處理程序 (<xliff:g id="PROC">%1$s</xliff:g>) 的記憶體用量已超過限額 (<xliff:g id="SIZE">%2$s</xliff:g>)。您可將已收集的堆轉儲分享給開發人員。請謹慎,這堆轉儲可包含該應用程式有權存取您的任何個人資料。"</string>
<string name="sendText" msgid="5209874571959469142">"選擇處理文字的操作"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi 並未連接互聯網"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"輕觸以瀏覽選項"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"無法連線至 Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 互聯網連線欠佳。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"允許連線?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"啟動 Wi-Fi Direct,這會關閉 Wi-Fi 使用者端/熱點。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"無法啟動 Wi-Fi Direct。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct 已開啟"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"輕觸進行設定"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"接受"</string>
<string name="decline" msgid="2112225451706137894">"拒絕"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"已發出邀請"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB 相片傳輸"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"已連接到一個 USB 配件"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"輕觸以瀏覽更多選項。"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"已連接 USB 偵錯工具"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"輕觸即可停用 USB 偵錯。"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"正在取得錯誤報告…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"要分享錯誤報告嗎?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"正在分享錯誤報告…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"已偵測到新<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"用於轉移相片和媒體"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> 已受損"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> 受損,請輕觸以修正。"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"不支援的 <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"這部裝置目前不支援此 <xliff:g id="NAME">%s</xliff:g> 。請輕觸以設定為支援的格式。"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>被意外移除"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"請先卸載<xliff:g id="NAME">%s</xliff:g>,然後才移除,以免遺失資料。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"已移除<xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"允許應用程式讀取安裝工作階段。應用程式將可查看目前安裝套裝的詳細資料。"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"要求安裝套件"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"允許應用程式要求安裝套件"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"輕觸兩下即可控制縮放"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"輕觸兩下控制縮放"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"無法新增小工具。"</string>
<string name="ime_action_go" msgid="8320845651737369027">"開始"</string>
<string name="ime_action_search" msgid="658110271822807811">"搜尋"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"通知排序服務"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN 已啟用。"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> 已啟用 VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"輕觸即可管理網絡。"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"已連線至 <xliff:g id="SESSION">%s</xliff:g>,輕觸即可管理網絡。"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"輕按一下即可管理網絡。"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"已連線至 <xliff:g id="SESSION">%s</xliff:g>,輕按一下即可管理網絡。"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在連線至永久連線的 VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"已連線至永久連線的 VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"永久連線的 VPN 發生錯誤"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"輕觸以設定"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"選擇檔案"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"未選擇檔案"</string>
<string name="reset" msgid="2448168080964209908">"重設"</string>
<string name="submit" msgid="1602335572089911941">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"已啟用車用模式"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"輕觸即可結束車用模式。"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"已啟用網絡共享或熱點"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"輕觸即可設定。"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"返回"</string>
<string name="next_button_label" msgid="1080555104677992408">"繼續"</string>
<string name="skip_button_label" msgid="1275362299471631819">"略過"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"新增帳戶"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"增加"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"減少"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> 輕觸並按住。"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑動即可增加,向下滑動即可減少。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增加分鐘數"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"減少分鐘數"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB 儲存裝置"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"編輯"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"資料用量警告"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"輕觸即可查看使用量和設定。"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"已達到 2G-3G 數據流量上限"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"已達到 4G 數據流量上限"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"已達到流動數據流量上限"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"已達 Wi-Fi 數據上限"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> 超過規定上限。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"已限制背景資料"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"輕觸即可解除限制。"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"安全性憑證"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"憑證有效。"</string>
<string name="issued_to" msgid="454239480274921032">"發給:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"選取年份"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> 已刪除"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"公司<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"如要取消固定這個畫面,請輕觸並按住 [返回]。"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"如要取消固定這個畫面,請輕觸並按住 [概覽]。"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"應用程式已固定:不允許在此裝置上取消固定。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"螢幕已固定"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"已取消固定螢幕"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 9a4ea76..d3648ee 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -263,7 +263,8 @@
<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_desc_canRequestTouchExploration" msgid="5800552516779249356">"朗讀您輕觸的項目,並可讓您使用手勢探索螢幕。"</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"啟用強化網頁協助工具"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"可能會安裝程式碼,使應用程式內容更易於存取。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"記錄您輸入的文字"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"輸入 PUK 碼和新 PIN 碼"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 碼"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新 PIN 碼"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"輕觸即可輸入密碼"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"輸入密碼即可解鎖"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"輸入 PIN 即可解鎖"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 碼不正確。"</string>
@@ -859,14 +861,38 @@
<item quantity="one">1 小時</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"現在"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分鐘</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分鐘</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小時</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小時</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分鐘內</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分鐘內</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小時內</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小時內</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天內</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天內</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年內</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年內</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"影片發生問題"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"這部影片的格式無效,因此無法在此裝置中串流播放。"</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"無法播放這部影片。"</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"部分系統功能可能無法運作"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"系統儲存空間不足。請確定您已釋出 250MB 的可用空間,然後重新啟動。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」目前正在執行"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"輕觸即可瞭解詳情或停止應用程式。"</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"確定"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
<string name="yes" msgid="5362982303337969312">"確定"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"啟動完成。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> 執行中"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"輕觸即可切換應用程式"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"切換應用程式?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"其他應用程式已在執行中,您必須停止執行該應用程式,才能啟動新的應用程式。"</string>
<string name="old_app_action" msgid="493129172238566282">"返回 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"啟動 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"停止舊的應用程式且不儲存。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> 已超出記憶體上限"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"已取得記憶體快照資料;輕觸這裡即可分享"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"分享記憶體快照資料?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"程序「<xliff:g id="PROC">%1$s</xliff:g>」已超出 <xliff:g id="SIZE">%2$s</xliff:g> 的程序記憶體上限。系統已產生記憶體快照資料,可供您與開發人員分享。請注意:記憶體快照資料中可能包含應用程式可存取的個人資訊。"</string>
<string name="sendText" msgid="5209874571959469142">"選取傳送文字內容的方式"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi 網路沒有網際網路連線"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"輕觸即可顯示選項"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"無法連線至 Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 的網際網路連線狀況不佳。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"允許連線?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"啟動 Wi-Fi Direct 作業,這會關閉 Wi-Fi 用戶端/無線基地台作業。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"無法啟動 Wi-Fi Direct。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct 已開啟"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"輕觸即可設定"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"接受"</string>
<string name="decline" msgid="2112225451706137894">"拒絕"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"邀請函已傳送"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB 相片傳輸"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"已連接 USB 配件"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"輕觸即可顯示更多選項。"</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"已連接 USB 偵錯工具"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"輕觸即可停用 USB 偵錯。"</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"正在接收錯誤報告…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"要分享錯誤報告嗎?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"正在分享錯誤報告…"</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"偵測到新的「<xliff:g id="NAME">%s</xliff:g>」"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"可用於傳輸相片和媒體"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"「<xliff:g id="NAME">%s</xliff:g>」毀損"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"「<xliff:g id="NAME">%s</xliff:g>」已毀損。請輕觸以進行修正。"</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"不支援的「<xliff:g id="NAME">%s</xliff:g>」"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"這台裝置不支援此「<xliff:g id="NAME">%s</xliff:g>」。輕觸即可將其格式化為支援的格式。"</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"意外移除「<xliff:g id="NAME">%s</xliff:g>」"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"請先卸載「<xliff:g id="NAME">%s</xliff:g>」,再將其移除,以免資料遺失。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"已移除「<xliff:g id="NAME">%s</xliff:g>」"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"允許應用程式讀取安裝工作階段。應用程式將可查看目前的套件安裝詳細資料。"</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"要求安裝套件"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"允許應用程式要求安裝套件。"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"輕觸兩下即可控制縮放"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"點兩下以進行縮放控制"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"無法新增小工具。"</string>
<string name="ime_action_go" msgid="8320845651737369027">"開始"</string>
<string name="ime_action_search" msgid="658110271822807811">"搜尋"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"通知重要性排序服務"</string>
<string name="vpn_title" msgid="19615213552042827">"VPN 已啟用"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> 已啟用 VPN"</string>
- <string name="vpn_text" msgid="3011306607126450322">"輕觸即可管理網路。"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"已連線至 <xliff:g id="SESSION">%s</xliff:g>,輕觸即可管理網路。"</string>
+ <string name="vpn_text" msgid="1610714069627824309">"輕觸一下即可管理網路。"</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"已連線至 <xliff:g id="SESSION">%s</xliff:g>,輕觸一下即可管理網路。"</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在連線至永久連線的 VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"已連線至永久連線的 VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"永久連線的 VPN 發生錯誤"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"輕觸即可設定"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"選擇檔案"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"未選擇任何檔案"</string>
<string name="reset" msgid="2448168080964209908">"重設"</string>
<string name="submit" msgid="1602335572089911941">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"已啟用車用模式"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"輕觸即可結束車用模式。"</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"網路共用或無線基地台已啟用"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"輕觸即可設定。"</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"返回"</string>
<string name="next_button_label" msgid="1080555104677992408">"繼續"</string>
<string name="skip_button_label" msgid="1275362299471631819">"略過"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"新增帳戶"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"增加"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"減少"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> 輕觸並按住。"</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑動即可增加,向下滑動即可減少。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增加分鐘數"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"減少分鐘數"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"USB 儲存裝置"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"編輯"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"數據用量警告"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"輕觸即可查看使用量和設定。"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"已達到 2G-3G 數據流量上限"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"已達到 4G 數據流量上限"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"已達到行動數據流量上限"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"已超過 Wi-Fi 數據上限"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> 超過規定上限。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"已限制背景資料"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"輕觸即可解除限制。"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"安全性憑證"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"憑證有效。"</string>
<string name="issued_to" msgid="454239480274921032">"發佈至:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"選取年份"</string>
<string name="deleted_key" msgid="7659477886625566590">"已刪除 <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"公司<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"如要取消固定這個畫面,請按住「返回」按鈕。"</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"如要取消固定這個畫面,請輕觸並按住總覽按鈕。"</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"應用程式已固定:無法在這部裝置取消固定。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"已固定螢幕"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"已取消固定螢幕"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 84fa36e..7117e51 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -263,7 +263,8 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Thola okuqukethwe kwewindi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Hlola okuqukethwe kwewindi ohlanganyela nalo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vula ukuhlola ngokuthinta"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Izinto ezithintiwe zizokhulunywa ngokuzwakalayo futhi isikrini singahlolwa kusetshenziswa ukuthintwa."</string>
+ <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
+ <skip />
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Vula ukufinyeleleka kwewebhu okuthuthukisiwe"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Amaskripthi angase afakwe ukwenza okuqukethwe kohlelo lokusebenza kufinyeleleke kakhulu."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Qapha umbhalo owuthayiphayo"</string>
@@ -662,7 +663,8 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Faka i-PUK nephinikhodi entsha"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Ikhodi le-PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Iphinikhodi entsha"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Thinta ukubhala iphasiwedi"</font></string>
+ <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
+ <skip />
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Bhala iphasiwedi ukuze kuvuleke"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Faka i-PIN ukuvula"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Ikhodi ye-PIN engalungile!"</string>
@@ -859,14 +861,38 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> amahora</item>
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"manje"</string>
- <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
- <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
- <!-- no translation found for duration_days_shortest (1363973360381363510) -->
- <!-- no translation found for duration_years_shortest (5695219816552469904) -->
- <!-- no translation found for duration_minutes_shortest_future (5490504140297028823) -->
- <!-- no translation found for duration_hours_shortest_future (4920064985170702118) -->
- <!-- no translation found for duration_days_shortest_future (8024455442260783986) -->
- <!-- no translation found for duration_years_shortest_future (5677783230118952251) -->
+ <plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ </plurals>
+ <plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
+ <item quantity="one">ku-<xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ <item quantity="other">ku-<xliff:g id="COUNT_1">%d</xliff:g>m</item>
+ </plurals>
+ <plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
+ <item quantity="one">ku-<xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="other">ku-<xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ </plurals>
+ <plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
+ <item quantity="one">ku-<xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ <item quantity="other">ku-<xliff:g id="COUNT_1">%d</xliff:g>d</item>
+ </plurals>
+ <plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
+ <item quantity="one">ku-<xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ <item quantity="other">ku-<xliff:g id="COUNT_1">%d</xliff:g>y</item>
+ </plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Inkinga yevidiyo"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Uxolo, le vidiyo ayilungele ukusakaza bukhomo kwale divaysi."</string>
<string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Iyehluleka ukudlala levidiyo."</string>
@@ -898,7 +924,8 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Eminye imisebenzi yohlelo ingahle ingasebenzi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Akusona isitoreji esanele sesistimu. Qiniseka ukuthi unesikhala esikhululekile esingu-250MB uphinde uqalise kabusha."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> iyasebenza"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Thinta ukuthola ulwazi oluningi noma ukumisa uhlelo lokusebenza."</string>
+ <!-- no translation found for app_running_notification_text (1197581823314971177) -->
+ <skip />
<string name="ok" msgid="5970060430562524910">"KULUNGILE"</string>
<string name="cancel" msgid="6442560571259935130">"Khansela"</string>
<string name="yes" msgid="5362982303337969312">"KULUNGILE"</string>
@@ -972,7 +999,8 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Qalisa izinhlelo zokusebenza."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Qedela ukuqala kabusha."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> iyasebenza"</string>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Thinta ukuguqukela ensizeni"</string>
+ <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
+ <skip />
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Shintsha izinhlelo zokusebenza?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Olunye uhlelo lokusebenza luvele luyasebenza lokho kumele kumiswe ngaphambi kokuba uqalise olusha."</string>
<string name="old_app_action" msgid="493129172238566282">"Buyisela ku:<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -980,7 +1008,8 @@
<string name="new_app_action" msgid="5472756926945440706">"Qala <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Misa uhlelo lokusebenza endala ngaphandle kokulondoloza."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"I-<xliff:g id="PROC">%1$s</xliff:g> idlule umkhawulo wememori"</string>
- <string name="dump_heap_notification_detail" msgid="2075673362317481664">"Ukulahlwa kwehipu kuqoqiwe; thinta ukuze wabelane"</string>
+ <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
+ <skip />
<string name="dump_heap_title" msgid="5864292264307651673">"Yabelana ngokulahlwa kwehipu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Inqubo engu-<xliff:g id="PROC">%1$s</xliff:g> idlule inqubo yayo yomkhawulo wememori ongu-<xliff:g id="SIZE">%2$s</xliff:g>. Ukulahlwa kwehipu kuyatholakala kuwe ukuze wabelane nonjiniyela wayo. Qaphela: lokhu kulahlwa kwehipu kungaqukatha noma yiluphi ulwazi lakho lomuntu siqu uhlelo lokusebenza elinokufinyelela kukho."</string>
<string name="sendText" msgid="5209874571959469142">"Khetha okufanele kwenziwe okomqhafazo"</string>
@@ -1016,7 +1045,8 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"I-Wi-Fi ayinakho ukufinyelela kwe-inthanethi"</string>
- <string name="wifi_no_internet_detailed" msgid="7593858887662270131">"Izinketho zokuthinta"</string>
+ <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
+ <skip />
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ayikwazanga ukuxhuma kwi-Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" inoxhumano oluphansi lwe-inthanethi."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vumela ukuxhumeka?"</string>
@@ -1026,7 +1056,8 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Qala ukusebenza kwe-Wi-Fi Okuqondile. Lokhu kuzocima ikhasimende le-Wi-Fi/Ukusebenza okwe-hotspot"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Yehlulekile ukuqala i-Wi-Fi Ngqo"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"I-Wi-Fi Direct ivulekile"</string>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Thinta ukuze uthole izilungiselelo"</string>
+ <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
+ <skip />
<string name="accept" msgid="1645267259272829559">"Yamukela"</string>
<string name="decline" msgid="2112225451706137894">"Nqaba"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Isimemo sithunyelwe"</string>
@@ -1078,9 +1109,11 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"I-USB yokudluliswa kwesithombe"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"I-USB ye-MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ixhunywe ku-accessory ye-USB"</string>
- <string name="usb_notification_message" msgid="7347368030849048437">"Thinta ukuze uthole ezinye izinketho."</string>
+ <!-- no translation found for usb_notification_message (3370903770828407960) -->
+ <skip />
<string name="adb_active_notification_title" msgid="6729044778949189918">"Ukulungisa iphutha le-USB kuxhunyiwe"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Thinta ukwenza ukuthi ukudibhaga kwe-USB kungasebenzi."</string>
+ <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
+ <skip />
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Ithatha umbiko wesiphazamisi..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Yabelana ngombiko wesiphazamisi?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Yabelana ngombiko wesiphazamisi..."</string>
@@ -1100,9 +1133,11 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"I-<xliff:g id="NAME">%s</xliff:g> entsha itholiwe"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Ukuze kudluliselwe izithombe nemidiya"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Yonakele <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_message" msgid="1586311304430052169">"<xliff:g id="NAME">%s</xliff:g> yonakele. Thinta ukuze ulungise."</string>
+ <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
+ <skip />
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Akusekelwe <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8789610369456474891">"Le sevisi ayisekeli le <xliff:g id="NAME">%s</xliff:g>. Thinta ukuze usethe ngefomethi esekelwayo."</string>
+ <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
+ <skip />
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"I-<xliff:g id="NAME">%s</xliff:g> isuswe ngokungalindelekile"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Yehlisa i-<xliff:g id="NAME">%s</xliff:g> ngaphambi kokususa ukuze ugweme ukulahleka kwedatha"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"I-<xliff:g id="NAME">%s</xliff:g> isusiwe"</string>
@@ -1138,7 +1173,7 @@
<string name="permdesc_readInstallSessions" msgid="2049771699626019849">"Ivumela uhlelo lokusebenza ukufunda izikhathi. Lokhu kuzolivumela ukubona imininingwane mayelana nokufaka kwephakethi esebenzayo."</string>
<string name="permlab_requestInstallPackages" msgid="5782013576218172577">"cela amaphakheji wokufaka"</string>
<string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"Ivumela uhlelo lokusebenza ukucela ukufakwa kwamaphakheji."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Thinta kabili ukulawula ukusondeza"</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Thepha kabili ukuthola ukulawula ukusondeza"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Yehlulekile ukwengeza i-widget."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Iya"</string>
<string name="ime_action_search" msgid="658110271822807811">"Sesha"</string>
@@ -1169,20 +1204,23 @@
<string name="notification_ranker_binding_label" msgid="774540592299064747">"Isevisi yesilinganisi sesaziso"</string>
<string name="vpn_title" msgid="19615213552042827">"I-VPN isiyasebenza"</string>
<string name="vpn_title_long" msgid="6400714798049252294">"i-VPN ivuswe ngu <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Thinta ukuze wengamele inethiwekhi."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Ixhumeke ku-.<xliff:g id="SESSION">%s</xliff:g> Thinta ukuze ulawule inethiwekhi."</string>
+ <string name="vpn_text" msgid="1610714069627824309">"Thepha ukuphatha inethiwekhi."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Ixhume ku-<xliff:g id="SESSION">%s</xliff:g>. Thepha ukuphatha inethiwekhi."</string>
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"I-VPN ehlala ikhanya iyaxhuma…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"I-VPN ehlala ikhanya ixhunyiwe"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Iphutha le-VPN ehlala ikhanya"</string>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Thinta ukuze ulungiselele"</string>
+ <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
+ <skip />
<string name="upload_file" msgid="2897957172366730416">"Khetha ifayela"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ayikho ifayela ekhethiwe"</string>
<string name="reset" msgid="2448168080964209908">"Setha kabusha"</string>
<string name="submit" msgid="1602335572089911941">"Hambisa"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Imodi yemoto ivunyelwe"</string>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Thinta ukuze uphume esimweni semoto."</string>
+ <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
+ <skip />
<string name="tethered_notification_title" msgid="3146694234398202601">"Ukusebenzisa njengemodemu noma i-hotspot ephathekayo kuvuliwe"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Cindezela ukuze ulungisele ukusebenza."</string>
+ <!-- no translation found for tethered_notification_message (2113628520792055377) -->
+ <skip />
<string name="back_button_label" msgid="2300470004503343439">"Emuva"</string>
<string name="next_button_label" msgid="1080555104677992408">"Okulandelayo"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Yeqa"</string>
@@ -1215,7 +1253,8 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Engeza i-akhawunti"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Khulisa"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Yehlisa"</string>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> thinta bese ucindezela."</string>
+ <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
+ <skip />
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Shelelisela phezulu ukuze ungeze futhi phansi ukuze wehlise."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Khulisa iminithi"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Yehlisa iminithi"</string>
@@ -1259,7 +1298,8 @@
<string name="storage_usb" msgid="3017954059538517278">"Isitoreji se-USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Hlela"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Isexwayiso sokusetshenziswa kwedatha"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Thinta ze ubone ukusebenza kanye nezisetho"</string>
+ <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
+ <skip />
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G umkhawulo wedatha ufinyelelwe"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G umkhawulo wedatha ufinyelelwe"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Umkhawulo wedatha yeselula ufinyelelwe"</string>
@@ -1271,7 +1311,8 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Kufinyelwe kunkhawulo we-Wi-Fi ongedlulwe"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ngaphezu komkhawulo ocacisiwe"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Imininingo egciniwe ivinjelwe"</string>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Cindezela ukuze ususe izivimbelo"</string>
+ <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
+ <skip />
<string name="ssl_certificate" msgid="6510040486049237639">"Isitifiketi sokuvikeleka"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Lesi sitifiketi silungile."</string>
<string name="issued_to" msgid="454239480274921032">"Ikhishelwe u:"</string>
@@ -1487,8 +1528,10 @@
<string name="select_year" msgid="7952052866994196170">"Khetha unyaka"</string>
<string name="deleted_key" msgid="7659477886625566590">"I-<xliff:g id="KEY">%1$s</xliff:g> isusiwe"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Umsebenzi <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_toast" msgid="4921623036476880316">"Ukuze ususe ukuphina lesi sikrini, thinta uphinde ubambe okuthi Emuva."</string>
- <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"Ukuze ususe ukuphina lesi sikrini, thinta uphinde ubambe Buka konke."</string>
+ <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
+ <skip />
+ <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
+ <skip />
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Uhlelo lokusebenza luphiniwe: Ukususa ukuphina akuvunyelwe kule divayisi."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Isikrini siphiniwe"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Isikrini sisuswe ukuphina"</string>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 3fd75f7..191afe5 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -2291,4 +2291,14 @@
<attr name="minimalHeight" format="dimension" />
</declare-styleable>
+ <!-- <code>restrict-update</code> tag restricts system apps from being updated unless the
+ SHA-512 hash equals the specified value.
+ @hide -->
+ <declare-styleable name="AndroidManifestRestrictUpdate" parent="AndroidManifest">
+ <!-- The SHA-512 hash of the only APK that can be used to update a package.
+ <p>NOTE: This is only applicable to system packages.
+ @hide -->
+ <attr name="hash" format="string" />
+ </declare-styleable>
+
</resources>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 11df8e5..c91e09f 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2715,6 +2715,7 @@
<public type="attr" name="contentInsetEndWithActions" />
<public type="attr" name="numberPickerStyle" />
<public type="attr" name="enableVrMode" />
+ <public type="attr" name="hash" />
<public type="style" name="Theme.Material.Light.DialogWhenLarge.DarkActionBar" />
<public type="style" name="Widget.Material.SeekBar.Discrete" />
diff --git a/core/res/res/values/themes_holo.xml b/core/res/res/values/themes_holo.xml
index 34c89fc..677051a 100644
--- a/core/res/res/values/themes_holo.xml
+++ b/core/res/res/values/themes_holo.xml
@@ -466,6 +466,9 @@
<item name="editTextColor">?attr/textColorPrimary</item>
<item name="editTextBackground">@drawable/edit_text_holo_light</item>
+ <item name="textEditSuggestionItemLayout">@layout/text_edit_suggestion_item</item>
+ <item name="textEditSuggestionContainerLayout">@layout/text_edit_suggestion_container</item>
+ <item name="textEditSuggestionHighlightStyle">@style/TextAppearance.Holo.SuggestionHighlight</item>
<item name="candidatesTextStyleSpans">@string/candidates_style</item>
diff --git a/docs/html-intl/intl/in/sdk/index.jd b/docs/html-intl/intl/in/sdk/index.jd
deleted file mode 100644
index 53019fb..0000000
--- a/docs/html-intl/intl/in/sdk/index.jd
+++ /dev/null
@@ -1,432 +0,0 @@
-page.title=Unduh Android Studio dan SDK Tools
-page.tags=sdk, android studio
-page.image=images/cards/android-studio_2x.png
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=Unduh Android IDE resmi dan alat pengembang untuk membuat aplikasi bagi ponsel, tablet, perangkat wearable, TV Android dan lainnya.
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">Unduh</h1>
-
-<p class="sdk-terms-intro">Sebelum menginstal Android Studio atau alat SDK mandiri,
-Anda harus menyetujui ketentuan dan persyaratan berikut.</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">Ketentuan dan Persyaratan</h2>
-Ini adalah Perjanjian Lisensi Kit Pengembangan Perangkat Lunak Android
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>Beberapa saat lagi Anda akan dapat membuat aplikasi untuk Android!</p>
- <p>Sebentar lagi, Anda akan dialihkan ke
- <a id="next-link" href="{@docRoot}sdk/installing/index.html">Menginstal Android SDK</a>.</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">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 class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png"
-srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x"
-width="760" alt="" />
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">Android IDE resmi</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Android Studio IDE</li>
-<li>Android SDK Tools</li>
-<li>Platform Android 6.0 (Marshmallow)</li>
-<li>Citra sistem emulator Android 6.0 dengan Google API</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-Untuk mendapatkan Android Studio atau alat SDK mandiri, kunjungi <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">Kebutuhan Sistem</a></li>
- <li><a href="#Other">Opsi Unduhan Lain</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">Beralih ke Android Studio</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Ikuti Survei</a></li>
-</ul>
-
-
-
-
-<h2 class="feature norule" >Editor kode cerdas</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Yang menjadi inti Android Studio adalah editor kode cerdas dengan kemampuan
- penyelesaian kode, optimalisasi, dan analisis kode yang canggih.</p>
- <p>Editor kode yang andal ini membantu Anda menjadi pengembang aplikasi Android yang lebih produktif.</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">Template kode dan integrasi GitHub</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Pemandu proyek yang baru membuat proses memulai proyek baru menjadi jauh lebih mudah.</p>
-
- <p>Mulai proyek dengan menggunakan kode template untuk pola seperti navigation-drawer dan view-pager,
- dan bahkan impor contoh kode Google dari GitHub.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Pengembangan aplikasi multilayar</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Buat aplikasi untuk ponsel dan tablet Android, Android Wear,
- Android TV, Android Auto dan Google Glass.</p>
- <p>Dengan Android Project View yang baru dan dukungan modul di Android Studio, jadi semakin mudah
- mengelola proyek dan sumber daya aplikasi.
-</div>
-
-
-
-
-<h2 class="feature norule">Perangkat virtual untuk semua ukuran dan bentuk</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio sudah dikonfigurasi dengan citra emulator yang dioptimalkan.</p>
- <p>Virtual Device Manager yang telah diperbarui dan dibuat lebih efisien menyediakan
- profil perangkat yang sudah didefinisikan untuk perangkat Android umum.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-Pembuatan Android berkembang dengan Gradle</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Buatlah berbagai APK untuk aplikasi Android Anda dengan aneka fitur menggunakan proyek yang sama.</p>
- <p>Kelola dependensi aplikasi dengan Maven.</p>
- <p>Buat APK dari Android Studio atau baris perintah.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Selengkapnya tentang Android Studio</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>Dibuat dengan IntelliJ IDEA Community Edition, JAVA IDE populer karya JetBrains.</li>
- <li>Sistem pembuatan berbasis Gradle yang fleksibel.</li>
- <li>Buat berbagai generasi APK dan variannya.</li>
- <li>Dukungan template bertambah untuk Google Services dan aneka tipe perangkat.</li>
- <li>Editor layout yang lengkap dengan dukungan untuk pengeditan tema.</li>
- <li>Alat penambal untuk solusi kinerja, kegunaan, kompatibilitas versi, dan masalah lain.</li>
- <li>ProGuard dan kemampuan penandatanganan aplikasi.</li>
- <li>Dukungan bawaan untuk Google Cloud Platform, mempermudah integrasi Google Cloud
- Messaging dan App Engine.</li>
- </ul>
-
-<p style="margin:0">
-Untuk detail selengkapnya tentang fitur-fitur yang tersedia di Android Studio,
-bacalah panduan <a href="{@docRoot}tools/studio/index.html">Dasar-Dasar Android Studio</a>.</p>
-</div>
-
-
-<p>Jika Anda menggunakan Eclipse dengan ADT, ingatlah bahwa Android Studio sekarang merupakan IDE resmi
-untuk Android, jadi Anda harus beralih ke Android Studio untuk menerima semua
-pembaruan terakhir IDE. Untuk bantuan dalam memindahkan proyek,
-lihat <a href="{@docRoot}sdk/installing/migrate.html">Beralih ke Android
-Studio</a>.</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">Kebutuhan Sistem</h2>
-
-<h3>Windows</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003 (32 atau 64-bit)</li>
-<li>RAM minimum 2 GB, RAM yang direkomendasikan 4 GB</li>
-<li>Ruang hard-disk 400 MB</li>
-<li>Setidaknya 1 GB untuk Android SDK, citra sistem emulator, dan cache</li>
-<li>Resolusi layar minimum 1280 x 800</li>
-<li>Java Development Kit (JDK) 7 </li>
-<li>Opsional untuk emulator akselerasi: Prosesor Intel® dengan dukungan untuk Intel® VT-x, Intel® EM64T
-(Intel® 64), dan fungsionalitas Execute Disable (XD) Bit</li>
-</ul>
-
-
-<h3>Mac OS X</h3>
-
-<ul>
-<li>Mac® OS X® 10.8.5 atau yang lebih tinggi, hingga 10.9 (Mavericks)</li>
-<li>RAM minimum 2 GB, RAM yang direkomendasikan 4 GB</li>
-<li>Ruang hard-disk 400 MB</li>
-<li>Setidaknya 1 GB untuk Android SDK, citra sistem emulator, dan cache</li>
-<li>Resolusi layar minimum 1280 x 800</li>
-<li>Java Runtime Environment (JRE) 6</li>
-<li>Java Development Kit (JDK) 7</li>
-<li>Opsional untuk emulator akselerasi: Prosesor Intel® dengan dukungan untuk Intel® VT-x, Intel® EM64T
-(Intel® 64), dan fungsionalitas Execute Disable (XD) Bit</li>
-</ul>
-
-<p>Pada Mac OS, jalankan Android Studio dengan Java Runtime Environment (JRE) 6 untuk rendering
-font yang dioptimalkan. Kemudian Anda bisa mengonfigurasi proyek untuk menggunakan Java Development Kit (JDK) 6 atau JDK 7.</p>
-
-
-
-<h3>Linux</h3>
-
-<ul>
-<li>Desktop GNOME atau KDE</li>
-<li>GNU C Library (glibc) 2.15 atau yang lebih baru</li>
-<li>RAM minimum 2 GB, RAM yang direkomendasikan 4 GB</li>
-<li>Ruang hard-disk 400 MB</li>
-<li>Setidaknya 1 GB untuk Android SDK, citra sistem emulator, dan cache</li>
-<li>Resolusi layar minimum 1280 x 800</li>
-<li>Oracle® Java Development Kit (JDK) 7 </li>
-</ul>
-<p>Telah diuji pada Ubuntu® 14.04, Trusty Tahr (distribusi 64-bit yang mampu menjalankan
-aplikasi 32-bit).</p>
-
-
-
-
-<h2 id="Other" style="clear:left">Opsi Unduhan Lain</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/in/sdk/installing/adding-packages.jd b/docs/html-intl/intl/in/sdk/installing/adding-packages.jd
deleted file mode 100644
index 2fc5c3e..0000000
--- a/docs/html-intl/intl/in/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=Menambahkan Paket SDK
-
-page.tags=sdk manager
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-Secara default, Android SDK tidak mencakup segala sesuatu yang Anda perlukan untuk memulai pengembangan.
-SDK memisahkan alat, platform, dan komponen lain ke dalam paket yang bisa Anda
-unduh bila diperlukan dengan menggunakan
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.
-Jadi, sebelum Anda bisa memulai, ada beberapa paket yang harus Anda tambahkan ke Android SDK Anda.</p>
-
-<p>Untuk mulai menambahkan paket, jalankan Android SDK Manager dengan salah satu cara berikut:</p>
-<ul>
- <li>Di Android Studio, klik <strong>SDK Manager</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> di toolbar.</li>
- <li>Jika Anda tidak menggunakan Android Studio:
- <ul>
- <li>Windows: Klik ganda file <code>SDK Manager.exe</code> pada akar direktori Android
-SDK.</li>
- <li>Mac/Linux: Buka sebuah terminal dan arahkan ke direktori <code>tools/</code> di
-lokasi instalasi Android SDK, lalu jalankan <code>android sdk</code>.</li>
- </ul>
- </li>
-</ul>
-
-<p>Bila Anda membuka SDK Manager untuk pertama kali, beberapa paket akan dipilih secara
-default. Biarkan dipilih, namun pastikan bahwa Anda mempunyai semua yang Anda perlukan
-untuk persiapan dengan mengikuti langkah-langkah ini:</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">Dapatkan alat-alat SDK terbaru</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>Setidaknya saat menyiapkan Android SDK,
- Anda harus mengunduh platform Android dan alat-alat terbaru:</p>
- <ol>
- <li>Buka direktori Tools dan pilih:
- <ul>
- <li><strong>Android SDK Tools</strong></li>
- <li><strong>Android SDK Platform-tools</strong></li>
- <li><strong>Android SDK Build-tools</strong> (versi tertinggi)</li>
- </ul>
- </li>
- <li>Buka folder Android X.X (versi terbaru) yang pertama dan pilih:
- <ul>
- <li><strong>SDK Platform</strong></li>
- <li>Sebuah citra sistem untuk emulator, seperti <br>
- <strong>ARM EABI v7a System Image</strong></li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">Dapatkan pustaka dukungan untuk API tambahan</h2>
-
- <div class="sidebox">
- <p>Pustaka dukungan diperlukan untuk:</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
- <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- </ul>
-
- <p>Pustaka ini juga menyediakan API populer:</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Drawer
- navigasi</a></li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Tampilan usap</a></li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Action-bar
- yang kompatibel dengan versi lama</a></li>
- </ul>
- </div>
-
- <p><a href="{@docRoot}tools/support-library/features.html">Android Support Library</a>
-menyediakan set API tambahan yang kompatibel dengan sebagian besar versi Android.</p>
-
- <p>Buka direktori <strong>Extras</strong> dan pilih:</p>
- <ul>
- <li><strong>Android Support Repository</strong></li>
- <li><strong>Android Support Library</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">Dapatkan Google Play services untuk API yang lebih banyak lagi</h2>
-
- <div class="sidebox">
-
- <p>API Google Play services menyediakan beragam fitur dan layanan untuk aplikasi Android
-Anda, misalnya:</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">Autentikasi pengguna</a></li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- <li><a href="{@docRoot}google/play-services/games.html">Skor dan
- papan peringkat permainan</a></li>
- <li><a href="{@docRoot}google/play-services/index.html">Dan masih banyak lagi</a></li>
- </ul>
- </div>
-
- <p>Untuk mengembangkan aplikasi dengan Google API, Anda memerlukan paket Google Play services:</p>
- <p>Buka direktori <strong>Extras</strong> dan pilih:</p>
- <ul>
- <li><strong>Google Repository</strong></li>
- <li><strong>Google Play services</strong></li>
- </ul>
-
- <p class="note"><strong>Catatan:</strong> API Google Play services tidak tersedia pada semua
-perangkat berbasis Android, namun tersedia pada semua perangkat dengan Google Play Store. Untuk menggunakan API ini
- dalam emulator Android, Anda juga harus menginstal citra sistem <strong>Google API</strong>
- dari direktori Android X.X terbaru di SDK Manager.</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">Instal paket tersebut</h2>
- <p>Setelah Anda memilih semua paket yang diinginkan, teruskan untuk menginstal:</p>
- <ol>
- <li>Klik <strong>Install X packages</strong>.</li>
- <li>Di jendela berikutnya, klik ganda masing-masing nama paket di sebelah kiri
- untuk menyetujui perjanjian lisensinya masing-masing.</li>
- <li>Klik <strong>Install</strong>.</li>
- </ol>
- <p>Kemajuan pengunduhan diperlihatkan di bagian bawah jendela SDK Manager.
- <strong>Jangan keluar dari SDK Manager</strong> karena hal itu akan membatalkan pengunduhan.</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">Bangun sesuatu!</h2>
-
-<p>Dengan adanya semua paket di atas di Android SDK, maka Anda siap untuk membangun aplikasi
-untuk Android. Dengan tersedianya berbagai alat baru dan API lainnya, maka tinggal jalankan SDK Manager
-untuk mengunduh paket baru bagi SDK Anda.</p>
-
-<p>Inilah beberapa opsi cara Anda untuk melanjutkan:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>Persiapkan</h3>
-<p>Jika Anda masih baru dengan pengembangan Android, pelajari dasar-dasar aplikasi Android dengan mengikuti
-panduan untuk <strong><a href="{@docRoot}training/basics/firstapp/index.html">Membangun Aplikasi Pertama Anda</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Bangun untuk perangkat wearable</h3>
-<p>Jika Anda siap memulai pembangunan aplikasi untuk perangkat wearable Android, lihat panduan untuk
-<strong><a href="{@docRoot}wear/preview/start.html">Membangun Aplikasi untuk Android Wear</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Gunakan Google API</h3>
-<p>Untuk mulai menggunakan Google API, seperti Maps atau
-layanan Play Game, lihat panduan untuk
-<strong><a href="{@docRoot}google/play-services/setup.html">Mempersiapkan Google Play
-Services</a></strong>.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html-intl/intl/ja/sdk/index.jd b/docs/html-intl/intl/ja/sdk/index.jd
deleted file mode 100644
index f7454c0..0000000
--- a/docs/html-intl/intl/ja/sdk/index.jd
+++ /dev/null
@@ -1,432 +0,0 @@
-page.title=Android Studio と SDK Tools のダウンロード
-page.tags=sdk, android studio
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=公式 Android IDE とデベロッパー ツールをダウンロードして、Android 版のモバイル端末、タブレット、ウェアラブル端末、TV などの端末向けのアプリをビルドする。
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">ダウンロード</h1>
-
-<p class="sdk-terms-intro">Android Studio またはスタンドアロンの SDK Tools をインストールする前に、次の利用規約に同意する必要があります。
-</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">利用規約</h2>
-以下は、Android Software Development Kit の使用許諾契約です。
-
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>数ステップで、Android 向けアプリのビルドを開始できます。</p>
- <p>まもなく、<a id="next-link" href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a>へリダイレクトします。
-</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">上記の利用規約を読み、同意します。</label>
-</p>
-<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-</div>
-
-
-</div><!-- end TOS -->
-
-
-
-
-
-
-<div id="landing">
-
-<div class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400" />
-
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">公式 Android IDE</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Android Studio IDE</li>
-<li>Android SDK Tools</li>
-<li>Android 6.0(Marshmallow)プラットフォーム</li>
-<li>Google API を使用した Android 6.0 エミュレータのシステム イメージ</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-Android Studio または スタンドアロンの SDK Tools を入手するには、<a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a> へアクセスしてください。
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">システム要件</a></li>
- <li><a href="#Other">他のダウンロード オプション</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">Android Studio への移行</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">アンケートに回答する</a></li>
-</ul>
-
-
-
-
-
-<div class="cols">
-<h2 class="feature norule col-13" >インテリジェント コード エディタ</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio の中核であるインテリジェント コード エディタは、高度なコード補完機能、リファクタリング機能、解析機能を備えています。
-</p>
- <p>このパワフルなコード エディタは、Android アプリ デベロッパーの生産性を高めます。</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">コード テンプレートと GitHub との統合</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>新しいプロジェクト ウィザードでは、これまで以上に簡単に新規プロジェクトを開始できます。</p>
-
- <p>ナビゲーション ドロワーやビュー ページャーなどのパターンにテンプレート コードを使用してプロジェクトを開始できます。加えて GitHub から Google のコード サンプルをインポートできます。
-</p>
-</div>
-
-
-
-
-<h2 class="feature norule">マルチスクリーン アプリの開発</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android 携帯電話、タブレット、Android Wear、Android TV、Android Auto、Google Glass 向けのアプリをビルドできます。
-</p>
- <p>Android Studio の新しい Android プロジェクト ビューとモジュールのサポートによって、アプリのプロジェクト管理やリソース管理がさらに簡単になります。
-
-</div>
-
-
-
-
-<h2 class="feature norule">あらゆる形状の端末をサポートする仮想デバイス</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio には最適化されたエミュレータ イメージが事前構成されています。</p>
- <p>アップデートされ合理化された仮想デバイス マネージャーには、一般的な Android 端末向けにあらかじめ定義されたプロファイルが用意されています。
-</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-Gradle で進化する Android のビルド</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>1 つのプロジェクトで、Android アプリのための、異なる機能を持つ複数の APK を作成できます。</p>
- <p>Maven を使用してアプリの依存関係を管理します。</p>
- <p>APK は Android Studio でもコマンドラインでもビルドできます。</p>
-</div>
-
-
-
-<h2 class="feature norule">Android Studio のその他の特徴</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>人気の高い JetBrains の Java IDE である IntelliJ IDEA Community Edition が基盤</li>
- <li>Gradle ベースの柔軟なビルドシステム</li>
- <li>ビルド バリアントと複数の APK 生成機能</li>
- <li>Google サービスやさまざまな端末向けのテンプレート サポートの拡充</li>
- <li>テーマの編集が可能なレイアウト エディタ</li>
- <li>パフォーマンス、ユーザビリティ、バージョン互換性、その他の問題を検出する Lint ツール</li>
- <li>ProGuard とアプリの署名機能</li>
- <li>Google Cloud Messaging や App Engine との統合をサポートする Google Cloud プラットフォームの組み込みサポート
-</li>
- </ul>
-
-<p style="margin:0">
-Android Studio の機能の詳細については、「<a href="{@docRoot}tools/studio/index.html">Android Studio の基礎</a>」をご覧ください。
-</p>
-</div>
-
-
-<p>Eclipse で ADT を使用している場合、Android Studio が Android の公式 IDE になったため、Android Studio に移行して IDE の最新アップデートを入手する必要があります。
-
-プロジェクトの移行については、「<a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a>」をご覧ください。
-
-</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">システム要件</h2>
-
-<h3>Windows の場合</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003(32-bit 版または 64-bit 版)</li>
-<li>2 GB 以上のシステム メモリ(RAM)、4 GB 以上を推奨</li>
-<li>400 MB の空き容量のあるハードディスク</li>
-<li>Android SDK、エミュレータのシステム イメージ、キャッシュ用には少なくとも 1 GB 以上</li>
-<li>1280 x 800 以上の画面解像度</li>
-<li>Java Development Kit (JDK) 7 </li>
-<li>エミュレータ アクセラレータ向け(任意): Intel® VT-x、Intel® EM64T(Intel® 64)、Execute Disable(XD)ビット機能対応の Intel® プロセッサ
-</li>
-</ul>
-
-
-<h3>Mac OS X の場合</h3>
-
-<ul>
-<li>Mac ®OS X® 10.8.5 以降、10.9(Mavericks)まで</li>
-<li>2 GB 以上のシステム メモリ(RAM)、4 GB 以上を推奨</li>
-<li>400 MB の空き容量のあるハードディスク</li>
-<li>Android SDK、エミュレータのシステム イメージ、キャッシュ用には少なくとも 1 GB 以上</li>
-<li>1280 x 800 以上の画面解像度</li>
-<li>Java Runtime Environment (JRE) 6</li>
-<li>Java Development Kit (JDK) 7</li>
-<li>エミュレータ アクセラレータ向け(任意): Intel® VT-x、Intel® EM64T(Intel® 64)、Execute Disable(XD)ビット機能対応の Intel® プロセッサ
-</li>
-</ul>
-
-<p>Mac OSで最適化されたフォントのレンダリングを使用するには、Android Studio を Java Runtime Environment (JRE) 6 と共に実行する必要があります。
-その後、Java Development Kit(JDK)6 または JDK 7 を使用するようプロジェクトを構成できます。</p>
-
-
-
-<h3>Linux の場合</h3>
-
-<ul>
-<li>GNOME または KDE デスクトップ</li>
-<li>GNU C Library (glibc) 2.15 以降</li>
-<li>2 GB 以上のシステム メモリ(RAM)、4 GB 以上を推奨</li>
-<li>400 MB の空き容量のあるハードディスク</li>
-<li>Android SDK、エミュレータのシステム イメージ、キャッシュ用には少なくとも 1 GB 以上</li>
-<li>1280 x 800 以上の画面解像度</li>
-<li>Oracle® Java Development Kit (JDK) 7 </li>
-</ul>
-<p>Ubuntu® 14.04、Trusty Tahr(32-bit 版アプリケーションを実行可能な 64-bit 版)でテスト済み。
-</p>
-
-
-
-
-<h2 id="Other" style="clear:left">他のダウンロード オプション</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/ja/sdk/installing/adding-packages.jd b/docs/html-intl/intl/ja/sdk/installing/adding-packages.jd
deleted file mode 100644
index af5dcd0..0000000
--- a/docs/html-intl/intl/ja/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,227 +0,0 @@
-page.title=SDK パッケージの追加
-
-page.tags=sdk manager
-helpoutsWidget=true
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-Android SDK では、デフォルトの状態で、開発の開始に必要なすべてのものが用意されているわけではありません。
-Android SDK では、ツール、プラットフォーム、その他のコンポーネントがパッケージに分けられており、<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a> を使って必要に応じてダウンロードできます。
-
-
-そのため、開始前に、Android SDK にいくつかのパッケージを追加する必要があります。</p>
-
-<p>パッケージの追加を開始するには、次のいずれかの方法で Android SDK Manager を起動します。</p>
-<ul>
- <li>Android Studio で、ツールバーの [<strong>SDK Manager</strong>] <img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> をクリックします。
-</li>
- <li>Android Studio を使用しない場合:
- <ul>
- <li>Windows の場合: Android SDK のルート ディレクトリにある <code>SDK Manager.exe</code> ファイルをダブルクリックします。
-</li>
- <li>Mac または Linux の場合: ターミナルを開いて Android SDK がインストールされているロケーションの <code>tools/</code> ディレクトリに移動し、<code>android sdk</code> を実行します。
-</li>
- </ul>
- </li>
-</ul>
-
-<p>SDK Manager を初めて開く場合、いくつかのパッケージがデフォルトで選択されています。
-この選択はそのままにしますが、開始に必要なすべてのものが揃っているか、次の手順でご確認ください。
-</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">最新の SDK Tools を入手する</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>Android SDK をセットアップする場合、少なくとも最新の SDK Tools と Android プラットフォームのダウンロードが必要です。
-</p>
- <ol>
- <li>[Tools] ディレクトリを開き、以下のツールを選択します。
- <ul>
- <li><strong>Android SDK Tools</strong></li>
- <li><strong>Android SDK Platform-tools</strong></li>
- <li><strong>Android SDK Build-tools</strong>(最新バージョンのもの)</li>
- </ul>
- </li>
- <li>1 番上の [Android X.X] フォルダ(最新バージョンのフォルダ)を開き、以下を選択します。
- <ul>
- <li><strong>SDK Platform</strong></li>
- <li>「<strong>ARM EABI v7a System Image</strong>」などのエミュレータ用のシステム イメージ<br>
-</li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">追加 API 用のサポート ライブラリを取得する</h2>
-
- <div class="sidebox">
- <p>以下を使用するには、サポート ライブラリが必要です。</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
- <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- </ul>
-
- <p>サポート ライブラリは、以下の人気の API も提供しています。</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">ナビゲーション ドロワー</a>
-</li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">スワイプビュー</a></li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">下位互換のアクションバー</a>
-</li>
- </ul>
- </div>
-
- <p><a href="{@docRoot}tools/support-library/features.html">Android サポート ライブラリ</a> は、大部分のバージョンの Android に対応する API の拡張セットを提供しています。
-</p>
-
- <p>[<strong>Extras</strong>] ディレクトリを開き、以下を選択します。</p>
- <ul>
- <li><strong>Android Support Repository</strong></li>
- <li><strong>Android Support Library</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">その他の API 用の Google Play サービスを入手する</h2>
-
- <div class="sidebox">
-
- <p>Google Play services API は、Android アプリのための次のようなバラエティに富んだ機能やサービスを提供しています。
-</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">ユーザー認証</a></li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google マップ</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- <li><a href="{@docRoot}google/play-services/games.html">ゲームの実績とリーダーボード</a>
-</li>
- <li><a href="{@docRoot}google/play-services/index.html">その他多数の機能</a></li>
- </ul>
- </div>
-
- <p>Google API を利用して開発を行うには、Google Play サービス パッケージが必要です。</p>
- <p>[<strong>Extras</strong>] ディレクトリを開き、以下を選択します。</p>
- <ul>
- <li><strong>Google Repository</strong></li>
- <li><strong>Google Play サービス</strong></li>
- </ul>
-
- <p class="note"><strong>注:</strong> Google Play services API は、Android が搭載されたすべての端末で利用できるわけではありませんが、Google Play ストアを使用するとすべての端末で利用できます。
-これらの API を Android エミュレータで使用するには、SDK Manager の最新の [Android X.X] ディレクトリから <strong>Google API</strong> のシステム イメージもインストールする必要があります。
-
-</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">パッケージをインストールする</h2>
- <p>必要なパッケージをすべて選択したら、インストールを続行します。</p>
- <ol>
- <li>[<strong>Install X packages</strong>] をクリックします。</li>
- <li>次のウィンドウで、左側のパッケージ名を 1 つずつダブルクリックし、各パッケージの使用許諾契約に同意します。
-</li>
- <li>[<strong>Install</strong>] をクリックします。</li>
- </ol>
- <p>SDK Manager のウィンドウの 1 番下に、ダウンロードの進捗状況が表示されます。
- <strong>SDK Manager を終了しないでください</strong>。SDK Manager を終了すると、ダウンロードはキャンセルされます。</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">アプリを作成する</h2>
-
-<p>Android SDK にインストールしたパッケージを使用して、アプリを作成できるようになりました。
-新しいツールとその他の API を入手できるようになった場合は、SDK Manager を起動して SDK に新しいパッケージをダウンロードしてください。
-</p>
-
-<p>必要に応じて以下を参考にしてください。</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>スタートガイド</h3>
-<p>Android 開発が初めての場合は、Android アプリの基本を<strong><a href="{@docRoot}training/basics/firstapp/index.html">初めてのアプリ作成</a></strong>に関するガイドに従って学習してください。
-</p>
-
-</div>
-<div class="col-4 box">
-<h3>ウェアラブル端末向けにアプリを作成する</h3>
-<p>Android ウェアラブル端末向けにアプリを開発するには、「<strong><a href="{@docRoot}wear/preview/start.html">Android Wear アプリの作成</a></strong>」のガイドをご覧ください。
-</p>
-
-</div>
-<div class="col-4 box">
-<h3>Google API を使用する</h3>
-<p>マップや Play ゲーム サービスなどの Google API の使用を開始するには、「<strong><a href="{@docRoot}google/play-services/setup.html">Setting Up Google Play Services</a></strong>」のガイドをご覧ください。
-
-
-</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html-intl/intl/ko/sdk/index.jd b/docs/html-intl/intl/ko/sdk/index.jd
deleted file mode 100644
index d68d736..0000000
--- a/docs/html-intl/intl/ko/sdk/index.jd
+++ /dev/null
@@ -1,431 +0,0 @@
-page.title=Android Studio 및 SDK 도구 다운로드
-page.tags=sdk, android studio
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=Android 휴대폰, 태블릿, 웨어러블, TV 등을 위한 앱을 구축하는 데 사용할 수 있는 공식 Android IDE 및 개발자 도구를 다운로드하세요.
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">다운로드</h1>
-
-<p class="sdk-terms-intro">Android Studio 또는 독립 실행형 SDK 도구를 설치하려면,
-먼저 다음 사용 약관에 동의해야 합니다.</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">사용 약관</h2>
-이것은 Android SDK(소프트웨어 개발 키트)에 대한 라이선스 계약입니다.
-
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>이제 금방 Android용 앱 구축을 시작할 수 있게 됩니다!</p>
- <p>곧
-<a id="next-link" href="{@docRoot}sdk/installing/index.html">Android SDK 설치하기</a> 페이지로 이동됩니다.</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">본인은 상기 사용 약관을 읽었으며 이에 동의합니다.</label>
-</p>
-<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-</div>
-
-
-</div><!-- end TOS -->
-
-
-
-
-
-
-<div id="landing">
-
-<div class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">공식 Android IDE</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Android Studio IDE</li>
-<li>Android SDK Tools</li>
-<li>Android 6.0(Marshmallow) 플랫폼</li>
-<li>Google API를 사용하는 Android 6.0 에뮬레이터 시스템 이미지</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-Android Studio 또는 독립 실행형 SDK 도구를 얻으려면 <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a> 페이지를 방문하십시오.
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">시스템 요건</a></li>
- <li><a href="#Other">기타 다운로드 옵션</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">Android Studio로 마이그레이션</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">설문조사 참여</a></li>
-</ul>
-
-
-
-
-
-<h2 class="feature norule" >지능형 코드 편집기</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio의 핵심에는 고급 코드 작성, 리팩터링, 코드 분석이 가능한 지능형
-코드 편집기가 있습니다.</p>
- <p>이 강력한 코드 편집기를 사용하면 여러분이 더욱 생산적인 Android 앱 개발자가 되는 데 도움이 됩니다.</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">코드 템플릿 및 GitHub 통합</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>새 프로젝트 마법사를 통해 새로운 프로젝트를 더욱 쉽게 시작할 수 있습니다.</p>
-
- <p>탐색 드로어 및 보기 호출기와 같은 패턴에 대한 템플릿 코드를 사용해 프로젝트를 시작하고,
-GitHub에서 Google 코드 샘플을 가져올 수도 있습니다.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">다중 화면 앱 개발</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android 휴대폰, 태블릿, Android Wear, Android TV,
-Android Auto 그리고 Google Glass용 앱을 구축할 수 있습니다.</p>
- <p>Android Studio의 새로운 Android 프로젝트 보기 및 모듈 지원 기능을 통해
-앱 프로젝트 및 리소스 관리를 더욱 쉽게 수행할 수 있습니다.
-</div>
-
-
-
-
-<h2 class="feature norule">모든 모양 및 크기를 지원하는 가상 기기</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio는 최적화된 에뮬레이터 이미지로 사전 구성된 형태로 제공됩니다.</p>
- <p>업데이트되고 간소화된 Virtual Device Manager는 일반 Android 기기에 대해
-사전 정의된 기기 프로필을 제공합니다.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-Gradle을 통해 진화된 Android 빌드</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>동일한 프로젝트를 사용하여 다양한 기능을 갖춘 Android 앱을 위한 여러 APK를 생성할 수 있습니다.</p>
- <p>Maven을 통해 앱 종속관계를 관리할 수 있습니다.</p>
- <p>Android Studio 또는 명령줄에서 APK를 구축할 수 있습니다.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Android Studio에 대한 추가 정보</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>JetBrains에서 제공하는 인기 있는 Java IDE인 IntelliJ IDEA Community Edition 기반</li>
- <li>유연한 Gradle 기반 빌드 시스템</li>
- <li>빌드 변형 및 여러 APK 생성</li>
- <li>템플릿 지원 확대를 통해 Google Services 및 다양한 기기 유형 지원</li>
- <li>테마 편집을 지원하는 고급 레이아웃 편집기</li>
- <li>성능, 유용성, 버전 호환성 및 기타 문제를 파악하는 Lint 도구</li>
- <li>ProGuard 및 앱 서명 기능</li>
- <li>Google Cloud Messaging 및 App Engine의 통합을 용이하게 하는 Google Cloud Platform에 대한
-기본 지원 기능</li>
- </ul>
-
-<p style="margin:0">
-Android Studio에서 사용할 수 있는 기능에 대한 자세한 내용은
-<a href="{@docRoot}tools/studio/index.html">Android Studio 개요</a> 가이드를 참조하세요.</p>
-</div>
-
-
-<p>ADT와 함께 Eclipse를 사용하고 있었다면 현재 Android의 공식 IDE는
-Android Studio이므로, 모든 최신 IDE 업데이트를 받을 수 있도록 Android Studio로
-마이그레이션해야 합니다. 프로젝트 이동에 대한 도움말은
-<a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android
-Studio</a>를 참조하세요.</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">시스템 요건</h2>
-
-<h3>Windows</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003(32비트 또는 64비트)</li>
-<li>최소 2GB RAM, 4GB RAM 권장</li>
-<li>400MB 하드 디스크 공간</li>
-<li>Android SDK, 에뮬레이터 시스템 이미지 및 캐시용 최소 1GB</li>
-<li>1280 x 800 이상의 화면 해상도</li>
-<li>JDK(Java Development Kit) 7 </li>
-<li>가속 에뮬레이터를 위한 선택 사항: Intel® VT-x, Intel® EM64T(Intel® 64) 및 XD(Execute Disable) Bit
-기능 지원 Intel® 프로세서</li>
-</ul>
-
-
-<h3>Mac OS X</h3>
-
-<ul>
-<li>Mac® OS X® 10.8.5 이상, 최대 10.9(Mavericks)</li>
-<li>최소 2GB RAM, 4GB RAM 권장</li>
-<li>400MB 하드 디스크 공간</li>
-<li>Android SDK, 에뮬레이터 시스템 이미지 및 캐시용 최소 1GB</li>
-<li>1280 x 800 이상의 화면 해상도</li>
-<li>JRE(Java Runtime Environment) 6</li>
-<li>JDK(Java Development Kit) 7</li>
-<li>가속 에뮬레이터를 위한 선택 사항: Intel® VT-x, Intel® EM64T(Intel® 64) 및 XD(Execute Disable) Bit
-기능 지원 Intel® 프로세서</li>
-</ul>
-
-<p>Mac OS에서는 최적화된 글꼴 렌더링을 위해 JRE(Java Runtime Environment) 6에서 Android Studio를
-실행하십시오. 그런 다음, JDK(Java Development Kit) 6 또는 JDK 7을 사용하여 프로젝트를 구성할 수 있습니다.</p>
-
-
-
-<h3>Linux</h3>
-
-<ul>
-<li>GNOME 또는 KDE 데스크톱</li>
-<li>GNU C Library(glibc) 2.15 이상</li>
-<li>최소 2GB RAM, 4GB RAM 권장</li>
-<li>400MB 하드 디스크 공간</li>
-<li>Android SDK, 에뮬레이터 시스템 이미지 및 캐시용 최소 1GB</li>
-<li>1280 x 800 이상의 화면 해상도</li>
-<li>Oracle® JDK(Java Development Kit) 7 </li>
-</ul>
-<p>Ubuntu® 14.04, Precise Pangolin(32비트 애플리케이션 실행 가능 64비트 버전)에서
-테스트됨</p>
-
-
-
-
-<h2 id="Other" style="clear:left">기타 다운로드 옵션</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/ko/sdk/installing/adding-packages.jd b/docs/html-intl/intl/ko/sdk/installing/adding-packages.jd
deleted file mode 100644
index b935d87..0000000
--- a/docs/html-intl/intl/ko/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=SDK 패키지 추가하기
-
-page.tags=sdk manager
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-기본적으로 Android SDK에는 개발을 시작하는 데 필요한 모든 것이 포함되어 있지 않습니다.
-SDK는 도구, 플랫폼과 기타 구성요소를 여러 개의
-패키지로 구분하여 필요에 따라
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>를 사용하여 다운로드할 수 있습니다.
-따라서 시작하기 전에 Android SDK에 추가해야 하는 패키지가 몇 개 있습니다.</p>
-
-<p>패키지를 추가하려면, 다음 중 한 가지 방법을 사용하여 Android SDK Manager를 시작합니다.</p>
-<ul>
- <li>Android Studio의 도구 모음에서 <strong>SDK Manager</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" />를 클릭합니다.</li>
- <li>Android Studio를 사용하지 않는 경우:
- <ul>
- <li>Windows: Android
- SDK 디렉터리의 루트에 있는 <code>SDK Manager.exe</code> 파일을 더블 클릭합니다.</li>
- <li>Mac/Linux: 터미널을 열고 Android SDK가 설치된 <code>tools/</code> 디렉터리로
-이동한 후 <code>android sdk</code>를 실행합니다.</li>
- </ul>
- </li>
-</ul>
-
-<p>SDK Manager를 처음 열 때에는, 여러 개의 패키지가 기본적으로 선택되어
-있습니다. 이들은 선택된 상태로 두십시오. 다만 다음 단계를 따라 시작하는 데 필요한 모든 것을
-갖추고 있는지 확인해야 합니다.</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">최신 SDK 도구 다운로드</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>Android SDK를 설정할 때는
-최신 도구와 Android 플랫폼 다운로드가 최소한의 준비 사항입니다.</p>
- <ol>
- <li>도구 디렉터리를 열고 다음을 선택합니다.
- <ul>
- <li><strong>Android SDK Tools</strong></li>
- <li><strong>Android SDK Platform-tools</strong></li>
- <li><strong>Android SDK Build-tools</strong>(최상위 버전)</li>
- </ul>
- </li>
- <li>첫 번째 Android X.X 폴더(최신 버전)를 열고 다음을 선택합니다.
- <ul>
- <li><strong>SDK Platform</strong></li>
- <li>에뮬레이터용 시스템 이미지(다음 예시 참조) <br>
- <strong>ARM EABI v7a 시스템 이미지</strong></li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">추가 API를 위한 지원 라이브러리 가져오기</h2>
-
- <div class="sidebox">
- <p>지원 라이브러리는 다음 용도에 필요합니다.</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
- <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- </ul>
-
- <p>또한 다음과 같은 인기 API를 제공하기도 합니다.</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">탐색
-창</a></li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">보기 스와이프</a></li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">이전 버전 호환
-동작 막대</a></li>
- </ul>
- </div>
-
- <p><a href="{@docRoot}tools/support-library/features.html">Android 지원 라이브러리</a>는
- 대부분의 Android 버전과 호환되는 광범위한 집합의 API를 제공합니다.</p>
-
- <p><strong>Extras</strong> 디렉터리를 열고 다음을 선택합니다.</p>
- <ul>
- <li><strong>Android 지원 리포지토리</strong></li>
- <li><strong>Android 지원 라이브러리</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">더 많은 API를 위해 Google Play 서비스 가져오기</h2>
-
- <div class="sidebox">
-
- <p>Google Play 서비스 API는 Android
- 앱에 다음과 같이 다양한 기능과 서비스를 제공합니다.</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">사용자 인증</a></li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- <li><a href="{@docRoot}google/play-services/games.html">게임 도전 과제 및
- 리더보드</a></li>
- <li><a href="{@docRoot}google/play-services/index.html">그 외 다수</a></li>
- </ul>
- </div>
-
- <p>Google API로 개발하려면 Google Play 서비스 패키지가 필요합니다.</p>
- <p><strong>Extras</strong> 디렉터리를 열고 다음을 선택합니다.</p>
- <ul>
- <li><strong>Google Repository</strong></li>
- <li><strong>Google Play 서비스</strong></li>
- </ul>
-
- <p class="note"><strong>참고:</strong> Google Play 서비스를 모든 Android 구동 기기에서
-사용할 수 있는 것은 아니지만, Google Play Store가 있는 기기에서는 모두 사용할 수 있습니다. 이와 같은 API를
-Android 에뮬레이터에서 사용하려면, SDK Manager의 최신 Android X.X 디렉터리에서 <strong>Google API</strong>
- 시스템 이미지도 설치해야 합니다.</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">패키지 설치</h2>
- <p>원하는 패키지를 모두 선택하면 계속 진행하여 설치합니다.</p>
- <ol>
- <li><strong>X 패키지 설치</strong>를 클릭합니다.</li>
- <li>다음 창에서, 왼쪽에 있는 각 패키지 이름을 더블 클릭하여 각각의
-라이선스 동의서를 수락합니다.</li>
- <li><strong>설치</strong>를 클릭합니다.</li>
- </ol>
- <p>다운로드 진행률이 SDK Manager 창 맨 아래에 표시됩니다.
- <strong>SDK Manager를 종료하지 마십시오</strong>. 다운로드가 취소됩니다.</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">뭐든 구축하세요!</h2>
-
-<p>이제 Android SDK에 위의 패키지를 설치했으니 Android용 앱을 구축할 준비가 끝난
-셈입니다. 새로운 도구와 다른 API를 사용할 수 있게 되면, SDK Manager를 시작하여
-사용자의 SDK에 새 패키지를 다운로드할 수 있습니다.</p>
-
-<p>진행 방법에 대한 몇 가지 옵션을 소개합니다.</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>시작하기</h3>
-<p>Android 개발이 처음인 경우, Android 앱의 기초를 배울 수 있는
-<strong><a href="{@docRoot}training/basics/firstapp/index.html">첫 앱 구축하기</a></strong> 가이드를 참조하십시오.</p>
-
-</div>
-<div class="col-4 box">
-<h3>웨어러블용 앱 구축하기</h3>
-<p>Android 웨어러블용 앱을 구축할 준비가 되었다면
-<strong><a href="{@docRoot}wear/preview/start.html">Android Wear용 앱 구축하기</a></strong> 가이드를 참조하십시오.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Google API 사용</h3>
-<p>Maps 또는 Play Game 서비스와 같은
-Google API를 사용하려면
-<strong><a href="{@docRoot}google/play-services/setup.html">Google Play
-서비스 설정하기</a></strong> 가이드를 참조하십시오.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html-intl/intl/pt-br/sdk/index.jd b/docs/html-intl/intl/pt-br/sdk/index.jd
deleted file mode 100644
index c8f8292..0000000
--- a/docs/html-intl/intl/pt-br/sdk/index.jd
+++ /dev/null
@@ -1,430 +0,0 @@
-page.title=Como baixar o Android Studio e o SDK Tools
-page.tags=sdk, android studio
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=Baixar o Android IDE e ferramentas do desenvolvedor para compilar aplicativos para celulares, tablets, dispositivos de uso junto ao corpo, TVs e muito mais do Android.
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">Baixar</h1>
-
-<p class="sdk-terms-intro">Antes de instalar o Android Studio ou a versão independente das ferramentas SDK,
-você deve concordar com os termos e condições a seguir:</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">Termos e condições</h2>
-Esse é o Contrato de licença do conjunto de desenvolvimento de software do Android
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>Você está a alguns passos de programar aplicativos para Android!</p>
- <p>Em alguns instantes você será redirecionado para
-<a id="next-link" href="{@docRoot}sdk/installing/index.html">Instalação do Android SDK</a>.</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">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 class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">O IDE oficial do Android</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>IDE do Android Studio</li>
-<li>Ferramentas do Android SDK</li>
-<li>Plataforma do Android 6.0 (Marshmallow)</li>
-<li>Imagem do sistema do emulador do Android 6.0 com APIs da Google</li>
-</ul>
-
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-Para obter o Android Studio ou a versão independente das ferramentas SDK, acesse <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">Requisitos do sistema</a></li>
- <li> <a href="#Other">Outras opções de download</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">Migração para o Android Studio</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Realização de uma pesquisa</a></li>
-</ul>
-
-
-
-
-<h2 class="feature norule" >Editor de código inteligente</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>No núcleo do Android Studio, há um editor de código inteligente capaz de realizar,
-refatorar e analisar códigos avançados.</p>
- <p>O poderoso editor de código auxilia na maior produtividade do desenvolvedor de aplicativos Android.</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">Modelos de códigos e integração GitHub</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Os novos assistentes de projeto facilitam iniciar um projeto como nunca antes.</p>
-
- <p>Inicie projetos usando códigos de modelo para padrões como menus de navegação e ViewPagers,
-e até importe exemplos de código da Google a partir do GitHub.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Desenvolvimento de aplicativos multitelas</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Programe aplicativos para celulares Android, tablets, Android Wear,
-Android TV, Android Auto e Google Glass.</p>
- <p>Com a nova visualização de projeto Android e a compatibilidade com módulos no Android Studio,
-é mais fácil gerenciar projetos e recursos de aplicativos.
-</div>
-
-
-
-
-<h2 class="feature norule">Dispositivos virtuais para todas as formas e tamanhos</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>O Android Studio já é pré-configurado com uma imagem do emulador otimizada.</p>
- <p>O Gerenciador de dispositivos virtual atualizado e simplificado fornece
-perfis de dispositivos pré-definidos para dispositivos Android comuns.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-As versões do Android evoluíram com o Gradle</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Crie diversos APKs para seu aplicativo Android com diferentes recursos usando o mesmo projeto.</p>
- <p>Gerencie dependências de aplicativo com o Maven.</p>
- <p>Crie APKs com o Android Studio ou com a linha de comando.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Saiba mais sobre o Android Studio</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>Programado no IntelliJ IDEA Edição de Comunidade, o popular IDE da Java da JetBrains.</li>
- <li>Sistema flexível de programação baseado em Gradle.</li>
- <li>Crie variantes e várias gerações de APK.</li>
- <li>Compatibilidade com modelos do Google Services ampliada e com diversos tipos de dispositivos.</li>
- <li>Editor de layout completo compatível com edição de tema.</li>
- <li>Ferramentas de identificação de construção suspeita para identificar problemas de desempenho, usabilidade, compatibilidade de versão e outros problemas.</li>
- <li>ProGuard e recursos de assinatura de aplicativo.</li>
- <li>Compatibilidade embutida na Google Cloud Platform, facilitando a integração com o Google Cloud
-Messasing e com o App Engine.</li>
- </ul>
-
-<p style="margin:0">
-Para obter mais detalhes sobre recursos disponíveis no Android Studio,
-leia o guia <a href="{@docRoot}tools/studio/index.html">Conceitos básicos do Android Studio</a>.</p>
-</div>
-
-
-<p>Se você usou o Eclipse com ADT, esteja ciente de que o Android Studio é agora o IDE oficial
-para Android, portanto, é preciso migrar para o Android Studio para receber todas
-as últimas atualizações do IDE. Para obter ajuda para mover projetos,
-consulte <a href="{@docRoot}sdk/installing/migrate.html">Como migrar para o Android
-Studio</a>.</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">Requisitos do sistema</h2>
-
-<h3>Windows</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003 (32 ou 64 bits)</li>
-<li>Mínimo de 2 GB de RAM, 4 GB de RAM recomendado</li>
-<li>Espaço de 400 MB no disco rígido</li>
-<li>Pelo menos 1 GB para o Android SDK, imagens do sistema de emulador e caches</li>
-<li>Resolução de tela de 1.280 x 800 no mínimo</li>
-<li>Kit de desenvolvimento Java (JDK) 7 </li>
-<li>Opcional para emulador acelerado: Processador Intel® compatível com Intel® VT-x, Intel® EM64T
-(Intel® 64) e Desativador de bit executável (XD)</li>
-</ul>
-
-
-<h3>Mac OS X</h3>
-
-<ul>
-<li>Mac® OS X® 10.8.5 ou posterior, até o 10.9 (Mavericks)</li>
-<li>Mínimo de 2 GB de RAM, 4 GB de RAM recomendado</li>
-<li>Espaço de 400 MB no disco rígido</li>
-<li>Pelo menos 1 GB para o Android SDK, imagens do sistema de emulador e caches</li>
-<li>Resolução de tela de 1.280 x 800 no mínimo</li>
-<li>Ambiente de tempo de execução Java (JRE) 6</li>
-<li>Kit de desenvolvimento Java (JDK) 7</li>
-<li>Opcional para emulador acelerado: Processador Intel® compatível com Intel® VT-x, Intel® EM64T
-(Intel® 64) e Desativador de bit executável (XD)</li>
-</ul>
-
-<p>No Mac OS, execute o Android Studio com o Ambiente de tempo de execução Java (JRE) 6 para otimizar
-a renderização de fontes. Você pode, então, configurar o projeto para usar o Kit de desenvolvimento Java (JDK) 6 ou o JDK 7.</p>
-
-
-
-<h3>Linux</h3>
-
-<ul>
-<li>Área de trabalho GNOME ou KDE</li>
-<li>Biblioteca GNU C (glibc) 2.15 ou posterior</li>
-<li>Mínimo de 2 GB de RAM, 4 GB de RAM recomendado</li>
-<li>Espaço de 400 MB no disco rígido</li>
-<li>Pelo menos 1 GB para o Android SDK, imagens do sistema de emulador e caches</li>
-<li>Resolução de tela de 1.280 x 800 no mínimo</li>
-<li>Kit de desenvolvimento Oracle® Java (JDK) 7 </li>
-</ul>
-<p>Testado no Trusty Tahr do Ubuntu® 14.04 (distribuição de 64 bits capaz de executar
-aplicativos de 32 bits).</p>
-
-
-
-
-<h2 id="Other" style="clear:left">Outras opções de download</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/pt-br/sdk/installing/adding-packages.jd b/docs/html-intl/intl/pt-br/sdk/installing/adding-packages.jd
deleted file mode 100644
index bda33b6..0000000
--- a/docs/html-intl/intl/pt-br/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=Como adicionar pacotes SDK
-
-page.tags=sdk manager
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-Por padrão, o Android SDK não inclui tudo que é necessário para começar a desenvolver.
-O SDK separa ferramentas, plataformas e outros componentes em pacotes que podem ser
-baixados conforme necessário usando o
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.
-Portanto, antes de iniciar, há alguns pacotes que você deve adicionar ao Android SDK.</p>
-
-<p>Para começar a adicionar pacotes, execute o Android SDK Manager de uma das formas a seguir:</p>
-<ul>
- <li>No Android Studio, clique em <strong>SDK Manager</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> na barra de ferramentas.</li>
- <li>Se não estiver usando o Android Studio:
- <ul>
- <li>Windows: Clique duas vezes no arquivo <code>SDK Manager.exe</code> na raiz do diretório do Android
- SDK.</li>
- <li>Mac/Linux: Abra um terminal e navegue para o diretório <code>tools/</code> no
- local em que o Android SDK foi instalado. Em seguida, execute <code>android sdk</code>.</li>
- </ul>
- </li>
-</ul>
-
-<p>Ao abrir o SDK Manager pela primeira vez, vários pacotes são selecionados
-por padrão. Deixe-os selecionados, mas certifique-se de ter tudo o que é necessário
-para começar seguindo os seguintes passos:</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">Obtenha as ferramentas mais recentes do SDK</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>No mínimo, ao configurar o Android SDK,
- é preciso baixar as ferramentas mais recentes e a plataforma Android:</p>
- <ol>
- <li>Abra o diretório Tools e selecione:
- <ul>
- <li><strong>Ferramentas do Android SDK</strong></li>
- <li><strong>Ferramentas-plataforma Android SDK</strong></li>
- <li><strong>Ferramentas-Android SDK Build</strong> (versão mais recente)</li>
- </ul>
- </li>
- <li>Abra a pasta do primeiro Android X.X (a versão mais recente) e selecione:
- <ul>
- <li><strong>Plataforma SDK</strong></li>
- <li>Uma imagem do sistema para o emulador, como <br>
- <strong>Imagem do sistema ARM EABI v7a</strong></li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">Obtenha a biblioteca de suporte para APIs adicionais</h2>
-
- <div class="sidebox">
- <p>A biblioteca de suporte é necessária para:</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
- <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- </ul>
-
- <p>Ela também fornece estas APIs populares:</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Gaveta de
- navegação</a></li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Vistas de deslizar</a></li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Barra de ação com compatibilidade
- retroativa</a></li>
- </ul>
- </div>
-
- <p>A <a href="{@docRoot}tools/support-library/features.html">Biblioteca de Suporte do Android</a>
- fornece um conjunto estendido de APIs compatíveis com a maioria das versões do Android.</p>
-
- <p>Abra o diretório <strong>Extras</strong> e selecione:</p>
- <ul>
- <li><strong>Repositório de Suporte do Android</strong></li>
- <li><strong>Biblioteca de Suporte do Android</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">Obtenha os serviços do Google Play para obter ainda mais APIs</h2>
-
- <div class="sidebox">
-
- <p>As APIs dos serviços do Google Play fornecem uma variedade de recursos e serviços para aplicativos
- Android, como:</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">Autenticação do usuário</a></li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- <li><a href="{@docRoot}google/play-services/games.html">Conquistas e placares de líderes
- para jogos</a></li>
- <li><a href="{@docRoot}google/play-services/index.html">E muito mais</a></li>
- </ul>
- </div>
-
- <p>Para desenvolver com as APIs do Google, você precisa do pacote de serviços do Google Play:</p>
- <p>Abra o diretório <strong>Extras</strong> e selecione:</p>
- <ul>
- <li><strong>Repositório do Google</strong></li>
- <li><strong>Serviços Google Play</strong></li>
- </ul>
-
- <p class="note"><strong>Observação:</strong> as APIs dos serviços do Google Play não estão disponíveis em todos os dispositivos
- com Android, mas estão disponíveis em todos os dispositivos com Google Play Store. Para usar essas
- APIs no emulador do Android, também é preciso instalar a imagem do sistema das <strong>APIs do Google</strong>
- do diretório Android X.X mais recente no SDK Manager.</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">Instale os pacotes</h2>
- <p>Depois de selecionar todos os pacotes desejados, prossiga para a instalação:</p>
- <ol>
- <li>Clique em <strong>Install X packages</strong> (Instalar X pacotes).</li>
- <li>Na janela seguinte, clique duas vezes no nome de cada pacote à esquerda
- para aceitar o contrato de licença de cada um.</li>
- <li>Clique em <strong>Install</strong> (Instalar).</li>
- </ol>
- <p>O andamento do download é exibido na parte inferior da tela do SDK Manager.
- <strong>Não saia do SDK Manager</strong>, pois isso cancelará o download.</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">Crie alguma coisa!</h2>
-
-<p>Com os pacotes acima agora no seu Android SDK, você está pronto para criar aplicativos
-para o Android. À medida que novas ferramentas e outras APIs forem disponibilizadas, basta executar o SDK Manager
- para baixar os novos pacotes para o SDK.</p>
-
-<p>A seguir há algumas opções sobre como prosseguir:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>Introdução</h3>
-<p>Se você é novo no desenvolvimento para Android, aprenda os fundamentos de aplicativos para Android seguindo
-o guia para <strong><a href="{@docRoot}training/basics/firstapp/index.html">Criação do primeiro aplicativo</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Desenvolva para vestíveis</h3>
-<p>Se você está pronto para começar a desenvolver aplicativos para vestíveis Android, consulte o guia para
-<strong><a href="{@docRoot}wear/preview/start.html">Criação de aplicativos para Android Wear</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Use as APIs do Google</h3>
-<p>Para começar a usar as APIs do Google, como os serviços Maps ou
-Play Game, consulte o guia para
-<strong><a href="{@docRoot}google/play-services/setup.html">Configuração dos serviços do
-Google Play</a></strong>.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html-intl/intl/ru/sdk/index.jd b/docs/html-intl/intl/ru/sdk/index.jd
deleted file mode 100644
index 765c89c..0000000
--- a/docs/html-intl/intl/ru/sdk/index.jd
+++ /dev/null
@@ -1,432 +0,0 @@
-page.title=Загрузка Android Studio и инструментов SDK
-page.tags=sdk, android studio
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=Загрузите официальные средства разработки Android для создания приложений для смартфонов, планшетов, носимых устройств, телевизоров и многих других устройств под управлением ОС Android.
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">Загрузка</h1>
-
-<p class="sdk-terms-intro">Прежде чем устанавливать Android Studio или отдельный пакет инструментов SDK,
-примите указанные ниже положения и условия.</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">Положения и условия</h2>
-Данный документ представляет собой Лицензионное соглашение на использование набора средств разработки программного обеспечения Android
-
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>Еще буквально несколько шагов, — и вы сможете приступить к разработке приложений для Android!</p>
- <p>Через некоторое время вы будете перенаправлены на страницу
-<a id="next-link" href="{@docRoot}sdk/installing/index.html">установки Android SDK</a>.</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">Я прочитал(а) и принимаю изложенные выше положения и условия</label>
-</p>
-<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-</div>
-
-
-</div><!-- end TOS -->
-
-
-
-
-
-
-<div id="landing">
-
-<div class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">Официальная среда разработки Android</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Среда разработки Android Studio</li>
-<li>Инструменты Android SDK</li>
-<li>Платформа Android 6.0 (Marshmallow)</li>
-<li>Системный образ Android 6.0 с API Google для эмулятора</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-Чтобы загрузить Android Studio или отдельные инструменты SDK, посетите веб-сайт <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">Требования к системе</a></li>
- <li><a href="#Other">Другие варианты загрузки</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">Переход на Android Studio</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Опрос</a></li>
-</ul>
-
-</div>
-
-
-
-
-<h2 class="feature norule" >Интеллектуальный редактор программного кода</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>В основе Android Studio лежит интеллектуальный редактор исходного кода, предлагающий такие возможности, как расширенное
- автозавершение кода, его реструктуризация и анализ.</p>
- <p>Этот редактор поможет вам повысить эффективность разработки приложений для Android.</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">Шаблоны программного кода и интеграция с GitHub</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Новые мастеры создания проектов в еще большей степени упрощают работу с новыми проектами.</p>
-
- <p>Создавая новый проект, используйте шаблоны программного кода для таких общих фрагментов, как элементы для навигации по приложению и представления,
-а также импортируйте примеры кода Google прямо из GitHub.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Разработка приложений с поддержкой экранов разного размера</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Создавайте приложения для смартфонов и планшетов под управлением Android, для Android Wear
-, Android TV, Android Auto и даже Google Glass.</p>
- <p>Благодаря новому представлению Android Project и поддержке модулей в Android Studio вы можете с легкостью
-управлять своими проектами и ресурсами.
-</div>
-
-
-
-
-<h2 class="feature norule">Виртуальные устройства на любой вкус и цвет</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>В состав Android Studio входит оптимизированный эмулятор.</p>
- <p>Обновленный и оптимизированный диспетчер виртуальных устройств порадует вас широким набором
-предварительно настроенных профилей устройств Android.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-Эволюция сборок Android благодаря Gradle</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Создавайте несколько APK для ваших приложений с различными функциональными возможностями — в рамках одного и того же проекта.</p>
- <p>Управляйте зависимостями между приложениями с помощью Maven.</p>
- <p>Создавайте APK в Android Studio или прямо в командной строке.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Подробнее об Android Studio</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>Создано на основе IntelliJ IDEA Community Edition, популярной среды разработки Java от JetBrains.</li>
- <li>Гибкая система сборки на основе Gradle.</li>
- <li>Различные варианты сборки и методы создания файлов APK.</li>
- <li>Расширенная поддержка шаблонов для служб Google и устройств различных типов.</li>
- <li>Функциональный редактор макетов с поддержкой редактирования тем оформления.</li>
- <li>Инструментарий lint для решения проблем с производительностью, удобством использования, совместимостью версий и т. д.</li>
- <li>ProGuard и возможности подписи приложений.</li>
- <li>Встроенная поддержка Google Cloud Platform, обеспечивающая удобство интеграции со службами Google Cloud
- Messaging и App Engine.</li>
- </ul>
-
-<p style="margin:0">
-Подробные сведения о возможностях Android Studio
-изложены в руководстве <a href="{@docRoot}tools/studio/index.html">Android Studio Basics</a>.</p>
-</div>
-
-
-<p>Если вы используете Eclipse с ADT, вам следует знать, что Android Studio теперь является официальной средой разработки для
-Android, поэтому переходите на Android Studio, чтобы всегда иметь под рукой новейшие
-инструменты разработки приложений. Сведения о том, как перенести свои проекты,
-приведены в документе <a href="{@docRoot}sdk/installing/migrate.html">Переход на Android
-Studio</a>.</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">Требования к системе</h2>
-
-<h3>Windows</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003 (32- или 64-разрядная версия)</li>
-<li>ОЗУ не менее 2 ГБ (рекомендуется 4 ГБ)</li>
-<li>400 МБ свободного места на жестком диске</li>
-<li>Не менее 1 ГБ для Android SDK, системных образов эмулятора и кэшированных файлов</li>
-<li>Экран с разрешением не менее 1280 x 800 точек</li>
-<li>Java Development Kit (JDK) 7 </li>
-<li>Дополнительно для эмулятора с ускорителем: Процессор Intel® с поддержкой Intel® VT-x, Intel® EM64T
-(Intel® 64) и функцией XD-Bit</li>
-</ul>
-
-
-<h3>Mac OS X</h3>
-
-<ul>
-<li>Mac® OS X® 10.8.5 или более поздней версии вплоть до 10.9 (Mavericks)</li>
-<li>ОЗУ не менее 2 ГБ (рекомендуется 4 ГБ)</li>
-<li>400 МБ свободного места на жестком диске</li>
-<li>Не менее 1 ГБ для Android SDK, системных образов эмулятора и кэшированных файлов</li>
-<li>Экран с разрешением не менее 1280 x 800 точек</li>
-<li>Java Runtime Environment (JRE) 6</li>
-<li>Java Development Kit (JDK) 7</li>
-<li>Дополнительно для эмулятора с ускорителем: Процессор Intel® с поддержкой Intel® VT-x, Intel® EM64T
-(Intel® 64) и функцией XD-Bit</li>
-</ul>
-
-<p>В Mac OS для оптимизации отображения шрифтов Android Studio рекомендуется запускать с
-Java Runtime Environment (JRE) 6. Впоследствии проекты можно настроить на использование Java Development Kit (JDK) 6 или JDK 7.</p>
-
-
-
-<h3>Linux</h3>
-
-<ul>
-<li>Рабочий стол GNOME или KDE</li>
-<li>Библиотека GNU C (glibc) 2.15 или более поздней версии</li>
-<li>ОЗУ не менее 2 ГБ (рекомендуется 4 ГБ)</li>
-<li>400 МБ свободного места на жестком диске</li>
-<li>Не менее 1 ГБ для Android SDK, системных образов эмулятора и кэшированных файлов</li>
-<li>Экран с разрешением не менее 1280 x 800 точек</li>
-<li>Oracle® Java Development Kit (JDK) 7 </li>
-</ul>
-<p>Работа Android Studio протестирована в ОС Ubuntu® 14.04, Trusty Tahr (64-разрядная версия с поддержкой запуска
-32-разрядных приложений).</p>
-
-
-
-
-<h2 id="Other" style="clear:left">Другие варианты загрузки</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/ru/sdk/installing/adding-packages.jd b/docs/html-intl/intl/ru/sdk/installing/adding-packages.jd
deleted file mode 100644
index 19d1edd2..0000000
--- a/docs/html-intl/intl/ru/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=Добавление пакетов SDK
-
-page.tags=менеджер sdk
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-По умолчанию SDK Android включает в себя не все инструменты, которые необходимы для того, чтобы приступить к разработке приложений.
-Инструменты, платформы и другие компоненты представлены в Android SDK в виде отдельных пакетов, которые при
-необходимости можно загрузить с помощью
-<a href="{@docRoot}tools/help/sdk-manager.html">менеджера SDK Android</a>.
-Поэтому, прежде чем приступить к работе, в пакет SDK Android необходимо добавить некоторые дополнительные пакеты.</p>
-
-<p>Для добавления пакетов необходимо запустить менеджер SDK. Существует несколько способов запуска менеджера.</p>
-<ul>
- <li>В Android Studio щелкните элемент <strong>SDK Manager</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> на панели инструментов.</li>
- <li>Для тех, кто не пользуется Android Studio:
- <ul>
- <li>Windows: Дважды щелкните файл <code>SDK Manager.exe</code>, который находится в корневом каталоге пакета Android
-SDK.</li>
- <li>Mac/Linux: Откройте окно терминала и перейдите в каталог <code>tools/</code> пакета Android
-SDK, после чего выполните команду <code>android sdk</code>.</li>
- </ul>
- </li>
-</ul>
-
-<p>При первом запуске менеджера SDK по умолчанию
-выбраны всего несколько пакетов. Оставьте выбор по умолчанию, однако убедитесь в том, что в них имеется все необходимое
-для начала работы. Для этого выполните указанные ниже действия.</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">Загрузите актуальные инструменты SDK</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>Во время установки SDK Android
-необходимо как минимум загрузить актуальные инструменты и платформу Android.</p>
- <ol>
- <li>Откройте каталог Tools и выберите следующее:
- <ul>
- <li><strong>Инструменты Android SDK</strong>;</li>
- <li><strong>Инструменты платформы Android SDK</strong>;</li>
- <li><strong>Инструменты сборки Android SDK</strong> (последнюю версию).</li>
- </ul>
- </li>
- <li>Откройте первую папку Android X.X (последней версии) и выберите следующее:
- <ul>
- <li><strong>Платформа SDK</strong></li>
- <li>системный образ для эмулятора, например <br>
- <strong>ARM EABI v7a System Image</strong>.</li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">Загрузите вспомогательную библиотеку для дополнительных API-интерфейсов</h2>
-
- <div class="sidebox">
- <p>Вспомогательная библиотека требуется для следующих ОС:</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a>;</li>
- <li><a href="{@docRoot}tv/index.html">Android TV</a>;</li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a>.</li>
- </ul>
-
- <p>В ней также представлены следующие популярные API-интерфейсы:</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">панель
-навигации</a>;</li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">пролистывание представлений</a>;</li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">строка действий с обратной
-совместимостью</a>.</li>
- </ul>
- </div>
-
- <p>Во <a href="{@docRoot}tools/support-library/features.html">вспомогательной библиотеке Android</a>
-представлен широкий набор API-интерфейсов, которые совместимы с большинством версий ОС Android.</p>
-
- <p>Откройте каталог <strong>Extras (Дополнения)</strong> и выберите следующее:</p>
- <ul>
- <li><strong>Android Support Repository (Репозиторий вспомогательных библиотек Android)</strong>;</li>
- <li><strong>Вспомогательная библиотека Android</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">Загрузите службы Google Play, чтобы получить доступ к еще большему количеству API-интерфейсов</h2>
-
- <div class="sidebox">
-
- <p>API-интерфейсы служб Google Play предлагают различные возможности и службы для ваших приложений Android,
-включая следующие:</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">аутентификация пользователей</a>;</li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google Карты</a>;</li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a>.</li>
- <li><a href="{@docRoot}google/play-services/games.html">достижения и списки
-лидеров в играх</a>;</li>
- <li><a href="{@docRoot}google/play-services/index.html">а также множество других возможностей</a>.</li>
- </ul>
- </div>
-
- <p>Для разработки приложений с помощью API-интерфейсов Google вам потребуется пакет служб Google Play.</p>
- <p>Откройте каталог <strong>Extras (Дополнения)</strong> и выберите следующее:</p>
- <ul>
- <li><strong>Google Repository (Репозиторий Google)</strong>;</li>
- <li><strong>Google Play services (службы Google Play)</strong>.</li>
- </ul>
-
- <p class="note"><strong>Примечание.</strong> API-интерфейсы служб Google Play доступны не на всех устройствах
-Android, однако предлагаются на всех устройствах с доступом к магазину Google Play. Для использования
-этих API-интерфейсов в эмуляторе Android необходимо также установить системный образ <strong>API-интерфейсов Google</strong>,
-который находится в менеджере SDK в папке актуальной версии Android X.X.</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">Установите пакеты</h2>
- <p>После выбора всех необходимых пакетов можно продолжить установку.</p>
- <ol>
- <li>Нажмите кнопку <strong>Install X packages</strong>.</li>
- <li>В появившемся окне дважды щелкните имя каждого пакета, находящегося в области слева,
-чтобы принять условия лицензии для каждого из них.</li>
- <li>Нажмите кнопку <strong>Install</strong>.</li>
- </ol>
- <p>В нижней части окна менеджера SDK находится индикатор загрузки.
- <strong>Не закрывайте менеджер SDK</strong>, поскольку это приведет к отмене процесса загрузки.</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">Приступайте к созданию приложений</h2>
-
-<p>После загрузки необходимых пакетов в SDK Android вы можете приступать к созданию приложений для
-Android. По мере выхода новых инструментов и других API-интерфейсов просто запустите менеджер SDK
-и загрузите новые пакеты.</p>
-
-<p>Вот некоторые варианты того, как можно приступить к работе:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>Для новичков</h3>
-<p>Если вы делаете только первые шаги в разработке приложений Android, рекомендуем ознакомиться с основами приложений Android и обратиться к
-руководству <strong><a href="{@docRoot}training/basics/firstapp/index.html">по созданию своего первого приложения</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Создание приложений для носимых устройств</h3>
-<p>Если вы готовы приступить к созданию приложений для носимых устройств Android, ознакомьтесь с руководством по
-<strong><a href="{@docRoot}wear/preview/start.html">созданию приложений для ОС Android Wear</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Использование API-интерфейсов Google</h3>
-<p>Чтобы начать работу с API-интерфейсами Google, такими как Карты или
-службы Google Play, рекомендуем обратиться к руководству по
-<strong><a href="{@docRoot}google/play-services/setup.html">настройке служб Google
-Play</a></strong>.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html-intl/intl/vi/sdk/index.jd b/docs/html-intl/intl/vi/sdk/index.jd
deleted file mode 100644
index c4009f4..0000000
--- a/docs/html-intl/intl/vi/sdk/index.jd
+++ /dev/null
@@ -1,430 +0,0 @@
-page.title=Tải xuống Android Studio và SDK Tools
-page.tags=sdk, android studio
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=Tải xuống Android IDE chính thức và bộ công cụ cho nhà phát triển để xây dựng ứng dụng cho điện thoại, máy tính bảng, thiết bị đeo được, TV chạy Android và nhiều thiết bị khác.
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">Tải xuống</h1>
-
-<p class="sdk-terms-intro">Trước khi cài đặt Android Studio hoặc bộ công cụ SDK độc lập,
-bạn phải đồng ý với các điều khoản và điều kiện sau.</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">Điều khoản và Điều kiện</h2>
-Đây là Thỏa thuận Cấp phép cho Bộ công cụ Phát triển Phần mềm Android
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>Bạn chỉ còn vài bước nữa là được bắt đầu xây dựng ứng dụng cho Android!</p>
- <p>Trong chốc lát, bạn sẽ được chuyển hướng đến
- <a id="next-link" href="{@docRoot}sdk/installing/index.html">Cài đặt SDK Android</a>.</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">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 class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400" />
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">IDE Android chính thức</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>IDE Android Studio</li>
-<li>Bộ công cụ SDK Android</li>
-<li>Nền tảng Android 6.0 (Marshmallow)</li>
-<li>Ảnh hệ thống trình mô phỏng Android 6.0 cùng các API của Google</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-Để tải Android Studio hoặc bộ công cụ SDK độc lập, hãy truy cập <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">Yêu cầu Hệ thống</a></li>
- <li><a href="#Other">Tùy chọn Tải xuống Khác</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">Di chuyển tới Android Studio</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Tham gia Khảo sát</a></li>
-</ul>
-
-
-
-
-
-<h2 class="feature norule" >Trình chỉnh sửa mã thông minh</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Nằm ở cốt lõi của Android Studio là một trình biên tập mã thông minh có khả năng hoàn thành
- mã, dựng lại và phân tích mã nâng cao.</p>
- <p>Trình chỉnh sửa mã mạnh mẽ này sẽ giúp bạn trở thành một nhà phát triển ứng dụng Android năng suất hơn.</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">Các ví dụ mã và tích hợp GitHub</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Các trình hướng dẫn dự án mới sẽ giúp bắt đầu một dự án mới dễ hơn bao giờ hết.</p>
-
- <p>Bắt đầu các dự án bằng cách sử dụng mã mẫu cho các kiểu mẫu như ngăn kéo điều hướng và các trình tạo trang dạng xem,
- và thậm chí còn nhập được các ví dụ mã của Google từ GitHub.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Phát triển ứng dụng đa màn hình</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Xây dựng ứng dụng cho điện thoại, máy tính bảng Android, Android Wear,
- Android TV, Android Auto và Google Glass.</p>
- <p>Với Dạng xem Dự án Android mới và hỗ trợ mô-đun trong Android Studio, việc
- quản lý các dự án và tài nguyên ứng dụng trở nên dễ dàng hơn.
-</div>
-
-
-
-
-<h2 class="feature norule">Các thiết bị ảo cho tất cả hình dạng và kích cỡ</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio được cấu hình sẵn cùng một ảnh trình mô phỏng được tối ưu hóa.</p>
- <p>Trình quản lý Thiết bị Ảo được cập nhật và hợp lý hoá sẽ cung cấp
- các cấu hình thiết bị định nghĩa sẵn cho các thiết bị Android thông thường.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-Phát triển xây dựng Android bằng Gradle</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Tạo nhiều tệp APK cho ứng dụng Android của bạn với các tính năng khác nhau bằng cách sử dụng cùng dự án.</p>
- <p>Quản lý phụ thuộc của ứng dụng bằng Maven.</p>
- <p>Xây dựng APK từ Android Studio hoặc dòng lệnh.</p>
-</div>
-
-
-
-
-<h2 class="feature norule">Tìm hiểu thêm về Android Studio</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>Xây dựng Phiên bản Cộng đồng IntelliJ IDEA, IDE Java phổ biến của JetBrains.</li>
- <li>Hệ thống xây dựng linh hoạt dựa trên Gradle.</li>
- <li>Xây dựng các biến thể và khởi tạo nhiều APK.</li>
- <li>Hỗ trợ mẫu mở rộng cho các Dịch vụ của Google và các loại thiết bị khác nhau.</li>
- <li>Trình chỉnh sửa bố trí phong phú hỗ trợ chỉnh sửa chủ đề.</li>
- <li>Bộ công cụ Lint để giải quyết các vấn đề về hiệu năng, khả năng sử dụng, tính tương thích với phiên bản và các vấn đề khác.</li>
- <li>ProGuard và các khả năng ký ứng dụng.</li>
- <li>Hỗ trợ tích hợp cho Nền tảng Đám mây của Google, giúp dễ dàng tích hợp Google Cloud
- Nhắn tin và Công cụ Ứng dụng.</li>
- </ul>
-
-<p style="margin:0">
-Để biết thêm chi tiết về các tính năng có sẵn trong Android Studio,
-hãy đọc hướng dẫn <a href="{@docRoot}tools/studio/index.html">Nội dung Cơ bản về Android Studio</a>.</p>
-</div>
-
-
-<p>Nếu bạn đang sử dụng Eclipse với ADT, hãy lưu ý rằng hiện Android Studio là IDE chính thức
-cho Android, vì thế bạn nên di chuyển sang Android Studio để nhận tất cả cập nhật
-IDE mới nhất. Để được trợ giúp về di chuyển các dự án,
-hãy xem phần <a href="{@docRoot}sdk/installing/migrate.html">Di chuyển sang Android
-Studio</a>.</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">Yêu cầu Hệ thống</h2>
-
-<h3>Windows</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003 (32 hoặc 64-bit)</li>
-<li>Tối thiểu 2 GB RAM, khuyến nghị 4 GB RAM</li>
-<li>Dung lượng trống đĩa cứng 400 MB</li>
-<li>Ít nhất 1 GB cho SDK Android, các ảnh hệ thống trình mô phỏng và bộ đệm ẩn</li>
-<li>Độ phân giải màn hình tối thiểu 1280 x 800</li>
-<li>Java Development Kit (JDK) 7 </li>
-<li>Tùy chọn dành cho trình mô phỏng tăng tốc: Bộ xử lý Intel® có hỗ trợ Intel® VT-x, Intel® EM64T
-(Intel® 64), và tính năng Execute Disable (XD) Bit</li>
-</ul>
-
-
-<h3>Mac OS X</h3>
-
-<ul>
-<li>Mac® OS X® 10.8.5 hoặc cao hơn, lên tới 10.9 (Mavericks)</li>
-<li>Tối thiểu 2 GB RAM, khuyến nghị 4 GB RAM</li>
-<li>Dung lượng trống đĩa cứng 400 MB</li>
-<li>Ít nhất 1 GB cho SDK Android, các ảnh hệ thống trình mô phỏng và bộ đệm ẩn</li>
-<li>Độ phân giải màn hình tối thiểu 1280 x 800</li>
-<li>Java Runtime Environment (JRE) 6</li>
-<li>Java Development Kit (JDK) 7</li>
-<li>Tùy chọn dành cho trình mô phỏng tăng tốc: Bộ xử lý Intel® có hỗ trợ Intel® VT-x, Intel® EM64T
-(Intel® 64), và tính năng Execute Disable (XD) Bit</li>
-</ul>
-
-<p>Trên Mac OS, hãy chạy Android Studio bằng Java Runtime Environment (JRE) 6 để dựng
-phông chữ tối ưu. Khi đó, bạn có thể cấu hình dự án của mình để sử dụng Java Development Kit (JDK) 6 hoặc JDK 7.</p>
-
-
-
-<h3>Linux</h3>
-
-<ul>
-<li>Máy tính bàn GNOME hoặc KDE</li>
-<li>GNU C Library (glibc) 2.15 hoặc mới hơn</li>
-<li>Tối thiểu 2 GB RAM, khuyến nghị 4 GB RAM</li>
-<li>Dung lượng trống đĩa cứng 400 MB</li>
-<li>Ít nhất 1 GB cho SDK Android, các ảnh hệ thống trình mô phỏng và bộ đệm ẩn</li>
-<li>Độ phân giải màn hình tối thiểu 1280 x 800</li>
-<li>Oracle® Java Development Kit (JDK) 7 </li>
-</ul>
-<p>Được thử nghiệm trên Ubuntu® 14.04, Trusty Tahr (có khả năng phân phối 64-bit khi chạy các ứng dụng
-32-bit).</p>
-
-
-
-
-<h2 id="Other" style="clear:left">Tùy chọn Tải xuống Khác</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/vi/sdk/installing/adding-packages.jd b/docs/html-intl/intl/vi/sdk/installing/adding-packages.jd
deleted file mode 100644
index 1c9072c..0000000
--- a/docs/html-intl/intl/vi/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=Thêm Gói SDK
-
-page.tags=trình quản lý sdk
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-Theo mặc định, SDK Android không bao gồm mọi thứ bạn cần để bắt đầu phát triển.
-SDK chia những công cụ, nền tảng và các thành phần khác vào các gói mà bạn có thể
-tải xuống nếu cần bằng cách sử dụng
-<a href="{@docRoot}tools/help/sdk-manager.html">Trình quản lý SDK Android</a>.
-Vì vậy, trước khi có thể bắt đầu, có một vài gói bạn nên thêm vào SDK Android của mình.</p>
-
-<p>Để bắt đầu thêm gói, hãy khởi chạy Trình quản lý SDK Android bằng một trong những cách sau:</p>
-<ul>
- <li>Trong Android Studio, nhấp vào <strong>Trình quản lý SDK</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> ở thanh công cụ.</li>
- <li>Nếu bạn không đang sử dụng Android Studio:
- <ul>
- <li>Windows: Bấm đúp tệp <code>SDK Manager.exe</code> ở gốc của thư mục SDK
- Android.</li>
- <li>Mac/Linux: Mở một terminal và điều hướng đến thư mục <code>tools/</code> ở vị trí
- nơi cài đặt SDK Android, rồi chạy <code>android sdk</code>.</li>
- </ul>
- </li>
-</ul>
-
-<p>Khi bạn mở Trình quản lý SDK lần đầu, một vài gói sẽ được chọn
-theo mặc định. Để nguyên những gói được chọn này, nhưng hãy chắc chắn bạn có mọi thứ mình cần
-để bắt đầu bằng cách làm theo những bước sau:</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">Tải công cụ SDK mới nhất</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>Tối thiểu khi thiết đặt SDK Android,
- bạn nên tải xuống những công cụ và nền tảng Android mới nhất:</p>
- <ol>
- <li>Mở thư mục Tools và chọn:
- <ul>
- <li><strong>Công cụ SDK Android</strong></li>
- <li><strong>Công cụ Nền tảng SDK Android</strong></li>
- <li><strong>Công cụ Xây dựng SDK Android</strong> (phiên bản mới nhất)</li>
- </ul>
- </li>
- <li>Mở thư mục Android X.X đầu tiên (phiên bản mới nhất) và chọn:
- <ul>
- <li><strong>Nền tảng SDK</strong></li>
- <li>Một ảnh hệ thống cho trình mô phỏng, chẳng hạn như <br>
- <strong>Ảnh Hệ thống ARM EABI v7a</strong></li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">Tải thư viện hỗ trợ cho các API bổ sung</h2>
-
- <div class="sidebox">
- <p>Phải có thư viện hỗ trợ đối với:</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
- <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- </ul>
-
- <p>Nó cũng cung cấp những API phổ biến sau:</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Ngăn kéo
- điều hướng</a></li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Chế độ xem trượt nhanh</a></li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Thanh hành động
- tương thích ngược</a></li>
- </ul>
- </div>
-
- <p><a href="{@docRoot}tools/support-library/features.html">Thư viện Hỗ trợ Android</a>
- cung cấp một tập API mở rộng tương thích với hầu hết các phiên bản của Android.</p>
-
- <p>Mở thư mục <strong>Extras</strong> và chọn:</p>
- <ul>
- <li><strong>Kho Hỗ trợ Android</strong></li>
- <li><strong>Thư viện Hỗ trợ Android</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">Tải dịch vụ Google Play để có nhiều API hơn nữa</h2>
-
- <div class="sidebox">
-
- <p>Các API dịch vụ Google Play sẽ cung cấp nhiều tính năng và dịch vụ cho các ứng dụng Android
- của bạn, chẳng hạn như:</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">Xác thực người dùng</a></li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- <li><a href="{@docRoot}google/play-services/games.html">Thành tích và bảng xếp hạng
- trò chơi</a></li>
- <li><a href="{@docRoot}google/play-services/index.html">Và nhiều hơn nữa</a></li>
- </ul>
- </div>
-
- <p>Để phát triển bằng các API của Google, bạn cần gói dịch vụ Google Play.</p>
- <p>Mở thư mục <strong>Extras</strong> và chọn:</p>
- <ul>
- <li><strong>Kho Google</strong></li>
- <li><strong>Dịch vụ Google Play</strong></li>
- </ul>
-
- <p class="note"><strong>Lưu ý:</strong> Các API dịch vụ Google Play không có sẵn trên tất cả
- thiết bị dựa trên nền tảng Android, nhưng có sẵn trên tất cả thiết bị có Google Play Store. Để sử dụng những
- API này trong trình mô phỏng Android, bạn cũng phải cài đặt ảnh hệ thống <strong>Google API</strong>
- từ thư mục Android X.X mới nhất trong Trình quản lý SDK.</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">Cài đặt gói</h2>
- <p>Sau khi bạn đã chọn tất cả gói mong muốn, hãy tiếp tục cài đặt:</p>
- <ol>
- <li>Bấm <strong>Cài đặt X gói</strong>.</li>
- <li>Trong cửa sổ tiếp theo, bấm đúp vào tên của từng gói ở bên trái
- để chấp nhận thỏa thuận cấp phép cho từng gói.</li>
- <li>Bấm <strong>Cài đặt</strong>.</li>
- </ol>
- <p>Tiến trình tải xuống được hiện ở dưới cùng của cửa sổ Trình quản lý SDK.
- <strong>Không được thoát Trình quản lý SDK</strong> nếu không nó sẽ hủy bỏ việc tải xuống.</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">Xây dựng một thứ gì đó!</h2>
-
-<p>Với những gói trên có trong SDK Android của bạn, giờ bạn đã sẵn sàng để xây dựng ứng dụng
-cho Android. Khi có sẵn các công cụ mới và API khác, chỉ cần khởi chạy Trình quản lý SDK
- để tải xuống các gói mới cho SDK của bạn.</p>
-
-<p>Sau đây là một vài tùy chọn về cách bạn nên tiến hành:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>Bắt đầu</h3>
-<p>Nếu bạn mới làm quen với phát triển Android, hãy tìm hiểu những nội dung cơ bản của ứng dụng Androi bằng cách làm theo
-hướng dẫn <strong><a href="{@docRoot}training/basics/firstapp/index.html">Xây dựng Ứng dụng Đầu tiên của bạn</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Xây dựng cho thiết bị đeo được</h3>
-<p>Nếu bạn sẵn sàng bắt đầu xây dựng ứng dụng cho thiết bị đeo được Android, hãy xem hướng dẫn
-<strong><a href="{@docRoot}wear/preview/start.html">Xây dựng Ứng dụng cho Android Wear</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Sử dụng API của Google</h3>
-<p>Để bắt đầu sử dụng các API của Google, chẳng hạn như các dịch vụ Bản đồ hoặc
-Chơi Trò chơi, hãy xem hướng dẫn
-<strong><a href="{@docRoot}google/play-services/setup.html">Thiết đặt Dịch vụ Google Play
-</a></strong>.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html-intl/intl/zh-cn/sdk/index.jd b/docs/html-intl/intl/zh-cn/sdk/index.jd
deleted file mode 100644
index 4de6022..0000000
--- a/docs/html-intl/intl/zh-cn/sdk/index.jd
+++ /dev/null
@@ -1,429 +0,0 @@
-page.title=下载 Android Studio 和 SDK 工具
-page.tags=sdk, android studio
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=下载官方 Android IDE 和开发者工具,构建适用于 Android 手机、平板电脑、可穿戴设备、电视等设备的应用。
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">下载</h1>
-
-<p class="sdk-terms-intro">在安装 Android Studio 或独立 SDK
-工具之前,您必须同意下列条款和条件。</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">条款和条件</h2>
-本协议是 Android 软件开发工具包许可协议
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>您距离构建 Android 应用只有几步之遥!</p>
- <p>系统很快就会将您重定向到
-<a id="next-link" href="{@docRoot}sdk/installing/index.html">安装 Android SDK</a>。</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">我已阅读并同意上述条款和条件</label>
-</p>
-<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-</div>
-
-
-</div><!-- end TOS -->
-
-
-
-
-
-
-<div id="landing">
-
-<div class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">官方 Android IDE</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Android Studio IDE</li>
-<li>Android SDK 工具</li>
-<li>Android 6.0 (Marshmallow) 平台</li>
-<li>Android 6.0 模拟器系统映像(附带 Google API)</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-如需获得 Android Studio 或独立 SDK 工具,请访问 <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">系统要求</a></li>
- <li><a href="#Other">其他下载选项</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">迁移至 Android Studio</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">参加调查</a></li>
-</ul>
-
-
-
-
-<h2 class="feature norule" >智能代码编辑器</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio 的核心是一个智能代码编辑器,可进行高级代码完成、重构和代码分析。
-</p>
- <p>这款功能强大的代码编辑器可帮助您成为更高产的 Android 应用开发者。</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">代码模板和 GitHub 集成</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>新项目向导让开始一个新项目变得前所未有的简单。</p>
-
- <p>可使用适用于不同模式(如抽屉式导航栏和视图分页器)的模板代码开始项目,甚至可以从 GitHub
-导入 Google 代码示例。</p>
-</div>
-
-
-
-
-<h2 class="feature norule">多屏幕应用开发</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>构建适用于 Android 手机、平板电脑、Android Wear、Android TV、Android Auto
-以及 Google Glass 的应用。</p>
- <p>Android Studio 内全新的 Android
-项目视图和模块支持让应用项目和资源管理变得更加轻松。
-</div>
-
-
-
-
-<h2 class="feature norule">用于模拟所有形状和尺寸的虚拟设备</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio 预先配置了经过优化的模拟器映像。</p>
- <p>经过更新和精简的虚拟设备管理器可为常见 Android
-设备提供预定义设备配置文件。</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-Android 版本借助 Gradle 演进</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>使用同一项目为您的 Android 应用创建多个具有不同功能的 APK。</p>
- <p>使用 Maven 管理应用依赖项。</p>
- <p>使用 Android Studio 或命令行构建 APK。</p>
-</div>
-
-
-
-
-<h2 class="feature norule">有关 Android Studio 的详细信息</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>这款由 JetBrains 推出并广受欢迎的 Java IDE 以 IntelliJ IDEA Community Edition 为基础构建</li>
- <li>基于 Gradle 的灵活构建系统</li>
- <li>构建变体和多 APK 生成</li>
- <li>为 Google 服务和各种设备类型提供扩展模板支持</li>
- <li>支持主题编辑的富布局编辑器</li>
- <li>可捕捉性能、可用性、版本兼容性以及其他问题的 Lint 工具</li>
- <li>ProGuard 和应用签名功能</li>
- <li>内置对 Google 云平台的支持,可轻松集成 Google Cloud
- Messaging 和应用引擎</li>
- </ul>
-
-<p style="margin:0">
-有关 Android Studio
-所提供功能的更多详细信息,请阅读 <a href="{@docRoot}tools/studio/index.html">Android Studio 基础知识</a>指南。</p>
-</div>
-
-
-<p>如果您一直在使用附带 ADT 的 Eclipse,请注意 Android Studio 现已成为 Android
-的官方 IDE,因此您应迁移至 Android Studio,以获得所有最新的 IDE
-更新。如果在迁移项目时需要帮助,请参阅<a href="{@docRoot}sdk/installing/migrate.html">迁移至
-Android
-Studio</a>。</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">系统要求</h2>
-
-<h3>Windows</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003(32 位或 64 位)</li>
-<li>最低:2GB RAM,推荐:4GB RAM</li>
-<li>400MB 硬盘空间</li>
-<li>Android SDK、模拟器系统映像及缓存至少需要 1GB 空间</li>
-<li>最低屏幕分辨率:1280 x 800</li>
-<li>Java 开发工具包 (JDK) 7 </li>
-<li>用于加速模拟器的选件:支持 Intel® VT-x、Intel® EM64T (Intel® 64) 和禁止执行
-(XD) 位功能的 Intel® 处理器</li>
-</ul>
-
-
-<h3>Mac OS X</h3>
-
-<ul>
-<li>Mac® OS X® 10.8.5 或更高版本,直至 10.9 (Mavericks)</li>
-<li>最低:2GB RAM,推荐:4GB RAM</li>
-<li>400MB 硬盘空间</li>
-<li>Android SDK、模拟器系统映像及缓存至少需要 1GB 空间</li>
-<li>最低屏幕分辨率:1280 x 800</li>
-<li>Java 运行组件环境 (JRE) 6</li>
-<li>Java 开发工具包 (JDK) 7</li>
-<li>用于加速模拟器的选件:支持 Intel® VT-x、Intel® EM64T (Intel® 64)
-和禁止执行 (XD) 位功能的 Intel® 处理器</li>
-</ul>
-
-<p>在 Mac OS 上运行附带 Java 运行组件环境 (JRE) 6 的 Android Studio
-可优化字体渲染。您随后可将您的项目配置为使用 Java 开发工具包 (JDK) 6 或 JDK 7。</p>
-
-
-
-<h3>Linux</h3>
-
-<ul>
-<li>GNU 网络对象模型环境或 KDE 桌面</li>
-<li>GNU C Library (glibc) 2.15 或更高版本</li>
-<li>最低:2GB RAM,推荐:4GB RAM</li>
-<li>400MB 硬盘空间</li>
-<li>Android SDK、模拟器系统映像及缓存至少需要 1GB 空间</li>
-<li>最低屏幕分辨率:1280 x 800</li>
-<li>Oracle® Java 开发工具包 (JDK) 7 </li>
-</ul>
-<p>已在
-Ubuntu® 14.04 (Trusty Tahr)(能够运行 32 位应用的 64 位分发)上进行了测试。</p>
-
-
-
-
-<h2 id="Other" style="clear:left">其他下载选项</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/zh-cn/sdk/installing/adding-packages.jd b/docs/html-intl/intl/zh-cn/sdk/installing/adding-packages.jd
deleted file mode 100644
index 4d5d7ec..0000000
--- a/docs/html-intl/intl/zh-cn/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=添加 SDK 软件包
-
-page.tags=sdk 管理器
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-默认情况下,Android SDK
-并不包括您着手开发所需的一切内容。SDK
-将工具、平台和其他组件分成若干个软件包,您可以通过
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK 管理器</a>根据需要下载这些软件包。因此您需要先为 Android SDK
-添加几个软件包,然后才能着手开发。</p>
-
-<p>要添加软件包,请先通过下列方式之一启动 Android SDK 管理器:</p>
-<ul>
- <li>在 Android Studio 中,点击工具栏中的 <strong>SDK 管理器</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" />。</li>
- <li>如果您未使用 Android Studio:
- <ul>
- <li>Windows:双击 Android
- SDK 根目录中的 <code>SDK Manager.exe</code> 文件。</li>
- <li>Mac/Linux:打开一个终端,导航到 Android SDK 安装
-位置的 <code>tools/</code> 目录,然后执行 <code>android sdk</code>。</li>
- </ul>
- </li>
-</ul>
-
-<p>当您首次打开 SDK
-管理器时,有几个软件包默认处于选定状态。保持它们的选定状态,但务必按照下列步骤获得着手开发所需的一切内容:
-</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">获得最新的 SDK 工具</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>在安装 Android SDK 时,
-您至少应下载最新工具和 Android 平台:</p>
- <ol>
- <li>打开 Tools 目录并选择:
- <ul>
- <li><strong>Android SDK Tools</strong></li>
- <li><strong>Android SDK Platform-tools</strong></li>
- <li><strong>Android SDK Build-tools</strong>(最高版本)</li>
- </ul>
- </li>
- <li>打开第一个 Android X.X 文件夹(最新版本)并选择:
- <ul>
- <li><strong>SDK Platform</strong></li>
- <li>模拟器系统映像,例如 <br>
- <strong>ARM EABI v7a System Image</strong></li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">获得其他 API 的支持库</h2>
-
- <div class="sidebox">
- <p>以下项目需要支持库:</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
- <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- </ul>
-
- <p>它还提供了以下受欢迎的 API:</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Navigation
- drawer</a></li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Swipe views</a></li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Backward-compatible
- action bar</a></li>
- </ul>
- </div>
-
- <p><a href="{@docRoot}tools/support-library/features.html">Android 支持库</a>提供了一组丰富的 API,可兼容大多数版本的 Android。
-</p>
-
- <p>打开 <strong>Extras</strong> 目录并选择:</p>
- <ul>
- <li><strong>Android Support Repository</strong></li>
- <li><strong>Android Support Library</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">为更多 API 获得 Google Play 服务</h2>
-
- <div class="sidebox">
-
- <p>Google Play services API 为您的 Android
- 应用提供了各种功能和服务,例如:</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">用户身份验证</a></li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google 地图</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- <li><a href="{@docRoot}google/play-services/games.html">游戏成就和
-排行榜</a></li>
- <li><a href="{@docRoot}google/play-services/index.html">更多其他功能</a></li>
- </ul>
- </div>
-
- <p>要使用 Google API 进行开发,您需要 Google Play 服务包:</p>
- <p>打开 <strong>Extras</strong> 目录并选择:</p>
- <ul>
- <li><strong>Google Repository</strong></li>
- <li><strong>Google Play services</strong></li>
- </ul>
-
- <p class="note"><strong>注:</strong>并非所有采用
- Android 技术的设备上都提供 Google Play Services API,但所有安装了 Google Play 商店的设备均提供这些 API。要在 Android 模拟器中使用这些
- API,您还必须安装 SDK 管理器中最新 Android X.X 目录内的 <strong>Google APIs</strong>
- 系统映像。</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">安装软件包</h2>
- <p>选择想要安装的所有软件包后,即可继续执行安装:</p>
- <ol>
- <li>点击 <strong>Install X packages</strong>。</li>
- <li>在下一个窗口中,双击左侧的每个软件包名称,
-以接受各软件包的许可协议。</li>
- <li>点击 <strong>Install</strong>。</li>
- </ol>
- <p>SDK 管理器窗口底部显示下载进度。
- <strong>切勿退出 SDK 管理器</strong>,否则它会取消下载。</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">赶快着手开发吧!</h2>
-
-<p>现在您的 Android SDK 已包含上述软件包,您随时可以着手开发
- Android 应用。当新工具以及其他 API 推出时,只需启动 SDK 管理器
-,为您的 SDK 下载新软件包。</p>
-
-<p>以下几个方案可为您的开发工作提供指导:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>入门指南</h3>
-<p>如果您是第一次开发 Android
-应用,请按照<strong><a href="{@docRoot}training/basics/firstapp/index.html">开发您的第一款应用</a></strong>指南了解 Android 应用的基础知识。</p>
-
-</div>
-<div class="col-4 box">
-<h3>开发穿戴式设备应用</h3>
-<p>如果您已准备好着手开发 Android
-穿戴式设备应用,请参阅<strong><a href="{@docRoot}wear/preview/start.html">开发 Android Wear 应用</a></strong>。</p>
-
-</div>
-<div class="col-4 box">
-<h3>使用 Google API</h3>
-<p>要开始使用 Google API,例如 Google Maps API 或 Google
-Play Game Services
-API,请参阅<strong><a href="{@docRoot}google/play-services/setup.html">设置 Google Play
-服务</a></strong>指南。</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html-intl/intl/zh-cn/tools/help/proguard.jd b/docs/html-intl/intl/zh-cn/tools/help/proguard.jd
deleted file mode 100644
index 0e8cc7a..0000000
--- a/docs/html-intl/intl/zh-cn/tools/help/proguard.jd
+++ /dev/null
@@ -1,133 +0,0 @@
-page.title=ProGuard
-parent.title=Tools
-parent.link=index.html
-page.type=工具
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>本文内容</h2>
-
- <ol>
- <li><a href="#enabling">启用 ProGuard</a></li>
-
- <li><a href="#configuring">配置 ProGuard</a></li>
-
- <li>
- <a href="#decoding">解码混淆后的堆栈跟踪信息</a>
-
- <ol>
- <li><a href="#considerations">调试已发布应用时应注意的事项</a></li>
- </ol>
- </li>
- </ol>
-
- <h2>另请参见</h2>
-
- <ol>
- <li>
- <a href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/introduction.html">ProGuard 手册 »</a>
- </li>
- <li>
- <a href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/retrace/introduction.html">ProGuard ReTrace 手册 »</a>
- </li>
- </ol>
- </div>
- </div>
-
- <p>ProGuard 工具通过移除无用的代码以及使用语义隐晦的名称来重命名类、字段和方法,从而达到压缩、优化和混淆代码的目的。最终您将获得一个较小的 <code>.apk</code> 文件,此文件更难于进行反向工程。由于 ProGuard 会使应用更难于进行反向工程,因此当应用使用对安全性要求极高的功能时(例如,当您<a href="{@docRoot}google/play/licensing/index.html">向应用授予许可</a>时),您必须使用此工具。</p>
-
- <p>ProGuard 已集成到 Android 构建系统,所以您无需手动调用此工具。只有当您在发布模式下构建应用时,ProGuard 才会运行,因此当您在调试模式下构建应用时,就无需处理混淆后的代码。是否运行 ProGuard 完全由您决定,但我们强烈建议您运行该工具。</p>
-
- <p>本文介绍如何启用和配置 ProGuard,以及如何使用 <code>retrace</code> 工具解码混淆后的堆栈跟踪信息。</p>
-
- <h2 id="enabling">启用 ProGuard</h2>
-
- <p>当您创建 Android 项目时,系统会在该项目的根目录中自动生成一个 <code>proguard.cfg</code> 文件。此文件将定义 ProGuard 会如何优化和混淆代码,因此您必须了解如何根据自己的需求对其进行自定义。默认的配置文件只涵盖一般的使用情形,因此您极有可能需要根据自己的需求对其进行修改。请参阅下文<a href="#configuring">配置 ProGuard</a> 这一部分,了解如何自定义 ProGuard 配置文件。</p>
-
- <p>要启用 ProGuard,让其作为 Ant 或 Eclipse 构建环境的一部分运行,请在 <code><project_root>/project.properties</code> 文件中设置 <code>proguard.config</code> 属性。该路径可以是绝对路径,也可以是项目根目录的相对路径。</p>
-
- <p class="note"><strong>注意</strong>:在使用 Android Studio 时,您必须将 Proguard 添加到 <code>gradle.build</code> 文件的构建类型中。有关详情,请参阅 <a href="http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard">Gradle 插件用户指南</a>。
-
- <p>如果您将 <code>proguard.cfg</code> 文件留在默认位置(项目的根目录中),则可以按如下格式指定其位置:</p>
- <pre class="no-pretty-print">
- proguard.config=proguard.cfg
- </pre>
- <p>
- 您也可以将此文件移到任何所需的位置,然后按如下格式指定其绝对路径:
- </p>
- <pre class="no-pretty-print">
- proguard.config=/path/to/proguard.cfg
- </pre>
-
-
- <p>当您在发布模式下构建应用时,无论是通过运行 <code>ant release</code> 还是通过使用 Eclipse 中的“导出向导”,构建系统都会自动检查是否设置了 <code>proguard.config</code> 属性。<em></em>如果已设置该属性,ProGuard 会自动处理应用的字节码,然后再将所有内容打包到 <code>.apk</code> 文件中。在调试模式下进行构建时之所以不调用 ProGuard,是因为该工具会加大调试难度。</p>
-
- <p>ProGuard 在运行后会输出以下文件:</p>
-
- <dl>
- <dt><code>dump.txt</code></dt>
- <dd>描述 <code>.apk</code> 文件中所有类文件的内部结构</dd>
-
- <dt><code>mapping.txt</code></dt>
- <dd>列出原始与混淆后的类、方法和字段名称之间的对应关系。如果您从发布版本收到问题报告,则必须使用此文件,因为通过它可将混淆后的堆栈跟踪信息转换为原始的类、方法和成员名称。有关详情,请参阅<a href="#decoding">解码混淆后的堆栈跟踪信息</a>。</dd>
-
- <dt><code>seeds.txt</code></dt>
- <dd>列出未混淆的类和成员</dd>
-
- <dt><code>usage.txt</code></dt>
- <dd>列出从 <code>.apk</code> 删除的代码</dd>
- </dl>
-
- <p>这些文件都位于以下目录中:</p>
-
- <ul>
- <li><code><project_root>/bin/proguard</code>(如果您使用的是 Ant)。</li>
-
- <li><code><project_root>/proguard</code>(如果您使用的是 Eclipse)。</li>
- </ul>
-
-
- <p class="caution"><strong>注意</strong>:每当您在发布模式下构建版本时,这些文件都会被 ProGuard 最新生成的文件覆盖。请在每次发布应用时为这些文件保存一份副本,以便反混淆来自发布版本的问题报告。如需详细了解为何要保存这些文件,请参阅<a href="#considerations">调试已发布应用时应注意的事项</a>。
- </p>
-
- <h2 id="configuring">配置 ProGuard</h2>
-
- <p>在某些情况下,<code>proguard.cfg</code> 文件中的默认配置足以满足您的需求。不过,在很多情况下,ProGuard 很难做出正确分析,因此可能会移除它认为无用而实际上您的应用却需要的代码。部分示例如下:</p>
-
- <ul>
- <li>一个只在 <code>AndroidManifest.xml</code> 文件中引用的类</li>
-
- <li>一个通过 JNI 调用的方法</li>
-
- <li>动态引用的字段和方法</li>
- </ul>
-
- <p>默认的 <code>proguard.cfg</code> 文件旨在涵盖一般的使用情形,但您可能会遇到异常情况,例如 <code>ClassNotFoundException</code>(此异常情况会在 ProGuard 删除您的应用调用的整个类时发生)。</p>
-
- <p>您可以通过在 <code>proguard.cfg</code> 文件中添加一个 <code>-keep</code> 行,来修复因 ProGuard 在删除代码而造成的错误。例如:</p>
- <pre>
- -keep public class <MyClass>
- </pre>
-
- <p>在使用 <code>-keep</code> 选项时,您既有许多选择也有不少需要注意的方面,因此我们强烈建议您阅读 <a href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/introduction.html">ProGuard 手册</a>,详细了解如何自定义您的配置文件。该手册中的“Keep 选项概述”和“示例”部分尤其有用;<em></em><em></em><a href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/troubleshooting.html">问题排查</a>部分则概述了在 ProGuard 删除代码后您可能会遇到的其他常见问题。</p>
-
- <h2 id="decoding">解码混淆后的堆栈跟踪信息</h2>
-
- <p>当混淆后的代码输出堆栈跟踪信息时,方法名称会被混淆,即便仍能进行调试,难度也会很大。幸运的是,ProGuard 在每次运行时都会输出一个 <code><project_root>/bin/proguard/mapping.txt</code> 文件,其中会显示与混淆后的名称相对应的原始的类、方法和字段名称。</p>
-
- <p>Windows 上的 <code>retrace.bat</code> 脚本以及 Linux 或 Mac OS X 上的 <code>retrace.sh</code> 脚本可以将混淆后的堆栈跟踪信息转换成可读文件,此文件位于 <code><sdk_root>/tools/proguard/</code> 目录中。执行 <code>retrace</code> 工具的语法如下:</p>
- <pre>retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]</pre>
- <p>例如:</p>
-
- <pre>retrace.bat -verbose mapping.txt obfuscated_trace.txt</pre>
-
- <p>如果您不为“<stacktrace_file>”指定值,<code>retrace</code> 工具会从标准输入中读取。<em></em></p>
-
- <h3 id="considerations">调试已发布应用时应注意的事项</h3>
-
- <p>每次向用户发布应用时,都请保存所发布版本的 <code>mapping.txt</code> 文件。这样一来,如果用户遇到问题,并向您提交混淆后的堆栈跟踪信息,您就可以利用为每个发布版本保存的 <code>mapping.txt</code> 文件副本调试问题。每当您构建发布版本时,项目的 <code>mapping.txt</code> 文件都会被覆盖,因此您必须谨慎保存所需的版本。</p>
-
- <p>例如,假设您发布了某个应用,并继续开发该应用的新功能,以便将来发布新版本。之后不久您使用 ProGuard 构建发布版本。此版本覆盖了之前的 <code>mapping.txt</code> 文件。之后,某位用户提交了问题报告,其中包含来自当前已发布的应用的堆栈跟踪信息。但您已无法调试该用户的堆栈跟踪信息,因为与该用户设备上的版本相关联的 <code>mapping.txt</code> 文件已被覆盖。除此之外,其他一些情况也可能会导致您的 <code>mapping.txt</code> 文件被覆盖。因此,如果您预计需要进行调试,请务必在每次发布应用时都保存一份副本。</p>
-
- <p>如何保存 <code>mapping.txt</code> 文件由您自行决定。例如,您可以将其重命名以使其名称中包含版本号,也可以对其(连同源代码一起)进行版本管理。</p>
diff --git a/docs/html-intl/intl/zh-cn/tools/publishing/preparing.jd b/docs/html-intl/intl/zh-cn/tools/publishing/preparing.jd
deleted file mode 100644
index 46938b9..0000000
--- a/docs/html-intl/intl/zh-cn/tools/publishing/preparing.jd
+++ /dev/null
@@ -1,186 +0,0 @@
-page.title=准备发布
-page.type=工具
-
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>概述</h2>
- <ul>
- <li>了解发布应用需要哪些资源。</li>
- <li>了解如何配置和构建应用以进行发布。</li>
- <li>了解发布应用的最佳做法。</li>
- </ul>
- <h2>本文内容</h2>
- <ol>
- <li><a href="#publishing-intro">简介</a></li>
- <li><a href="#publishing-gather">收集材料和资源</a></li>
- <li><a href="#publishing-configure">配置应用</a></li>
- <li><a href="#publishing-build">构建应用</a></li>
- <li><a href="#publishing-resources">准备外部服务器和资源</a></li>
- <li><a href="#publishing-test">测试应用以进行发布</a></li>
- </ol>
- <h2>另请参见</h2>
- <ol>
- <li><a href="{@docRoot}tools/publishing/publishing_overview.html">发布概述</a></li>
- <li><a href="{@docRoot}tools/publishing/app-signing.html">为应用签名</a></li>
- <li><a href="{@docRoot}distribute/tools/launch-checklist.html">Google Play 发布检查清单</a></li>
- </ol>
- </div>
- </div>
-
- <p>在将您的 Android 应用分发给用户之前,您需要先完成准备工作。对于所有 Android 应用,准备流程都是一项必须完成的<a href="{@docRoot}tools/workflow/index.html">开发任务</a>,也是发布流程中的第一步(参见图 1)。</p>
-
- <p>当准备应用以进行发布时,您需要配置、构建并测试应用的发布版本。配置任务相当简单,涉及完成代码清理和代码修改这两项基本任务,从而达到优化应用的目的。构建流程与调试构建流程相似,可以使用 JDK 和 Android SDK 工具完成。测试任务就是做最终检查,以确保您的应用能在实际环境下正常运行。准备好要发布的应用后,您将获得一个已签名的 <code>.apk</code> 文件。您可以直接将该文件分发给用户,也可以通过 Google Play 等应用市场进行分发。</p>
-
- <p>本文总结了您在准备应用以进行发布时需执行的几大任务。这些任务适用于所有 Android 应用,无论这些应用采用什么方式发布或分发给用户。如果您要通过 Google Play 发布应用,则还应查看 <a href="{@docRoot}distribute/tools/launch-checklist.html">Google Play 发布检查清单</a>,以确保您要发布的应用满足 Google Play 的所有要求。</p>
-
- <p class="note"><strong>注意</strong>:在您执行本文所述任务之前,最好确保您的应用符合针对功能、性能和稳定性的所有发布标准。</p>
-
- <img src="{@docRoot}images/publishing/publishing_overview_prep.png" alt="显示发布流程在整个开发流程中的位置" height="190" id="figure1" />
- <p class="img-caption">
- <strong>图 1.</strong> 准备发布是一项必须完成的<a href="{@docRoot}tools/workflow/index.html">开发任务</a>,也是发布流程中的第一步。
- </p>
-
- <h2 id="publishing-intro">简介</h2>
-
- <p>为了向用户发布应用,您需要先创建发布版应用包,以供用户在其 Android 设备上安装和运行。发布版应用包与调试 <code>.apk</code> 文件中包含的组件相同(经过编译的源代码、资源、清单文件等),使用的构建工具也相同。不过,与调试 <code>.apk</code> 文件不同的是,发布版 <code>.apk</code> 文件已使用您自己的证书签名且使用 Zipalign 工具进行了优化。</p>
-
- <div class="figure" style="width:331px">
- <img src="{@docRoot}images/publishing/publishing_preparing.png" alt="显示准备应用以进行发布所需执行的五项任务" height="450" />
- <p class="img-caption">
- <strong>图 2.</strong> 要准备应用以进行发布,您需执行五大任务。
- </p>
- </div>
-
- <p>通常情况下,如果您使用 Eclipse 和 ADT 插件或 Ant 构建脚本(包含在 Android SDK 中)构建应用,可以无缝地完成签名和优化任务。例如,您可以使用 Eclipse“导出向导”一次性完成对应用的编译、签名和优化操作。如果通过命令行进行构建,您还可以配置 Ant 构建脚本来执行相同的操作。</p>
-
- <p>要准备应用以进行发布,您通常需要执行五大任务(参见图 2)。每项大任务可能包含一项或多项小任务,视您的应用发布方式而定。例如,如果您要通过 Google Play 发布应用,则可能需要在配置应用的发布版本时向清单中添加特殊的过滤规则。同样,为了满足 Google Play 发布指南的要求,您可能需要在收集发布材料时准备几张屏幕截图并撰写相关宣传文字。</p>
-
- <p>一般来说,在对应用进行了全面调试和测试后,您需要执行图 2 中列出的任务。Android SDK 中提供的几种工具可帮您测试和调试您的 Android 应用。有关详情,请参阅开发者指南中的<a href="{@docRoot}tools/debugging/index.html">调试</a>和<a href="{@docRoot}tools/testing/index.html">测试</a>这两部分。</p>
-
- <h2 id="publishing-gather">收集材料和资源</h2>
-
- <p>要开始准备应用以进行发布,您需要收集几项支持性的信息,其中至少应包含用于为应用签名的加密密钥以及应用图标。此外,您可能还需要提供最终用户许可协议。</p>
-
- <h4 id="publishing-keys">加密密钥</h4>
-
- <p>Android 系统要求安装的每个应用都必须使用应用开发者拥有的证书(即开发者用于存放私钥的证书)进行数字签名。Android 系统利用该证书来识别应用作者并在应用之间建立信任关系。您用于签名的的证书无需由证书机构签名;Android 系统允许您使用自签名证书为您的应用签名。如需了解有关证书的要求,请参阅<a href="{@docRoot}tools/publishing/app-signing.html#cert">获取合适的私钥</a>。</p>
-
- <p class="caution"><strong>重要提示</strong>:您的应用必须使用在 2033 年 10 月 22 日之后才会失效的加密密钥签名。</p>
-
- <p>如果您应用访问的服务或使用的第三方库需要基于您的私钥的附加密钥,则您还必须获得其他发布密钥。例如,如果您的应用使用 <a href="http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html">MapView</a> 类(属于 <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google 地图外部库</a>),您需要让您的应用注册 Google 地图服务并获取 Maps API 密钥。如需了解如何获取 Maps API 密钥,请参阅<a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">获取 Maps API 密钥</a>。</p>
-
- <h4>应用图标</h4>
-
- <p>请确保您有应用图标而且图标遵守建议的<a href="{@docRoot}guide/practices/ui_guidelines/icon_design_launcher.html">图标指南</a>。应用的图标会显示在设备的主屏幕上和“启动器”窗口中,有助于用户识别您的应用。它还会显示在“管理应用”、“我的下载”等其他位置。此外,Google Play 等发布服务也会向用户显示您的应用图标。</p>
-
- <p class="note"><strong>注意</strong>:如果您要在 Google Play 上发布应用,则需要创建高分辨率版本的图标。有关详情,请参阅<a href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">应用的图形资源</a>。</p>
-
- <h4>最终用户许可协议</h4>
-
- <p>请考虑为您的应用准备最终用户许可协议 (EULA)。最终用户许可协议可帮助保护您的员工、公司和知识产权,因此我们建议您为自己的应用提供一份。</p>
-
- <h4>其他材料</h4>
-
- <p>您可能还需要准备宣传和营销材料,用来宣传您的应用。例如,如果您要在 Google Play 上发布应用,则需要准备几段宣传文字并创建几张应用截图。有关详情,请参阅<a href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">应用的图形资源</a></p>
-
- <h2 id="publishing-configure">配置应用以进行发布</h2>
-
- <p>收集完所有支持材料后,您可以开始配置应用以进行发布。这部分总结了一些建议您在发布应用前对源代码、资源文件和应用清单进行的配置更改。虽然是否实施这里列出的大部分配置更改都由您决定,但这些都是良好的编码习惯。因此我们建议您实施这些更改。在某些情况下,您可能已在开发过程中实施了这些配置更改。</p>
-
- <h4>选择合适的应用包名称</h4>
-
- <p>请确保您选择的应用包名称适合在应用的整个生命周期中使用。将应用分发给用户后,您就无法再更改应用包名称。您可以在应用的清单文件中设置应用包名称。有关详情,请参阅介绍 <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a> 属性的文档。</p>
-
- <h4>停用日志记录和调试功能</h4>
-
- <p>在构建应用的发布版本之前,请确保停用日志记录功能和调试选项。要停用日志记录功能,您可以移除源文件中对 <code><a href="{@docRoot}reference/android/util/Log.html">Log</a></code> 方法的调用。要停用调试功能,您可以从清单文件的 <code><application></code> 代码中移除 <code>android:debuggable</code> 属性或将 <code>android:debuggable</code> 属性设置为 <code>false</code>。此外,请移除您在项目中创建的所有日志文件或静态测试文件。</p>
-
- <p>此外,您还应移除之前添加到代码中的所有 <code><a href="{@docRoot}reference/android/os/Debug.html">Debug</a></code> 跟踪调用,例如 <code><a href="{@docRoot}reference/android/os/Debug.html#startMethodTracing()">startMethodTracing()</a></code> 和 <code><a href="{@docRoot}reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code> 方法调用。</p>
-
- <p class="caution"><strong>重要提示</strong>:调试功能允许用户使用 Chrome DevTools 注入脚本和提取内容,因此如果您使用 <code><a href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code> 展示付费内容或使用 JavaScript 界面,请确保停用应用的调试功能。要停用调试功能,请使用 <code><a href="{@docRoot}reference/android/webkit/WebView.html#setWebContentsDebuggingEnabled(boolean)">WebView.setWebContentsDebuggingEnabled()</a></code> 方法。</p>
-
- <h4>清理项目目录</h4>
-
- <p>请清理您的项目,确保其符合 <a href="{@docRoot}tools/projects/index.html#ApplicationProjects">Android 项目</a>中所述的目录结构要求。项目中留有散乱或孤立的文件会妨碍对应用的编译,导致应用发生异常。您至少应执行下列清理任务:</p>
-
- <ul>
- <li>查看 <code>jni/</code>、<code>lib/</code> 和 <code>src/</code> 目录的内容。<code>jni/</code> 目录应只包含与 <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK</a> 相关联的源文件,例如 <code>.c</code>、<code>.cpp</code>、<code>.h</code> 和 <code>.mk</code> 文件。<code>lib/</code> 目录应只包含第三方库文件或专用库文件,包括预构建的共享库和静态库(例如 <code>.so</code> 文件)。<code>src/</code> 目录应只包含应用的源文件(<code>.java</code> 和 <code>.aidl</code> 文件)。<code>src/</code> 不应包含任何 <code>.jar</code> 文件。</li>
- <li>检查项目中是否包含应用不需要的专用或专有数据文件,如果有请将其移除。例如,在项目的 <code>res/</code> 目录中查找是否包含旧的图形文件、布局文件和值文件,如果您不再使用这些文件,请将其删除。</li>
- <li>检查 <code>lib/</code> 目录中是否包含测试库;如果您的应用不再使用这些库,请将其移除。</li>
- <li>查看 <code>assets/</code> 目录和 <code>res/raw/</code> 目录的内容,查找其中是否包含需在应用发布前更新或移除的原始资源文件和静态文件。</li>
- </ul>
-
- <h4>查看并更新清单设置</h4>
-
- <p>确认下列清单项是否已正确设置:</p>
-
- <ul>
- <li><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
- <uses-permission></a> 元素
- <p>您应该只指定应用必需的相关权限。</p>
- </li>
- <li><code>android:icon</code> 和 <code>android:label</code> 属性
- <p>您必须为这些属性(位于 <a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a> 元素中)指定值。</p>
- </li>
- <li><code>android:versionCode</code> 和 <code>android:versionName</code> 属性。
- <p>我们建议您为这些属性(位于 <a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a> 元素中)指定值。有关详情,请参阅<a href="{@docRoot}tools/publishing/versioning.html">应用的版本管理</a>。</p>
- </li>
- </ul>
-
- <p>如果您要在 Google Play 上发布应用,还可以设置另外几个清单元素。例如,<code>android:minSdkVersion</code> 和 <code>android:targetSdkVersion</code> 属性(位于 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><uses-sdk></a> 元素中)。如需详细了解这些设置以及其他 Google Play 设置,请参阅 <a href="{@docRoot}google/play/filters.html">Google Play 上的过滤器</a>。</p>
-
- <h4>解决兼容性问题</h4>
-
- <p>Android 提供了多种工具和技术,可让您的应用与多种设备兼容。为了让您的应用尽可能地适合更多用户,建议您执行以下操作:</p>
-
- <ul>
- <li><strong>添加跨屏配置支持</strong>
- <p>确保您采取了<a href="{@docRoot}guide/practices/screens_support.html#screen-independence">支持跨屏的最佳做法</a>。通过支持跨屏配置,您创建的应用可在 Android 支持的任何屏幕尺寸的设备上正常运行且拥有精美外观。</p>
- </li>
- <li><strong>针对 Android 平板电脑优化应用</strong>
- <p>如果您的应用是专为运行 Android 3.0 以上版本的设备打造的,请遵照<a href="{@docRoot}guide/practices/optimizing-for-3.0.html">针对 Android 3.0 优化应用</a>中所述的指南和最佳做法,这样您的应用就能与运行 Android 3.0 的设备兼容。</p>
- </li>
- <li><strong>考虑使用支持库</strong>
- <p>如果您的应用是专为运行 Android 3.x 的设备打造的,请向您的应用项目中添加<a href="{@docRoot}tools/support-library/index.html">支持库</a>,这样您的应用就能与较低版本的 Android 系统兼容。您可以将“支持库”提供的静态支持库添加到您的 Android 应用中,以便使用低版本的平台上未提供的 API 或使用不属于框架 API 的实用程序 API。</p>
- </li>
- </ul>
-
- <h4>更新服务器和服务的网址</h4>
-
- <p>如果您的应用需要访问远程服务器或服务,请确保您使用的是该服务器或服务的生产网址或路径,而非测试网址或路径。</p>
-
- <h4>实施许可服务(如果您要在 Google Play 上发布应用)</h4>
-
- <p>如果您要通过 Google Play 发布付费应用,请考虑支持 Google Play 许可服务。借助这项许可服务,您可以根据当前用户的购买情况控制其对您应用的访问权限。使用 Google Play 许可服务并不是强制的,即使您通过 Google Play 发布应用也可以不使用这项服务。</p>
-
- <p>如需详细了解 Google Play 许可服务以及如何在应用中使用该服务,请参阅<a href="{@docRoot}google/play/licensing/index.html">应用许可</a>。</p>
-
- <h2 id="publishing-build">构建应用以进行发布</h2>
-
- <p>配置好应用后,您可以将其构建为一个经过签名和优化的发布版 <code>.apk</code> 文件。JDK 中包含用于为 <code>.apk</code> 文件签名的工具(Keytool 和 Jarsigner);Android SDK 中包含用于编译和优化 <code>.apk</code> 文件的工具。如果您使用的是带 ADT 插件的 Eclipse 或是从命令行使用 Ant 构建脚本,则整个构建流程可以自动完成。</p>
-
- <h3>使用 Eclipse 进行构建</h3>
-
- <p>您可以使用 Eclipse“导出向导”构建使用私钥签名并经过优化的发布版 <code>.apk</code> 文件。如需了解如何运行“导出向导”,请参阅<a href="{@docRoot}tools/publishing/app-signing.html#ExportWizard">使用 Eclipse ADT 进行编译和签名</a>。“导出向导”会对您要发布的应用进行编译、使用私钥为应用签名并使用 Zipalign 工具对应用进行优化。如果您已通过 Eclipse 运行或调试过应用且未在应用中发现错误,“导出向导”就应该能成功运行(有关详情,请参阅<a href="{@docRoot}tools/building/building-eclipse.html">使用带 ADT 的 Eclipse 构建和运行应用</a>)。</p>
-
- <p>“导出向导”假设您有适合为应用签名的<a href="#billing-keys">证书和私钥</a>。如果您没有合适的证书和私钥,“导出向导”将帮您生成一个(如需详细了解签名流程和签名指南,请参阅<a href="{@docRoot}tools/publishing/app-signing.html">为应用签名</a>)。</p>
-
- <h3>使用 Ant 进行构建</h3>
-
- <p>您可以使用 Ant 构建脚本(包含在 Android SDK 中)来构建使用私钥签名并经过优化的发布版 <code>.apk</code> 文件。如需了解具体做法,请参阅<a href="{@docRoot}tools/building/building-cmdline.html#ReleaseMode">在发布模式下进行构建</a>。这种构建方式假设您有适合为应用签名的<a href="#billing-keys">证书和密钥</a>。如果您没有合适的证书和私钥,“导出向导”将帮您生成一个(如需详细了解签名流程和签名指南,请参阅<a href="{@docRoot}tools/publishing/app-signing.html">为应用签名</a>)。</p>
-
- <h2 id="publishing-resources">准备外部服务器和资源</h2>
-
- <p>如果您的应用依赖于远程服务器,请确保该服务器是安全的且已经过配置,随时可投入实际使用。如果您要在应用中实施<a href="{@docRoot}google/play/billing/index.html">应用内结算</a>,而且要在远程服务器上执行签名验证步骤,则必须这样做。</p>
-
- <p>此外,如果您的应用从远程服务器或实时服务中抓取内容(例如内容 Feed),请确保您提供的内容是最新的且随时可投入实际使用。</p>
-
- <h2 id="publishing-test">测试应用以进行发布</h2>
-
- <p>测试应用的发布版本有助于确保您的应用能在实际设备上和实际网络条件下正常运行。理想情况下,您至少应在一部手持设备上和一台平板电脑上测试您的应用,以确认界面元素的尺寸是否合适,以及应用的性能和能耗是否可接受。</p>
-
- <p>在测试之前,请先参阅<a href="{@docRoot}tools/testing/what_to_test.html">测试内容</a>。这篇文章总结了您在测试 Android 应用时应注意的常见情况。当您完成测试并确定应用的发布版本能正常运行后,就可以向用户发布您的应用了。有关详情,请参阅<a href="{@docRoot}tools/publishing/publishing_overview.html#publishing-release">向用户发布应用</a>。如果您要在 Google Play 上发布应用,请参阅 <a href="{@docRoot}distribute/tools/launch-checklist.html">Google Play 发布检查清单</a>。</p>
-
-
diff --git a/docs/html-intl/intl/zh-cn/tools/publishing/publishing_overview.jd b/docs/html-intl/intl/zh-cn/tools/publishing/publishing_overview.jd
deleted file mode 100644
index eb6a617..0000000
--- a/docs/html-intl/intl/zh-cn/tools/publishing/publishing_overview.jd
+++ /dev/null
@@ -1,142 +0,0 @@
-page.title=发布概述
-page.type=工具
-
-@jd:body
-
- <div id="qv-wrapper">
-<div id="qv">
- <h2>概述</h2>
- <ul>
- <li>了解如何发布 Android 应用。</li>
- <li>了解如何准备应用以进行发布。</li>
- <li>了解如何向用户发布应用。</li>
- </ul>
- <h2>本文内容</h2>
- <ol>
- <li><a href="#publishing-prepare">准备应用以进行发布</a></li>
- <li><a href="#publishing-release">向用户发布应用</a>
- </li></ol>
- <h2>另请参见</h2>
- <ol>
- <li><a href="{@docRoot}distribute/tools/launch-checklist.html">在 Google Play 上发布应用</a></li>
- </ol>
-</div>
-</div>
-
-<p>发布是将您的 Android 应用提供给用户的常规流程。您在发布 Android 应用时需要执行两大任务:</p>
-
-<ul>
- <li>准备应用以进行发布。
- <p>在准备阶段,您需要构建应用的发布版本,以供 Android 设备用户下载和安装。</p>
- </li>
- <li>向用户发布应用。
- <p>在发布阶段,您向用户宣传、销售和分发应用的发布版本。</p>
- </li>
-</ul>
-
-<p>通常情况下,您可以通过 <a href="{@docRoot}distribute/googleplay/index.html">Google Play</a> 等应用市场发布应用。不过,您也可以通过以下方式发布应用:将应用直接发送给用户;让用户从您的网站下载应用。</p>
-
-<p>图 1 展示了发布流程在整个 Android <a href="{@docRoot}tools/workflow/index.html">应用开发流程</a>中所处的位置。一般来说,您要先在调试环境中完成对应用的测试,然后再执行发布流程。此外,在开始发布流程之前,您最好确保应用符合针对功能、性能和稳定性的所有发布标准。</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview.png" alt="展示了发布流程在整个开发流程中所处的位置" height="86" id="figure1" />
-<p class="img-caption">
- <strong>图 1. </strong> 发布是 Android <a href="{@docRoot}tools/workflow/index.html">应用开发流程</a>中的最后一个阶段。
-</p>
-
-<h2 id="publishing-prepare">准备应用以进行发布</h2>
-
-<p>发布之前的准备过程涉及多个步骤,需要您完成以下任务:</p>
-
-<ul>
- <li>配置应用以进行发布。
- <p>您至少需要从清单文件中移除 <code><a href="{@docRoot}reference/android/util/Log.html">Log</a></code> 调用和 <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a> 属性,还应为 <code>android:versionCode</code> 和 <code>android:versionName</code> 属性(位于 <a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a> 元素中)提供值。此外,您还可能需要配置多项其他设置,以符合 Google Play 的发布要求,或者符合其他应用发布方式的要求。</p>
- </li>
- <li>构建应用的发布版本并签名。
- <p>Android SDK 工具中随附的 Android Development Tools (ADT) 插件和 Ant 构建脚本可向您提供构建应用的发布版本并签名所需的全部信息。</p>
- </li>
- <li>测试应用的发布版本。
- <p>在分发应用之前,您至少应在一部适配的手机和一台适配的平板电脑上全面测试应用的发布版本。</p>
- </li>
- <li>更新应用资源以进行发布。
- <p>您需确保所有应用资源(例如多媒体文件和图形)都是最新的,且已包含在应用中或者已存储到正确的生产服务器上。</p>
- </li>
- <li>准备应用所依赖的远程服务器和服务。
- <p>如果您的应用依赖于外部服务器或服务,您要确保这些服务器或服务是安全的,随时可投入实际使用。</p>
- </li>
-</ul>
-
-<p>在准备阶段,您可能还需要执行其他一些任务。例如,您需要获取私钥来为应用签名;如果您使用 <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google 地图外部库</a>,则需要获取 Maps API 发布密钥。此外,您还需要为应用创建一个图标,而且可能需要准备最终用户许可协议 (EULA) 以保护您的员工、公司和知识产权。</p>
-
-<p>当您完成发布应用所需的准备工作之后,您将得到一个已签名的 <code>.apk</code> 文件,可以将文件分发给用户。</p>
-
-<p>要了解如何准备应用以进行发布,请参阅开发者指南中的<a href="{@docRoot}tools/publishing/preparing.html">准备发布</a>。这篇文章提供了有关如何配置和构建应用的发布版本的分步说明。</p>
-
-<h2 id="publishing-release">向用户发布应用</h2>
-
-<p>您可以通过多种方式发布您的 Android 应用。通常情况下,您通过 Google Play 等应用市场发布应用,但您也可以在自己的网站上发布应用或直接将应用发送给用户。
-
-<h3 id="publishing-marketplace">通过应用市场发布应用</h3>
-
-<p>如果您希望向尽可能多的目标用户分发应用,最好通过 Google Play 等应用市场发布应用。</p>
-
-<p>Google Play 是 Android 应用的主要市场,它尤其适合向遍布全球的众多目标用户分发您的应用。不过,您也可以通过自己喜欢的其他应用市场分发您的应用,也可以在多个市场中分发。</p>
-
-
-<h4 id="publishing-market">在 Google Play 上发布应用</h4>
-
-<p>Google Play 是一个强大的应用发布平台,可帮助您向全球用户宣传、销售和分发您的 Android 应用。当通过 Google Play 发布应用时,您可以使用一系列开发者工具,分析您的销售数据、了解市场趋势以及控制向哪些用户分发应用。此外,您还能使用多种有助您增加收入的功能,如<a href="{@docRoot}google/play/billing/index.html">应用内结算</a>和<a href="{@docRoot}google/play/licensing/index.html">应用许可</a>。丰富的工具和功能,以及为数众多的最终用户社区功能,让 Google Play 成为销售和购买 Android 应用的主要平台。</p>
-
-<p>在 Google Play 上发布应用相当简单,只需三个基本步骤:</p>
-
-<ul>
- <li>准备宣传材料。
- <p>为了充分利用 Google Play 的营销和宣传功能,您需要为应用制作宣传材料,例如屏幕截图、视频、图形以及宣传文字。</p>
- </li>
- <li>配置选项并上传资源。
- <p>利用 Google Play,您可以将应用定位到全球的用户和设备。通过配置各种 Google Play 设置,您可以选择要覆盖的国家/地区、要使用的商品详情语言以及应用在各个国家/地区的价格。此外,您还可以配置商品详情,例如应用类型、类别和内容分级。配置各种选项之后,您可以上传宣传材料和草稿版(未发布的)应用。</p>
- </li>
- <li>发布应用的发布版本。
- <p>如果您确认各项发布设置均配置正确,而且您上传的应用可以公开发布,只需点击开发者控制台中的<strong>发布</strong>即可。在几分钟之内,您的应用就会发布到网络上供全球用户下载。</p>
- </li>
-</ul>
-
-<p>如需了解完整信息,请访问 <a href="{@docRoot}distribute/googleplay/index.html">Google Play</a>。</p>
-
-
-<h3 id="publishing-email">通过电子邮件发布应用</h3>
-
-<div class="figure" style="width:246px">
- <img src="{@docRoot}images/publishing/publishing_via_email.png" alt="此屏幕截图展示了用户在收到您发送的应用时看到的图形界面" style="width:240px" />
- <p class="img-caption">
- <strong>图 1. </strong> 当您通过电子邮件向用户发送应用时,用户只需点击<strong>安装</strong>即可。
- </p>
-</div>
-
-<p>最简单快捷的应用发布方式就是通过电子邮件将应用发送给用户。为此,您需要准备好应用的发布版本,将其添加为电子邮件的附件,然后发送给用户。当用户在其 Android 设备上打开您的电子邮件时,Android 系统会识别出该 APK 并在电子邮件中显示<strong>立即安装</strong>按钮(参见图 1)。用户触摸该按钮即可安装您的应用。</p>
-
-<p class="note"><strong>注意</strong>:只有当用户将其设备配置为允许安装来自<a href="#unknown-sources">未知来源</a>的应用且通过本机的 Gmail 应用打开您的电子邮件时,才会出现图 1 所示的<strong>立即安装</strong>按钮。</p>
-
-<p>如果您只将应用发送给几位受信任的用户,那么通过电子邮件分发就非常方便。不过,这种发布方式不利于阻止盗版和未经授权的分发,也就是说,收到您应用的任何人都可以将应用转发给其他人。</p>
-
-<h2 id="publishing-website">通过网站发布应用</h2>
-
-<p>如果您不想在 Google Play 这样的市场上发布应用,则可以将应用放在您的网站或服务器(包括私人服务器或企业服务器)上供用户下载。为此,您必须先按正常流程准备好应用的发布版本,然后您只需将准备好的 APK 文件托管到网站上并向用户提供下载链接即可。
-</p>
-
-<p>当用户在其 Android 设备上访问该下载链接时,文件就会开始下载,Android 系统会在下载完成后自动将应用安装到设备上。不过,只有当用户将其“设置”配置为允许安装来自<a href="#unknown-sources">未知来源</a>的应用时,安装进程才会自动启动。</p>
-
-<p>虽然在您的网站上发布应用相对比较简单,但效率可能并不高。例如,如果您想通过自己的应用获利,则必须自行处理和跟踪所有财务交易且不能使用 Google Play 的<a href="{@docRoot}google/play/billing/index.html">应用内结算服务</a>来销售应用内商品。此外,您也不能使用<a href="{@docRoot}google/play/licensing/index.html">许可服务</a>来阻止他人未经授权安装和使用您的应用。</p>
-
-
-<h2 id="unknown-sources">用户选择安装来自未知来源的应用</h2>
-
-<div class="figure" style="width:246px;margin-top:0">
- <img src="{@docRoot}images/publishing/publishing_unknown_sources_sm.png" alt="此屏幕截图展示了用于接受从未知来源下载和安装应用的设置" style="width:240px" />
- <p class="img-caption">
- <strong>图 2. </strong> 用户必须启用<strong>未知来源</strong>设置,才能安装从 Google Play 以外的位置下载的应用。
- </p>
-</div>
-
-<p>Android 可防止用户无意中从 Google Play(受信任的市场)以外的位置下载并安装应用。只要用户未启用“设置”<strong>></strong>“安全”下的<strong>未知来源</strong>(如图 2 所示),它就会阻止此类安装。要允许安装来自其他来源的应用,用户必须在其设备上启用“未知来源”设置,且必须先更改此项配置才能将您的应用下载到设备上。<em></em></p>
-
-<p class="note">请注意,部分网络提供商不允许用户安装来自未知来源的应用。</p>
diff --git a/docs/html-intl/intl/zh-tw/sdk/index.jd b/docs/html-intl/intl/zh-tw/sdk/index.jd
deleted file mode 100644
index ba11c46..0000000
--- a/docs/html-intl/intl/zh-tw/sdk/index.jd
+++ /dev/null
@@ -1,429 +0,0 @@
-page.title=下載 Android Studio 和 SDK 工具
-page.tags=sdk, android studio
-page.template=sdk
-page.image=images/cards/android-studio_2x.png
-header.hide=1
-page.metaDescription=下載官方 Android IDE 和開發人員工具以建置適用於 Android 手機、平板電腦、穿戴式裝置、電視等裝置的應用程式。
-
-@jd:body
-
-<style type="text/css">
- .offline {display:none;}
- h2.feature {
- padding-top:30px;
- margin-top:0;
- clear:both;
- }
- .feature-blurb {
- margin:0px; font-size:16px; font-weight:300;
- padding-top:40px;
- }
-
- .landing-button .small {
- font-size: 12px;
- font-weight: normal;
- line-height: 12px;
- display: block;
- }
-
- h1.studio-logo {
- width:226px;
- height:78px;
- display:block;
- padding:0;
- white-space: nowrap;
- text-indent: -10000px;
- font-size:0px;
- background: url({@docRoot}images/tools/studio-logo.png);
- background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
- background-size: 226px 78px;
- }
-
-</style>
-
-
-
-
-
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">下載</h1>
-
-<p class="sdk-terms-intro">在安裝 Android Studio 或單獨的 SDK 工具之前,您必須同意遵守下列條款及細則。
-</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">條款及細則</h2>
-此為「Android 軟體開發套件授權協議」
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div>
-
-
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>只要再進行幾個步驟,即可建置適用於 Android 的應用程式!</p>
- <p>系統即將把您重新導向至
-<a id="next-link" href="{@docRoot}sdk/installing/index.html">安裝 Android SDK</a> 網頁。</p>
-
-</div><!-- end next-steps -->
-
-
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">我已閱讀並同意上述條款及細則</label>
-</p>
-<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-</div>
-
-
-</div><!-- end TOS -->
-
-
-
-
-
-
-<div id="landing">
-
-<div class="col-13"> </div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">官方 Android IDE</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Android Studio IDE</li>
-<li>Android SDK 工具</li>
-<li>Android 6.0 (Marshmallow) 平台</li>
-<li>含 Google API 的 Android 6.0 模擬器系統映像檔</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-想要取得 Android Studio 或獨立 SDK 工具,請造訪 <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
-</div>
-
-<ul>
- <li><a href="#Requirements">系統需求</a></li>
- <li><a href="#Other">其他下載選項</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">遷移至 Android Studio</a></li>
- <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">參與問卷調查</a></li>
-</ul>
-
-
-
-
-<h2 class="feature norule" >智慧型程式碼編輯器</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio 的核心是一個智慧型程式碼編輯器,能夠進行進階的程式碼自動完成、重構及程式碼分析作業。
-</p>
- <p>這項功能強大的程式碼編輯器可協助您成為更具生產力的 Android 應用程式開發人員。</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule">程式碼範本與 GitHub 整合</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>全新的專案精靈可協助您及早發起新專案。</p>
-
- <p>您可以使用模式 (例如導覽匣和資料檢視巡覽區) 範本程式碼,甚至是從 GitHub 匯入 Google 程式碼來發起專案。
-</p>
-</div>
-
-
-
-
-<h2 class="feature norule">多螢幕應用程式開發</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>建置適用於 Android 手機、平板電腦、Android Wear、Android TV、Android Auto 和 Google Glass 的應用程式。
-</p>
- <p>透過 Android Studio 中新的「Android 專案檢視」和模組支援功能,管理應用程式專案和相關資源變得更加容易。
-
-</div>
-
-
-
-
-<h2 class="feature norule">適用於所有形狀和大小的虛擬裝置</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>Android Studio 隨附預先設定、經過最佳化的模擬器映像檔。</p>
- <p>經過更新及簡化的 Virtual Device Manager (虛擬裝置管理員) 可為常見的 Android 裝置提供預先定義的裝置設定檔。
-</p>
-</div>
-
-
-
-
-<h2 class="feature norule">
-Android 版本已隨 Gradle 更新</h2>
-
-<div class="col-9">
- <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
- <p>可使用同一項專案為您的 Android 應用程式建立多個具有不同功能的 APK。</p>
- <p>可使用 Maven 管理應用程式依附功能。</p>
- <p>可使用 Android Studio 或命令列建置 APK。</p>
-</div>
-
-
-
-
-<h2 class="feature norule">瞭解 Android Studio</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
-
- <ul>
- <li>以 IntelliJ IDEA Community Edition (JetBrains 所推出的常用 Java IDE) 為基礎。</li>
- <li>具有彈性的 Gradle 型建置系統。</li>
- <li>可產生建置變體和多個 APK。</li>
- <li>可為 Google 各項服務和各種裝置類型提供額外的範本支援。</li>
- <li>具有支援主題編輯功能的版面配置編輯器。</li>
- <li>具有可取得效能、可用性、版本相容性資料及偵測其他問題的 Lint 工具。</li>
- <li>具有 ProGuard 和應用程式簽署功能。</li>
- <li>內建 Google Cloud Platform 支援,可讓您輕鬆整合 Google Cloud Messaging 與 App Engine。
-</li>
- </ul>
-
-<p style="margin:0">
-如要進一步瞭解 Android Studio 提供的功能,請參閱《<a href="{@docRoot}tools/studio/index.html">Android Studio 基本概念</a>》指南。
-</p>
-</div>
-
-
-<p>如果您搭配 ADT 使用 Eclipse,請注意,Android Studio 現已成為 Android 的官方 IDE,因此請遷移至 Android Studio 以接收 IDE 的所有更新資訊。
-
-如果想瞭解如何遷移專案,請參閱<a href="{@docRoot}sdk/installing/migrate.html">遷移至 Android Studio</a>。
-
-</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">系統需求</h2>
-
-<h3>Windows</h3>
-
-<ul>
-<li>Microsoft® Windows® 8/7/Vista/2003 (32 或 64 位元)</li>
-<li>2 GB 以上的 RAM (建議準備 4 GB 的 RAM)</li>
-<li>400 MB 的硬碟空間</li>
-<li>至少 1 GB (供 Android SDK、模擬器系統映像檔及快取使用)</li>
-<li>1280 x 800 以上的螢幕解析度</li>
-<li>Java Development Kit (JDK) 7 </li>
-<li>提升模擬器效能的選用配件:支援 Intel® VT-x、Intel® EM64T (Intel® 64) 及 Execute Disable (XD) Bit 功能的 Intel® 處理器
-</li>
-</ul>
-
-
-<h3>Mac OS X</h3>
-
-<ul>
-<li>Mac® OS X® 10.8.5 以上版本;最高可支援 10.9 (Mavericks)</li>
-<li>2 GB 以上的 RAM (建議準備 4 GB 的 RAM)</li>
-<li>400 MB 的硬碟空間</li>
-<li>至少 1 GB (供 Android SDK、模擬器系統映像檔及快取使用)</li>
-<li>1280 x 800 以上的螢幕解析度</li>
-<li>Java Runtime Environment (JRE) 6</li>
-<li>Java Development Kit (JDK) 7</li>
-<li>提升模擬器效能的選用配件:支援 Intel® VT-x、Intel® EM64T (Intel® 64) 及 Execute Disable (XD) Bit 功能的 Intel® 處理器
-</li>
-</ul>
-
-<p>如果您使用 Mac OS,可搭配 Java Runtime Environment (JRE) 6 執行 Android Studio 以獲得最佳字型顯示效果。
-此外,您還可以設定專案使用 Java Development Kit (JDK) 6 或 JDK 7。</p>
-
-
-
-<h3>Linux</h3>
-
-<ul>
-<li>GNOME 或 KDE 桌面</li>
-<li>GNU C 程式庫 (glibc) 2.15 以上版本</li>
-<li>2 GB 以上的 RAM (建議準備 4 GB 的 RAM)</li>
-<li>400 MB 的硬碟空間</li>
-<li>至少 1 GB (供 Android SDK、模擬器系統映像檔及快取使用)</li>
-<li>1280 x 800 以上的螢幕解析度</li>
-<li>Oracle® Java Development Kit (JDK) 7 </li>
-</ul>
-<p>已在 Ubuntu® 14.04 Trusty Tahr (能夠執行 32 位元應用程式的 64 位元發行版本) 上經過測試。
-</p>
-
-
-
-
-<h2 id="Other" style="clear:left">其他下載選項</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/zh-tw/sdk/installing/adding-packages.jd b/docs/html-intl/intl/zh-tw/sdk/installing/adding-packages.jd
deleted file mode 100644
index 563df51..0000000
--- a/docs/html-intl/intl/zh-tw/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=新增 SDK 封裝
-
-page.tags=sdk manager
-
-@jd:body
-
-<style>
-ol.large {
- margin-left:0;
-}
-ol.large > li {
- list-style-position: inside;
- list-style-type:none;
- margin:30px 0 0 0;
- padding:30px 20px;
- background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
- display:inline;
- left:-40px;
- float:left;
- width:20px;
- font-size:20px;
- line-height:20px;
-}
-ol.large > li > h2 {
- font-size:20px;
- line-height:20px;
- padding:0 0 0 20px;
- margin:0 0 20px 0;
- display:inline;
- font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
- content:"1. ";
-}
-ol.large > li:nth-child(2):before {
- content:"2. ";
-}
-ol.large > li:nth-child(3):before {
- content:"3. ";
-}
-ol.large > li:nth-child(4):before {
- content:"4. ";
-}
-ol.large > li:nth-child(5):before {
- content:"5. ";
-}
-ol.large > li:nth-child(6):before {
- content:"6. ";
-}
-</style>
-
-
-<p>
-Android SDK 預設不會包括開發所需的所有內容。SDK 將工具、平台及其他元件劃分為不同的封裝。您可以使用
- <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a> 視需要下載。因此,您要先將封裝加入 Android SDK 後,才可以開始進行。
-
-
-</p>
-
-<p>如要新增封裝,請透過下列其中一種方式啟動 Android SDK Manager:</p>
-<ul>
- <li>在 Android Studio 中,按一下工具列的 [<strong>SDK Manager</strong>]
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" />。</li>
- <li>如果您不是使用 Android Studio:
- <ul>
- <li>Windows:按兩下位於 Android SDK 目錄之根目錄的 <code>SDK Manager.exe</code> 檔案。
-</li>
- <li>Mac/Linux:開啟終端機並瀏覽到安裝 Android SDK 的 <code>tools/</code> 目錄,然後執行 <code>android sdk</code>。
-</li>
- </ul>
- </li>
-</ul>
-
-<p>第一次開啟 SDK Manager 時,預設會選取多個封裝。
-保留預設選取的封裝,但務必按照以下步驟確認您已經取得開發所需的所有內容:
-</p>
-
-
-<ol class="large">
-<li>
- <h2 id="GetTools" class="norule">取得最新的 SDK 工具</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
- <p>設定 Android SDK 時,您一定要下載最新的工具和平台:
-</p>
- <ol>
- <li>開啟 Tools 目錄並選取:
- <ul>
- <li><strong>Android SDK 工具</strong></li>
- <li><strong>Android SDK 平台工具</strong></li>
- <li><strong>Android SDK 建置工具</strong> (最新版本)</li>
- </ul>
- </li>
- <li>開啟第一個 Android X.X 資料夾 (最新版本) 並選取:
- <ul>
- <li><strong>SDK 平台</strong></li>
- <li>模擬器的系統映像,例如 <br>
- <strong>ARM EABI v7a 系統映像</strong></li>
- </ul>
- </li>
- </ol>
-</li>
-
-<li>
- <h2 id="GetSupportLib" class="norule">取得額外 API 的支援程式庫</h2>
-
- <div class="sidebox">
- <p>以下各項需要支援程式庫:</p>
- <ul>
- <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
- <li><a href="{@docRoot}tv/index.html">Android 電視</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- </ul>
-
- <p>支援程式庫也提供常用的 API:</p>
- <ul>
- <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">導覽匣</a>
-</li>
- <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">滑動檢視</a></li>
- <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">向下相容的動作列</a>
-</li>
- </ul>
- </div>
-
- <p><a href="{@docRoot}tools/support-library/features.html">Android 支援程式庫</a>提供的 API 延伸集合,可以與大部分的 Android 版本相容。
-</p>
-
- <p>開啟 <strong>Extras</strong> 目錄並選取:</p>
- <ul>
- <li><strong>Android 支援存放庫</strong></li>
- <li><strong>Android 支援程式庫</strong></li>
- </ul>
-
- <p> </p>
- <p> </p>
-
-</li>
-
-
-<li>
- <h2 id="GetGoogle" class="norule">從 Google Play 服務取得更多 API</h2>
-
- <div class="sidebox">
-
- <p>Google Play 服務 API 為 Android 應用程式提供多種功能與服務,例如:
-</p>
- <ul>
- <li><a href="{@docRoot}google/play-services/plus.html">使用者驗證</a></li>
- <li><a href="{@docRoot}google/play-services/maps.html">Google 地圖</a></li>
- <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
- <li><a href="{@docRoot}google/play-services/games.html">遊戲關卡和排行榜</a>
-</li>
- <li><a href="{@docRoot}google/play-services/index.html">更多功能與服務</a></li>
- </ul>
- </div>
-
- <p>如要使用 Google API 進行開發,您需要 Google Play 服務封裝:</p>
- <p>開啟 <strong>Extras</strong> 目錄並選取:</p>
- <ul>
- <li><strong>Google 存放庫</strong></li>
- <li><strong>Google Play 服務</strong></li>
- </ul>
-
- <p class="note"><strong>注意:</strong>並非所有 Android 裝置都提供 Google Play 服務,但內含 Google Play 市集的所有裝置都可以使用 Google Play 服務。
-如要在 Android 模擬器中使用這些 API,您必須從 SDK Manager 最新的 Android X.X 目錄中安裝 <strong>Google API</strong> 系統映像。
-
-</p>
-</li>
-
-
-<li>
- <h2 id="Install" class="norule">安裝封裝</h2>
- <p>您選好需要的所有封裝後,就可以繼續安裝:</p>
- <ol>
- <li>按一下 [<strong>安裝 X 封裝</strong>]。</li>
- <li>在下一個視窗中,按兩下左側的每個封裝名稱,以接受每項的授權合約。
-</li>
- <li>按一下 [<strong>安裝</strong>]。</li>
- </ol>
- <p>SDK Manager 視窗的下方會顯示下載進度。
- <strong>請勿結束 SDK Manager</strong>,下載會因而取消。</p>
-</li>
-
-<li>
- <h2 id="Build" class="norule">開始建置!</h2>
-
-<p>Android SDK 現在已內含上述封裝,您可以開始建置 Android 應用程式了。
-若有新的工具和其他 API,只要啟動 SDK Manager 即可將新的封裝下載到 SDK。
-</p>
-
-<p>以下是繼續進行的選項:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>開始使用</h3>
-<p>如果您是 Android 開發新手,可參考<strong><a href="{@docRoot}training/basics/firstapp/index.html">建置第一個應用程式</a></strong>指南瞭解 Android 應用程式的基本概念。
-</p>
-
-</div>
-<div class="col-4 box">
-<h3>建置穿戴式應用程式</h3>
-<p>如果您準備好開始建置 Android 穿戴式裝置的應用程式,請參閱<strong><a href="{@docRoot}wear/preview/start.html">建置 Android Wear 的應用程式</a></strong>指南。
-</p>
-
-</div>
-<div class="col-4 box">
-<h3>使用 Google API</h3>
-<p>如要開始使用 Google API (例如「地圖」或 Play Game 服務),請參閱<strong><a href="{@docRoot}google/play-services/setup.html">設定 Google Play 服務</a></strong>指南。
-
-
-</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 545923f..b7b4ec6 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -1,6 +1,4 @@
redirects:
-- from: /sdk/android-
- to: /about/versions/android-
- from: /about/versions/index.html
to: /about/index.html
- from: /about/versions/api-levels.html
@@ -71,8 +69,8 @@
to: /tools/help/adt.html
- from: /tools/publishing/app-signing-eclipse.html
to: /tools/help/adt.html
-- from: /tools/help/uiautomator/.*
- to: /go/libraries/testing-support/library/
+- from: /tools/help/uiautomator/...
+ to: /go/libraries/testing-support-library/
- from: /tools/testing/testing_ui.html
to: /training/testing/ui-testing/index.html
- from: /tools/testing/activity_test.html
@@ -103,15 +101,15 @@
to: /training/testing/ui-testing/index.html
- from: /guide/market/
to: /google/play/
-- from: /guide/google/gcm/client-javadoc/.*
- to: /reference/com/google/android/gcm/package-summary.html
-- from: /guide/google/gcm/server-javadoc/.*
- to: /reference/com/google/android/gcm/server/package-summary.html
+- from: /guide/google/gcm/client-javadoc/...
+ to: /reference/com/google/android/gms/gcm/package-summary.html
+- from: /guide/google/gcm/server-javadoc/...
+ to: /reference/com/google/android/gms/gcm/package-summary.html
- from: /guide/google/play/services.html
to: https://developers.google.com/android/guides/overview
- from: /guide/google/
to: /google/
-- from: /training/id-auth/.*
+- from: /training/id-auth/...
to: /google/auth/http-auth.html
- from: /google/play-services/auth.html
to: https://developers.google.com/android/guides/http-auth
@@ -131,11 +129,11 @@
to: https://developers.google.com/mobile-ads-sdk/
- from: /google/play-services/wallet.html
to: https://developers.google.com/wallet/instant-buy/
-- from: /google/play/safetynet/.*
+- from: /google/play/safetynet/...
to: /training/safetynet/index.html
-- from: /google/gcm/.*
+- from: /google/gcm/...
to: https://developers.google.com/cloud-messaging/
-- from: /google/gcs/.*
+- from: /google/gcs/...
to: https://developers.google.com/datastore/
- from: /google/play-services/safetynet.html
to: /training/safetynet/index.html
@@ -151,12 +149,6 @@
to: /google/play/billing/index.html
- from: /google/play/billing/billing-promos.html
to: /google/play/billing/billing_promotions.html
-- from: /reference/com/google/android/gms/location/LocationClient*.html
- to: /reference/com/google/android/gms/location/package-summary.html
-- from: /reference/com/google/android/gms/plus/PlusClient*.html
- to: /reference/com/google/android/gms/plus/package-summary.html
-- from: /reference/com/google/android/gms/location/ActivityRecognitionClient.html
- to: /reference/com/google/android/gms/location/ActivityRecognition.html
- from: /guide/publishing/licensing.html
to: /google/play/licensing/index.html
- from: /google/play/billing/billing_about.html
@@ -185,7 +177,7 @@
to: /guide/topics/ui/notifiers/notifications.html
- from: /guide/topics/wireless/
to: /guide/topics/connectivity/
-- from: /guide/topics/drawing/.*
+- from: /guide/topics/drawing/...
to: /guide/topics/graphics/opengl.html
- from: /guide/topics/connectivity/usb/adk.html
to: /tools/adk/index.html
@@ -215,7 +207,7 @@
to: /guide/topics/data/install-location.html
- from: /guide/appendix/g-app-intents.html
to: /guide/components/intents-common.html
-- from: /guide/basics/.*
+- from: /guide/basics/...
to: /about/index.html
- from: /guide/topics/security/security.html
to: /training/articles/security-tips.html
@@ -227,11 +219,15 @@
to: /tools/testing/
- from: /guide/topics/graphics/animation.html
to: /guide/topics/graphics/overview.html
-- from: /guide/topics/graphics/renderscript/(compute.html|index.html|reference.html)
+- from: /guide/topics/graphics/renderscript/compute.html
+ to: /guide/topics/renderscript/index.html
+- from: /guide/topics/graphics/renderscript/index.html
+ to: /guide/topics/renderscript/index.html
+- from: /guide/topics/graphics/renderscript/reference.html
to: /guide/topics/renderscript/index.html
- from: /guide/topics/graphics/renderscript.html
to: /guide/topics/renderscript/index.html
-- from: /reference/renderscript/.*
+- from: /reference/renderscript/...
to: /guide/topics/renderscript/reference/overview.html
- from: /guide/topics/renderscript/reference.html
to: /guide/topics/renderscript/reference/overview.html
@@ -271,7 +267,19 @@
to: /training/articles/perf-jni.html
- from: /guide/practices/ui_guidelines/index.html
to: /design/index.html
-- from: /guide/practices/ui_guidelines/icon_design.*
+- from: /guide/practices/ui_guidelines/icon_design.html
+ to: /design/style/iconography.html
+- from: /guide/practices/ui_guidelines/icon_design_action_bar.html
+ to: /design/style/iconography.html
+- from: /guide/practices/ui_guidelines/icon_design_launcher.html
+ to: /design/style/iconography.html
+- from: /guide/practices/ui_guidelines/icon_design_launcher_archive.html
+ to: /design/style/iconography.html
+- from: /guide/practices/ui_guidelines/icon_design_menu.html
+ to: /design/style/iconography.html
+- from: /guide/practices/ui_guidelines/icon_design_status_bar.html
+ to: /design/style/iconography.html
+- from: /guide/practices/ui_guidelines/icon_design_status_tab.html
to: /design/style/iconography.html
- from: /guide/practices/ui_guidelines/activity_task_design.html
to: /design/patterns/app-structure.html
@@ -355,7 +363,7 @@
to: /reference/android/support/
- from: /wear/license.html
to: /wear/index.html
-- from: /resources/dashboard/.*
+- from: /resources/dashboard/...
to: /about/dashboards/index.html
- from: /resources/community-groups.html
to: /support.html
@@ -389,20 +397,20 @@
to: /training/graphics/opengl/index.html
- from: /resources/tutorials/views/hello-mapview.html
to: https://developers.google.com/maps/documentation/android/hello-mapview
-- from: /resources/tutorials/views/.*
+- from: /resources/tutorials/views/...
to: /guide/topics/ui/declaring-layout.html#CommonLayouts
- from: /guide/topics/ui/layout-objects.html
to: /guide/topics/ui/declaring-layout.html#CommonLayouts
-- from: /guide/faq/.*
+- from: /guide/faq/...
to: /training/index.html
-- from: /resources/tutorials/localization/.*
+- from: /resources/tutorials/localization/...
to: /training/basics/supporting-devices/languages.html
-- from: /resources/samples/.*
+- from: /resources/samples/...
to: /samples/index.html
+- from: /resources/...
+ to: /training/
- from: /tools/samples/index.html
to: /samples/index.html
-- from: /resources/(?!articles)
- to: /training/
- from: /guide/publishing/publishing.html\#BuildaButton
to: https://play.google.com/intl/en_us/badges/
- from: /distribute/essentials/best-practices/games.html
@@ -423,13 +431,13 @@
to: /distribute/monetize/index.html
- from: /training/monetization/ads-and-ux.html
to: https://developers.google.com/mobile-ads-sdk/
-- from: /training/notepad/.*
+- from: /training/notepad/...
to: https://developer.android.com/training/basics/firstapp/index.html
- from: /training/basics/actionbar/setting-up.html
to: /training/appbar/setting-up.html
- from: /training/basics/actionbar/adding-buttons.html
to: /training/appbar/actions.html
-- from: /training/basics/actionbar(/.*)?
+- from: /training/basics/actionbar/...
to: /training/appbar/index.html
- from: /distribute/open.html
to: /distribute/tools/open-distribution.html
@@ -477,7 +485,7 @@
to: https://developers.google.com/edu/guidelines
- from: /distribute/essentials/gpfe-guidelines.html
to: https://developers.google.com/edu/guidelines
-- from: /distribute/googleplay/policies/.*
+- from: /distribute/googleplay/policies/...
to: https://support.google.com/googleplay/android-developer/answer/4430948
- from: /distribute/essentials/quality/index.html
to: /distribute/esentials/index.html
@@ -497,7 +505,7 @@
to: /distribute/engage/index.html
- from: /engage/community.html
to: /distribute/engage/index.html
-- from: /essentials/best-practices/*
+- from: /essentials/best-practices/...
to: /distribute/googleplay/guide.html
- from: /tools/index.html
to: /distribute/essentials/index.html#tools
@@ -531,19 +539,83 @@
to: /about/versions/android-4.1.html
- from: /4.0
to: /about/versions/android-4.0.html
-- from: /5/?$
+- from: /5
to: /about/versions/android-5.0.html
-- from: /(m|mm|marshmallow)/?$
+- from: /5/
+ to: /about/versions/android-5.0.html
+
+- from: /m
to: /about/versions/marshmallow/index.html
-- from: /(l|ll|lp|lollipop)/?$
+- from: /m/
+ to: /about/versions/marshmallow/index.html
+- from: /mm
+ to: /about/versions/marshmallow/index.html
+- from: /mm/
+ to: /about/versions/marshmallow/index.html
+- from: /marshmallow
+ to: /about/versions/marshmallow/index.html
+- from: /marshmallow/
+ to: /about/versions/marshmallow/index.html
+
+- from: /l
to: /about/versions/lollipop.html
-- from: /(k|kk|kitkat)/?$
+- from: /l/
+ to: /about/versions/lollipop.html
+- from: /ll
+ to: /about/versions/lollipop.html
+- from: /ll/
+ to: /about/versions/lollipop.html
+- from: /lp
+ to: /about/versions/lollipop.html
+- from: /lp/
+ to: /about/versions/lollipop.html
+- from: /lollipop
+ to: /about/versions/lollipop.html
+- from: /lollipop/
+ to: /about/versions/lollipop.html
+
+- from: /k
to: /about/versions/kitkat.html
-- from: /(j|jb|jellybean)/?$
+- from: /k/
+ to: /about/versions/kitkat.html
+- from: /kk
+ to: /about/versions/kitkat.html
+- from: /kk/
+ to: /about/versions/kitkat.html
+- from: /kitkat
+ to: /about/versions/kitkat.html
+- from: /kitkat/
+ to: /about/versions/kitkat.html
+
+- from: /j
to: /about/versions/jelly-bean.html
-- from: /(i|ics|icecreamsandwich)/?$
+- from: /j/
+ to: /about/versions/jelly-bean.html
+- from: /jj
+ to: /about/versions/jelly-bean.html
+- from: /jj/
+ to: /about/versions/jelly-bean.html
+- from: /jellybean
+ to: /about/versions/jelly-bean.html
+- from: /jellybean/
+ to: /about/versions/jelly-bean.html
+
+- from: /i
to: /about/versions/android-4.0-highlights.html
-- from: /%2B/?$
+- from: /i/
+ to: /about/versions/android-4.0-highlights.html
+- from: /ics
+ to: /about/versions/android-4.0-highlights.html
+- from: /ics/
+ to: /about/versions/android-4.0-highlights.html
+- from: /icecreamsandwich
+ to: /about/versions/android-4.0-highlights.html
+- from: /icecreamsandwich/
+ to: /about/versions/android-4.0-highlights.html
+
+- from: /%2B
+ to: https://plus.google.com/108967384991768947849/posts
+- from: /%2B/
to: https://plus.google.com/108967384991768947849/posts
- from: /blog
to: https://android-developers.blogspot.com/
@@ -551,21 +623,29 @@
to: /about/dashboards/index.html
- from: /youtube
to: https://www.youtube.com/user/androiddevelopers
-- from: /playbadge/?$
+- from: /playbadge
+ to: https://play.google.com/intl/en_us/badges/
+- from: /playbadge/
to: https://play.google.com/intl/en_us/badges/
- from: /distribute/tools/promote/badges.html
to: https://play.google.com/intl/en_us/badges/
-- from: /deviceart/?$
+- from: /deviceart
+ to: /distribute/tools/promote/device-art.html
+- from: /deviceart/
to: /distribute/tools/promote/device-art.html
- from: /distribute/promote/device-art.html
to: /distribute/tools/promote/device-art.html
-- from: /edu/signup/?$
- to: https://services.google.com/fb/forms/playedu
-- from: /edu/?$
- to: /distribute/googleplay/edu/about.html
- from: /edu/signup
to: https://services.google.com/fb/forms/playedu
-- from: /families/?$
+- from: /edu/signup/
+ to: https://services.google.com/fb/forms/playedu
+- from: /edu
+ to: /distribute/googleplay/edu/about.html
+- from: /edu/
+ to: /distribute/googleplay/edu/about.html
+- from: /families
+ to: /distribute/googleplay/families/about.html
+- from: /families/
to: /distribute/googleplay/families/about.html
- from: /preview/google-play-services-wear.html
to: /training/building-wearables.html
@@ -635,12 +715,44 @@
to: /training/enterprise/index.html
- from: /distribute/tools/promote/badge-files.html
to: https://play.google.com/intl/en_us/badges/
-- from: /google/gcm/.*
+- from: /google/gcm/...
to: https://developers.google.com/cloud-messaging/
- from: /training/cloudsync/gcm.html
to: /training/cloudsync/index.html
-- from: /sdk/api_diff/([3-9]|1[0-8])/.*
- to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/\1.tar.gz
+
+- from: /sdk/api_diff/3/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/3.tar.gz
+- from: /sdk/api_diff/4/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/4.tar.gz
+- from: /sdk/api_diff/5/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/5.tar.gz
+- from: /sdk/api_diff/6/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/6.tar.gz
+- from: /sdk/api_diff/7/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/7.tar.gz
+- from: /sdk/api_diff/8/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/8.tar.gz
+- from: /sdk/api_diff/9/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/9.tar.gz
+- from: /sdk/api_diff/10/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/10.tar.gz
+- from: /sdk/api_diff/11/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/11.tar.gz
+- from: /sdk/api_diff/12/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/12.tar.gz
+- from: /sdk/api_diff/13/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/13.tar.gz
+- from: /sdk/api_diff/14/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/14.tar.gz
+- from: /sdk/api_diff/15/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/15.tar.gz
+- from: /sdk/api_diff/16/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/16.tar.gz
+- from: /sdk/api_diff/17/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/17.tar.gz
+- from: /sdk/api_diff/18/...
+ to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/18.tar.gz
+
- from: /android-pay
to: https://developers.google.com/android-pay
- from: /google/play/billing/gp-purchase-status-api.html
@@ -669,9 +781,21 @@
to: /training/monitoring-device-state/doze-standby.html
- from: /preview/dev-community
to: https://plus.google.com/communities/103655397235276743411
-- from: /preview/(bug|bugreport)/?$
+- from: /preview/bug
to: https://code.google.com/p/android/issues/entry?template=Developer%20preview%20report
-- from: /preview/(bugs|bugreports)/?$
+- from: /preview/bug/
+ to: https://code.google.com/p/android/issues/entry?template=Developer%20preview%20report
+- from: /preview/bugreport
+ to: https://code.google.com/p/android/issues/entry?template=Developer%20preview%20report
+- from: /preview/bugreport/
+ to: https://code.google.com/p/android/issues/entry?template=Developer%20preview%20report
+- from: /preview/bugs
+ to: https://code.google.com/p/android/issues/list?can=2&q=label%3ADevPreview-N
+- from: /preview/bugs/
+ to: https://code.google.com/p/android/issues/list?can=2&q=label%3ADevPreview-N
+- from: /preview/bugreports
+ to: https://code.google.com/p/android/issues/list?can=2&q=label%3ADevPreview-N
+- from: /preview/bugreports/
to: https://code.google.com/p/android/issues/list?can=2&q=label%3ADevPreview-N
- from: /2016/03/first-preview-of-android-n-developer.html
to: http://android-developers.blogspot.com/2016/03/first-preview-of-android-n-developer.html
@@ -717,7 +841,7 @@
to: /tools/devices/emulator.html
- from: /r/studio-ui/instant-run.html
to: /tools/building/building-studio.html#instant-run
-- from: /reference/org/apache/http/.*
+- from: /reference/org/apache/http/...
to: /about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
- from: /shareables/
to: https://commondatastorage.googleapis.com/androiddevelopers/shareables/
@@ -734,3 +858,7 @@
- from: /tools/testing-support-library
to: /go/libraries/testing-support-library
+
+# GCM redirects
+- from: /reference/com/google/...
+ to: https://developers.google.com/android/reference/com/google/...
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index f0e1a3c..c61837b 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -1,5 +1,5 @@
page.title=Dashboards
-page.metaDescription=page.metaDescription=An overview of device characteristics and platform versions that are active in the Android ecosystem.
+page.metaDescription=An overview of device characteristics and platform versions that are active in the Android ecosystem.
page.tags="android, dashboard, platforms, versions"
meta.tags="ecosystem, versions, whatsnew, dashboards"
page.image=https://chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0%7CGL%203.1&chf=bg%2Cs%2C00000000&chd=t%3A51.6%2C40.7%2C7.7&chco=c4df9b%2C6fad0c&cht=p&chs=400x250
@@ -59,7 +59,7 @@
</div>
-<p style="clear:both"><em>Data collected during a 7-day period ending on April 4, 2016.
+<p style="clear:both"><em>Data collected during a 7-day period ending on May 2, 2016.
<br/>Any versions with less than 0.1% distribution are not shown.</em>
</p>
@@ -90,7 +90,7 @@
</div>
-<p style="clear:both"><em>Data collected during a 7-day period ending on April 4, 2016.
+<p style="clear:both"><em>Data collected during a 7-day period ending on May 2, 2016.
<br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p>
@@ -110,7 +110,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%3A50.9%2C40.7%2C8.4&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%3A49.6%2C41.4%2C9.0&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
@@ -128,21 +128,21 @@
</tr>
<tr>
<td>2.0</td>
-<td>50.9%</td>
+<td>49.6%</td>
</tr>
<tr>
<td>3.0</td>
-<td>40.7%</td>
+<td>41.4%</td>
</tr>
<tr>
<td>3.1</td>
-<td>8.4%</td>
+<td>9.0%</td>
</tr>
</table>
-<p style="clear:both"><em>Data collected during a 7-day period ending on April 4, 2016</em></p>
+<p style="clear:both"><em>Data collected during a 7-day period ending on May 2, 2016</em></p>
@@ -155,20 +155,20 @@
"data": {
"Large": {
"hdpi": "0.5",
- "ldpi": "0.3",
+ "ldpi": "0.2",
"mdpi": "4.6",
"tvdpi": "2.2",
"xhdpi": "0.5"
},
"Normal": {
- "hdpi": "41.5",
- "mdpi": "4.9",
+ "hdpi": "41.1",
+ "mdpi": "4.5",
"tvdpi": "0.1",
- "xhdpi": "23.9",
- "xxhdpi": "14.9"
+ "xhdpi": "24.9",
+ "xxhdpi": "15.1"
},
"Small": {
- "ldpi": "2.4"
+ "ldpi": "2.1"
},
"Xlarge": {
"hdpi": "0.3",
@@ -176,8 +176,8 @@
"xhdpi": "0.7"
}
},
- "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A2.7%2C12.7%2C2.3%2C42.3%2C25.1%2C14.9&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250",
- "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.2%2C8.1%2C85.3%2C2.4&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250"
+ "densitychart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chs=400x250&cht=p&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A2.3%2C12.3%2C2.3%2C41.9%2C26.1%2C15.1&chf=bg%2Cs%2C00000000",
+ "layoutchart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chs=400x250&cht=p&chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.2%2C8.0%2C85.7%2C2.1&chf=bg%2Cs%2C00000000"
}
];
@@ -185,7 +185,7 @@
var VERSION_DATA =
[
{
- "chart": "//chart.googleapis.com/chart?chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop%7CMarshmallow&chd=t%3A0.1%2C2.6%2C2.2%2C21.3%2C33.4%2C35.8%2C4.6&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=500x250",
+ "chart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chs=500x250&cht=p&chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop%7CMarshmallow&chd=t%3A0.1%2C2.2%2C2.0%2C20.1%2C32.5%2C35.6%2C7.5&chf=bg%2Cs%2C00000000",
"data": [
{
"api": 8,
@@ -195,37 +195,37 @@
{
"api": 10,
"name": "Gingerbread",
- "perc": "2.6"
+ "perc": "2.2"
},
{
"api": 15,
"name": "Ice Cream Sandwich",
- "perc": "2.2"
+ "perc": "2.0"
},
{
"api": 16,
"name": "Jelly Bean",
- "perc": "7.8"
+ "perc": "7.2"
},
{
"api": 17,
"name": "Jelly Bean",
- "perc": "10.5"
+ "perc": "10.0"
},
{
"api": 18,
"name": "Jelly Bean",
- "perc": "3.0"
+ "perc": "2.9"
},
{
"api": 19,
"name": "KitKat",
- "perc": "33.4"
+ "perc": "32.5"
},
{
"api": 21,
"name": "Lollipop",
- "perc": "16.4"
+ "perc": "16.2"
},
{
"api": 22,
@@ -235,7 +235,7 @@
{
"api": 23,
"name": "Marshmallow",
- "perc": "4.6"
+ "perc": "7.5"
}
]
}
diff --git a/docs/html/channels/io2013.jd b/docs/html/channels/io2013.jd
deleted file mode 100644
index 2efda28..0000000
--- a/docs/html/channels/io2013.jd
+++ /dev/null
@@ -1,347 +0,0 @@
-excludeFromSuggestions=true
-fullpage=true
-page.title=Google I/O 13
-@jd:body
-
-<style>
-#ioplayer-frame {
- z-index:10;
- width:703px;
- height:396px;
- margin:0;
- position:relative;
-}
-
-#noplayer-message {
- position:absolute;
- top:50%;left:0;
- width:100%;
- z-index:-1;
- text-align:center;
- display:none;
-}
-
-h1 {
- font-weight:100;
- font-size:40px;
- line-height:30px;
- margin:30px 0 10px 0px;
- color:#000;
-}
-
-h2 {
- font-weight:100;
- font-size:30px;
- line-height:30px;
- margin:12px 0 10px 0px;
- color:#000;
- float:left;
- display:block;
-}
-
-.col-4 h2 {
- margin-top:40px;
-}
-
-ul.videos {
- list-style:none;
- margin:0;
- width:auto;
-}
-ul.videos li {
- display:block;
- float:left;
- position:relative;
- margin:0 2px 2px 0;
- background-repeat:no-repeat !important;
- background-size:320px auto;
- background-position:10% 50%;
- z-index:1; /* IE: the description is 2 */
-}
-ul.videos li a {
- color:#fff !important;
- display:block;
- margin:0;
- padding:8px 12px;
- width:209px;
- height:134px;
- box-shadow:inset 500px 500px 999px rgba(000, 000, 000, 0.2);
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0,0,0,0.8)), color-stop(1, transparent));
- background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.8), transparent);
- background-image: -moz-linear-gradient(top, rgba(0,0,0,0.8), transparent);
- background-image: -o-linear-gradient(top, rgba(0,0,0,0.8), transparent);
- background-image: linear-gradient(to bottom, rgba(0,0,0,0.8), transparent);
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc000000', endColorstr='#00ffffff',GradientType=0 ); /* IE6-9 */
-}
-ul.videos.featured li {
- margin:0 0 2px;
-}
-ul.videos.featured li a {
- margin:0;
- height:115px;
-}
-ul.videos li a:hover {
- box-shadow:inset 500px 500px 999px rgba(255,255,255, 0.6);
-}
-ul.videos li h4 {
- text-shadow:1px 1px 0 rgba(0,0,0,0.8);
- font-size:18px;
- line-height:22px;
- color:#fff;
- margin:0;
- height:100%; /* IE: to fill clickable area */
-}
-
-ul.videos li .description-frame {
- display:none;
- z-index:2; /* IE: the li is 1 */
-}
-ul.videos li a:hover .description-frame {
- display:block;
- position:absolute;
- top:80px;
- left:8px;
- z-index:99;
-}
-ul.videos .description {
- background:#fff;
- width:200px;
- padding:8px;
- -webkit-border-radius:1px;
- -moz-border-radius:1px;
- border-radius:1px;
- -moz-box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4);
- -webkit-box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4);
- box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4);
- font-size:11px;
- line-height:12px;
- color:#000;
- overflow:hidden;
-}
-ul.videos .arrow-up {
- position:absolute;
- left:15px;
- top:-11px;
- width:0;
- height:0;
- border-bottom:12px solid #fff;
- border-left:12px solid transparent;
- border-right:12px solid transparent;
-}
-ul.videos .arrow-down {
- position:absolute;
- left:15px;
- bottom:-11px;
- width:0;
- height:0;
- border-top:12px solid #fff;
- border-left:12px solid transparent;
- border-right:12px solid transparent;
-}
-
-ul.videos span.tag {
- font-size:.9em;
- font-weight:normal;
- display: block;
- position: absolute;
- bottom: 0;
- color: #fff;
- left: 0;
- padding: 4px;
- border-top-right-radius:4px;
- text-transform:uppercase;
- text-shadow: none;
-}
-ul.videos span.tag.design {
- background-color:rgba(51, 181, 229, .7);
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc33b5e5', endColorstr='#cc33b5e5',GradientType=0 ); /* IE6-9 */
-}
-ul.videos span.tag.develop {
- background-color:rgba(255, 136, 0, .7);
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ccff8800', endColorstr='#ccff8800',GradientType=0 ); /* IE6-9 */
-}
-ul.videos span.tag.distribute {
- background-color:rgba(153, 204, 0, .7);
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc99cc00', endColorstr='#cc99cc00',GradientType=0 ); /* IE6-9 */
-}
-
-</style>
-
-
-
-
-
-
-
-<div class="wrap">
-
- <div class="col-12" style="width:704px;margin:0">
- <h1>Android @ Google I/O 13</h1>
- <div id="ioplayer-frame">
- <div id="noplayer-message">
- <!-- busted flash player message -->
- Your video is supposed to appear here.<br/>
- Make sure you have the <a href="//get.adobe.com/flashplayer/" target="_blank">Flash® Player</a>.
- </div>
- <div id="player"><!-- Youtube embeds here... actually replaces this div --></div>
- </div>
- </div>
-
- <div class="col-4" style="margin:0;width:234px;padding:0 0 0 2px">
- <h2 class="norule">Most Popular</h2>
- <ul class="videos featured" id="playlist2">
- </ul>
- </div>
-</div>
-
-<div class="wrap">
-
- <div style="position:absolute;width:940px;text-align:right">
- <a href="//www.youtube.com/AndroidDevelopers" target="_blank">
- More on YouTube
- <img src="//www.youtube.com/favicon.ico" style="border:0;width:16px;height:16px;vertical-align:middle;margin:0 2px 3px 2px">
- </a>
- </div>
- <div style="width:944px;overflow:hidden;padding:0 0 20px">
- <h2 class="norule">All Videos</h2>
- <ul class="videos" id="playlist1" style="clear:left">
- <span id="videos-design"></span>
- <span id="videos-develop"></span>
- <span id="videos-distribute"></span>
- </ul>
- </div>
-
-</div>
-
-<br class="clearfix"/>
-
-
-
-
-
-
-
-
-
-
-
-<script src="//swfobject.googlecode.com/svn/trunk/swfobject/swfobject.js" type="text/javascript"></script>
-<script type="text/javascript">
-
-/* Load a video into the player box.
- * @param id The YouTube video ID
- * @param title The video title to display in the player box (character escaped)
- * @param autoplay Whether to automatically play the video
- */
-function loadVideo(id, title, autoplay) {
- var url = '//www.youtube.com/v/' + id + '&rel=1&border=0&fs=1' + (autoplay?'&autoplay=1':'');
- swfobject.embedSWF(url, 'player', '704', '397', '9.0.0', false, false, {allowfullscreen: 'true'});
- $('body,html').animate({ scrollTop: 0 }, "slow");
- setTimeout(function(){$('#noplayer-message').show()}, 2000);
-}
-
-
-function buildPlaylistDesign(data) {
- buildPlaylist(data, $('ul#playlist1 #videos-design'), "design");
-}
-
-function buildPlaylistDevelop(data) {
- buildPlaylist(data, $('ul#playlist1 #videos-develop'), "develop");
-}
-
-function buildPlaylistDistribute(data) {
- buildPlaylist(data, $('ul#playlist1 #videos-distribute'), "distribute");
-}
-
-function buildPlaylist2(data) {
- buildPlaylist(data, $('ul#playlist2'));
-}
-
-function buildPlaylist(data, ul, tag) {
-
- var MAX_DESC_LENGTH = 200; // the length at which we will trim the description
- var feed = data.feed;
- var entries = feed.entry || [];
- var playlistId = feed.yt$playlistId.$t;
-
- // Loop through each entry (each video) and add it to the '#DevelopersLive' list
- for (var i = 0; i < entries.length; i++) {
- var entry = entries[i];
- var title = entry.title.$t;
- var id = entry.media$group.yt$videoid.$t;
- // get 180x320 thumbnail
- var thumbs = entry.media$group.media$thumbnail;
- var thumbUrl;
- for (var j = 0; j < thumbs.length; j++) {
- if (thumbs[j].yt$name == "hqdefault") {
- thumbUrl = thumbs[j].url;
- }
- }
-
- // chop out the google io title
- title = title.substr(title.indexOf("-") + 1, title.length);
-
- var fullDescription = entry.media$group.media$description.$t;
- var playerUrl = entry.media$group.media$content[0].url;
- var shortDescription = fullDescription.substr(0, MAX_DESC_LENGTH);
- // further shorten description if there's a url (remove it)
- var httpindex = shortDescription.indexOf("http://");
- if (httpindex != -1) {
- shortDescription = shortDescription.substring(0,httpindex);
- }
- shortDescription += shortDescription.length == MAX_DESC_LENGTH ? "..." : ""; // add ellipsis if we've chopped the description
-
- var a = $('<a href="#" id="' + id + '" '
- + 'onclick="loadVideo(\'' + id + '\',\'' + escape(title) + '\',true); return false;" />');
- var pShortDescription = $('<div class="description-frame"><div class="arrow-up"></div>'
- + '<div class="description">' + shortDescription + '</div></div>');
- var h4Title = "<h4>" + title + "</h4>";
- var li = $('<li style="background-image:url(\'' + thumbUrl +'\')" />');
-
- li.append(a);
- a.append(h4Title).append(pShortDescription);
-
- if (tag !== undefined) {
- var $tag = $('<span class="tag ' + tag + '">' + tag + '</span>');
- a.append($tag);
- }
-
- ul.append(li);
-
-
- // put the first video in the player
- if ((tag == "design") && (i == 0)) {
- loadVideo(id, escape(title), false);
- }
- }
-}
-
-
-/* Request the playlist feeds from YouTube */
-function showDevelopersLivePlaylist() {
- var playlistId = "PLWz5rJ2EKKc-qVhMuAprIFYFbCotdgJKq"; /* IO 13 - Design */
- $.getScript("//gdata.youtube.com/feeds/api/playlists/"
- + playlistId +
- "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDesign&orderby=position");
-
- playlistId = "PLWz5rJ2EKKc9rkwO9yBosRvkQBJd5utmR"; /* IO 13 - Develop */
- $.getScript("//gdata.youtube.com/feeds/api/playlists/"
- + playlistId +
- "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDevelop&orderby=position");
-
- playlistId = "PLWz5rJ2EKKc-1WjgQqL0B4OQtbLfhMlB2"; /* IO 13 - Distribute */
- $.getScript("//gdata.youtube.com/feeds/api/playlists/"
- + playlistId +
- "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDistribute&orderby=position");
-
-
- playlistId = "PLWz5rJ2EKKc9WGUwq2gQ-coU3fSyexgOx"; /* IO 13 - The Android Sessions */
- $.getScript("//gdata.youtube.com/feeds/api/playlists/"
- + playlistId +
- "?v=2&alt=json-in-script&max-results=3&callback=buildPlaylist2&orderby=viewCount");
-}
-
-showDevelopersLivePlaylist();
-
-
-</script>
\ No newline at end of file
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index ecd374b..f155521 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -1,3 +1,11 @@
+/*
+ * THIS FILE IS DEPRECATED.
+ *
+ * Please add and edit resource collections in jd_extras_<lang>.js
+ * where lang matches the language code appropriate for the resource.
+ * Last sync'd with jd_extras_<lang>.js on 29 Apr 2016.
+ *
+ */
var RESOURCE_COLLECTIONS = {
"index/carousel": {
"title": "",
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index 9663fd0b..d176883 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -1,18 +1,11 @@
-/* Metadata represendations of resources that are outside of the autogenerated
- local resource lists, or that override local resource representations.
-
- Resources listed here are referenced from sitemap sections and collections,
- matched by url string if there is no resource existing in ALL_RESOURCES.
-
- Currently, these articles can override only the generated resources
- in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
- when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
- Also
- So if a section url refers to a static doc that's
- not in a distribute section, you need to create an item for
- it in this file. Fix is to compare across
- ALL_RESOURCES_BY_URL. */
-
+/*
+ * THIS FILE IS DEPRECATED.
+ *
+ * Please add and edit resource collections in jd_extras_<lang>.js
+ * where lang matches the language code appropriate for the resource.
+ * Last sync'd with jd_extras_<lang>.js on 29 Apr 2016.
+ *
+ */
DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
/* TODO Remove standard resources from here, such as below
*/
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
index b1d7efc..e3fbb25 100644
--- a/docs/html/jd_extras_en.js
+++ b/docs/html/jd_extras_en.js
@@ -1,22 +1,55 @@
-/* Metadata represendations of resources that are outside of the autogenerated
- local resource lists, or that override local resource representations.
+/* Metadata extensions for the specified language
+ as well as resource collection definitions.
- Resources listed here are referenced from queries and collections,
- matched by url string.
+ 'Extras' defined in this file are metadata represendations of
+ resources that are outside the autogenerated local resource lists,
+ or representations that override the default representations.
+ (Overriding the default is not recommended)
- Currently, these articles can override only the generated resources
- in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
- when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
- Also
- So if a section url refers to a static doc that's
- not in a distribute section, you need to create an item for
- it in this file. Fix is to compare across
- ALL_RESOURCES_BY_URL. */
+ 'Collections' are a predefined set of resources that pages can
+ display by referencing the collection name in a data query. Urls
+ listed in a collection must map exactly to urls in local metadata
+ resources (either default or extras).
+
+ 'Carousel overrides' are extras that override a default resource
+ for the purpose of customizing the text and display in carousels/heros.
+ Urls referenced must map exactly to urls in local metadata
+ resources (either default or extras).
+
+ 'Static search results' are metadata objects that are returned in
+ the search results page when the user enters the object's keyword.
+
+ The extras, collections, carousel overrides, and static search results
+ listed here are referenced from dynamic content queries, matched by
+ url string.
+ */
METADATA['en'].extras = METADATA['en'].extras.concat([
/* TODO Remove standard resources from here, such as below
*/
{
+ "title":"Writing More Code by Writing Less Code with Android Studio Live Templates",
+ "category":"",
+ "summary":"Unless you’re getting paid by the keystroke, no one wants to write repetitive boilerplate code.",
+ "url":"https://medium.com/google-developers/writing-more-code-by-writing-less-code-with-android-studio-live-templates-244f648d17c7#.hczcm02du",
+ "group":"",
+ "keywords": [],
+ "tags": ['studio'],
+ "image":"https://cdn-images-1.medium.com/max/800/1*JkrYXGs1AxZAbK0sCLrJAQ.gif",
+ "type":"medium"
+ },
+ {
+ "title":"How Often Should You Update Android Studio?",
+ "category":"",
+ "summary":"One of the beauties of Android Studio is how quickly is evolves and improves.",
+ "url":"https://medium.com/google-developers/how-often-should-you-update-android-studio-db25785c488e#.8blbql35x",
+ "group":"",
+ "keywords": [],
+ "tags": ['studio'],
+ "image":"https://cdn-images-1.medium.com/max/2000/1*chMiA9mGa_FBUOoesHHk3Q.png",
+ "type":"medium"
+ },
+ {
"title":"Measure your app’s user acquisition channels",
"category":"google",
"summary":"Get details on how to use the Developer Console User Acquisitions reports to discover where your users come from.",
@@ -642,7 +675,18 @@
"keywords": [],
"tags": [],
"image":"distribute/images/gp-edu-apps-image.jpg",
- "type":"distribute"
+ "type":"google"
+ },
+ {
+ "title":"Keeping Your App Responsive",
+ "category":"performance",
+ "summary":"This document describes how the Android system determines whether an application is not responding and provides guidelines for ensuring that your application stays responsive.",
+ "url":"training/articles/perf-anr.html",
+ "group":"",
+ "keywords": [],
+ "tags": [],
+ "image":"",
+ "type":"google"
},
{
"title":"Google Play Game Services",
@@ -770,7 +814,7 @@
"type": "distribute",
"category": "google play"
},
-{
+ {
"lang": "en",
"group": "",
"tags": [],
@@ -1266,7 +1310,7 @@
"lang": "en",
"group": "",
"tags": [
- "#gcm",
+ "gcm",
],
"url": "https://developer.chrome.com/apps/cloudMessagingV2",
"timestamp": 1383243492000,
@@ -1277,12 +1321,11 @@
"type": "distribute",
"category": "google"
},
-
{
"lang": "en",
"group": "",
"tags": [
- "#sdkupdates"
+ ""
],
"url": "https://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
"timestamp": 1194884220000,
@@ -1293,11 +1336,11 @@
"type": "blog",
"category": ""
},
- {
+ {
"lang": "en",
"group": "",
"tags": [
- "#sdkupdates"
+ ""
],
"url": "https://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
"timestamp": 1194884220000,
@@ -1308,11 +1351,11 @@
"type": "blog",
"category": ""
},
- {
+ {
"lang": "en",
"group": "",
"tags": [
- "#sdkupdates"
+ ""
],
"url": "https://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html",
"timestamp": 1194884220000,
@@ -2901,6 +2944,18 @@
"type":"distribute"
},
{
+ "title":"What’s New in Android N Developer Preview",
+ "category":"preview",
+ "summary":"Learn all about the new features in the Android N Preview.",
+ "url":"https://www.youtube.com/watch?v=CsulIu3UaUM",
+ "group":"",
+ "keywords": ["androidn"],
+ "tags": [],
+ "image":"https://i1.ytimg.com/vi/CsulIu3UaUM/maxresdefault.jpg",
+ "lang":"en",
+ "type":"youtube"
+ },
+ {
"title":"Developing for Android 6.0 (Marshmallow)",
"category":"",
"summary":"This video covers how to get started with the preview, important APIs to test and how to provide feedback on the preview.",
@@ -3120,6 +3175,31 @@
"summary": "Learn how to get new users, using Universal app campaigns directly within the Google Play Developer Console to increase your installs from ads, and find out how your acquisition channels perform.",
},
{
+ "lang": "en",
+ "group": "",
+ "tags": ["play,protips"],
+ "url": "shareables/distribute/secrets_play/v2/web/secrets_to_app_success_v2_en.pdf",
+ "timestamp": 1447437450,
+ "image": "images/distribute/secrets_v2_banner.jpg",
+ "title": "The Secrets to App Success on Google Play",
+ "summary": "Get the updated guide full of useful features, tips, and best practices that will help you grow a successful app or game business on Google Play.",
+ "keywords": ["secrets, success, play, google"],
+ "type": "Book",
+ "category": "distribute"
+ },
+ {
+ "lang": "en",
+ "group": "",
+ "tags": ["studio,sdk"],
+ "url": "studio/index.html",
+ "timestamp": 1462292883,
+ "image": "images/cards/android-studio_2x.png",
+ "title": "Download Android Studio and SDK Tools",
+ "summary": "Get the official Android IDE and developer tools to build apps for Android.",
+ "type": "develop",
+ "category": "studio"
+ },
+ {
"url":"panel1",
"image": "",
"title": "",
@@ -3198,28 +3278,28 @@
"title": "Android 5.0 Lollipop",
"summary": "The Android 5.0 update adds a variety of new features for your apps, such as notifications on the lock screen, an all-new camera API, OpenGL ES 3.1, the new naterial design interface, and much more.",
},
- "http://www.youtube.com/watch?v=Pms0pcyPbAM": {
+ "https://www.youtube.com/watch?v=Pms0pcyPbAM": {
"url":"https://www.youtube.com/watch?v=Pms0pcyPbAM&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c]",
"image": "images/distribute/hero-carousel-giftedmom.jpg",
"title": "Gifted Mom reaches more mothers across Africa with Android",
"type":"youtube",
"summary": "Gifted Mom is an app developed in Cameroon which provides users with critical information about pregnancy, breastfeeding and child vaccinations. Hear the creators explain how they built their business and launched on Google Play.",
},
- "http://www.youtube.com/watch?v=9m6MoBM-sFI": {
+ "https://www.youtube.com/watch?v=9m6MoBM-sFI": {
"url":"https://www.youtube.com/watch?v=9m6MoBM-sFI&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=3",
"image": "images/distribute/hero-carousel-sgn.jpg",
"title": "SGN increases installs with Store Listing Experiments",
"type" : "youtube",
"summary": "Watch mobile game developer SGN talk about how using Store Listing Experiments to test multiple variants across their portfolio of games helped improve their ROI, conversion rates and gamer retention.",
},
- "http://www.youtube.com/watch?v=e7t3svG9PTk": {
+ "https://www.youtube.com/watch?v=e7t3svG9PTk": {
"url":"https://www.youtube.com/watch?v=e7t3svG9PTk&index=2&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
"image": "images/distribute/hero-carousel-djit.jpg",
"title": "DJiT builds higher quality experiences on Android",
"type" : "youtube",
"summary": "Learn how Music app developer DJiT create higher quality apps with improved latency on Android Marshmallow, as well as other Android and Google Play features.",
},
- "http://www.youtube.com/watch?v=J3IvOfvH1ys": {
+ "https://www.youtube.com/watch?v=J3IvOfvH1ys": {
"url":"https://www.youtube.com/watch?v=J3IvOfvH1ys&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=1",
"image": "images/distribute/hero-carousel-wego.jpg",
"title": "Wego increases user retention with material design",
@@ -3269,16 +3349,16 @@
"resources": [
"training/building-wearables.html",
"training/material/index.html",
- "sdk/index.html"
+ "studio/index.html"
]
},
"index/secondary/carousel": {
"title": "",
"resources": [
- "http://www.youtube.com/watch?v=Pms0pcyPbAM",
- "http://www.youtube.com/watch?v=9m6MoBM-sFI",
- "http://www.youtube.com/watch?v=e7t3svG9PTk",
- "http://www.youtube.com/watch?v=J3IvOfvH1ys"
+ "https://www.youtube.com/watch?v=9m6MoBM-sFI",
+ "https://www.youtube.com/watch?v=Pms0pcyPbAM",
+ "https://www.youtube.com/watch?v=e7t3svG9PTk",
+ "https://www.youtube.com/watch?v=J3IvOfvH1ys"
]
},
"index/multiscreen": {
@@ -3379,7 +3459,6 @@
"title": "",
"resources": [
"https://www.youtube.com/watch?v=K2dodTXARqc&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
- "https://www.youtube.com/watch?v=3PIc-DuEU2s&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
"https://www.youtube.com/watch?v=cD7NPxuuXYY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
"https://www.youtube.com/watch?v=JLLnhwtDoHw&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
"https://www.youtube.com/watch?v=2I6fuD20qlY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
@@ -4622,10 +4701,11 @@
"resources": [
"training/enterprise/app-compatibility.html",
"training/enterprise/app-restrictions.html",
+ "training/enterprise/cosu.html",
"https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
"samples/AppRestrictionSchema/index.html",
- "samples/AppRestrictionEnforcer/index.html",
- "https://www.youtube.com/watch?v=dH41OutAMNM"
+ "https://www.youtube.com/watch?v=dH41OutAMNM",
+ "samples/AppRestrictionEnforcer/index.html"
]
},
"training/work/admin": {
@@ -4636,6 +4716,37 @@
"https://www.youtube.com/watch?v=j3QC6hcpy90"
]
},
+"tools/help/log": {
+ "title": "",
+ "resources": [
+ "tools/help/am-logcat.html"
+ ]
+ },
+"tools/help/monitor": {
+ "title": "",
+ "resources": [
+ "tools/help/am-memory.html",
+ "tools/help/am-cpu.html",
+ "tools/help/am-gpu.html",
+ "tools/help/am-network.html"
+ ]
+ },
+ "tools/help/data": {
+ "title": "",
+ "resources": [
+ "tools/help/am-hprof.html",
+ "tools/help/am-allocation.html",
+ "tools/help/am-methodtrace.html",
+ "tools/help/am-sysinfo.html"
+ ]
+ },
+ "tools/help/shot": {
+ "title": "",
+ "resources": [
+ "tools/help/am-screenshot.html",
+ "tools/help/am-video.html"
+ ]
+ },
"tools/performance/rendering": {
"title": "",
"resources": [
@@ -4738,6 +4849,7 @@
"preview/landing/more": {
"title": "",
"resources": [
+ "https://www.youtube.com/watch?v=CsulIu3UaUM",
"preview/features/multi-window.html",
"preview/features/notification-updates.html",
"preview/features/background-optimization.html",
@@ -4754,6 +4866,9 @@
/**
* Static search results.
+
+ Metadata objects returned in search results page when the user enters
+ each object's keyword.
*/
METADATA['en'].searchHeroCollections = {
"material": {
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 55b4eb5..4a7b879 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -37,6 +37,7 @@
<li><a href="#scoped_directory_access">Scoped directory access</a></li>
<li><a href="#launcher_shortcuts">Launcher shortcuts</a></li>
<li><a href="#print_svc">Print service enhancements</a></li>
+ <li><a href="#virtual_files">Virtual Files</a></li>
</ol>
</div>
</div>
@@ -853,3 +854,86 @@
For more information about these methods, see the downloadable <a href=
"{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>.
</p>
+
+<h2 id="virtual_files">Virtual Files</h2>
+
+<p>
+ In previous versions of Android, your app could use the Storage Access
+ Framework to allow users to select files from their cloud storage accounts,
+ such as Google Drive. However, there was no way to represent files that did
+ not have a direct bytecode representation; every file was required to provide
+ an input stream.
+</p>
+
+<p>
+ Android N 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
+ provide alternate formats for user files, virtual or otherwise.
+</p>
+
+<p>
+ To get a URI for a virtual document in your app, first you create an
+ {@link android.content.Intent} to open the file picker UI. Since an app
+ cannot directly open a virtual file by using the
+ {@link android.content.ContentResolver#openInputStream(Uri) openInputStream()}
+ method, your app does not receive any virtual files if you include the
+ {@link android.content.Intent#CATEGORY_OPENABLE} category.
+</p>
+
+<p>
+ After the user has made a selection, the system calls the
+ {@link android.app.Activity#onActivityResult onActivityResult()} method.
+ Your app can retrieve the URI of the virtual file and get an input stream, as
+ demonstrated in the code snippet below.
+</p>
+
+<pre>
+ // Other Activity code ...
+
+ final static private int REQUEST_CODE = 64;
+
+ // We listen to the OnActivityResult event to respond to the user's selection.
+ @Override
+ public void onActivityResult(int requestCode, int resultCode,
+ Intent resultData) {
+ try {
+ if (requestCode == REQUEST_CODE &&
+ resultCode == Activity.RESULT_OK) {
+
+ Uri uri = null;
+
+ if (resultData != null) {
+ uri = resultData.getData();
+
+ ContentResolver resolver = getContentResolver();
+
+ // Before attempting to coerce a file into a MIME type,
+ // check to see what alternative MIME types are available to
+ // coerce this file into.
+ String[] streamTypes =
+ resolver.getStreamTypes(uri, "*/*");
+
+ AssetFileDescriptor descriptor =
+ resolver.openTypedAssetFileDescriptor(
+ uri,
+ streamTypes[0],
+ null);
+
+ // Retrieve a stream to the virtual file.
+ InputStream inputStream = descriptor.createInputStream();
+ }
+ }
+ } catch (Exception ex) {
+ Log.e("EXCEPTION", "ERROR: ", ex);
+ }
+ }
+</pre>
+
+<p>
+ For more information about accessing user files, see the
+ <a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
+ Access Frameworks guide</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/preview/behavior-changes.jd b/docs/html/preview/behavior-changes.jd
index 0cf5bc9..7c8bfe8 100644
--- a/docs/html/preview/behavior-changes.jd
+++ b/docs/html/preview/behavior-changes.jd
@@ -215,11 +215,17 @@
<ul>
<li>
- Private files’ file permissions can no longer be relaxed by the owner, and
- an attempt to do so using
+ Private files’ file permissions should no longer be relaxed by the owner,
+ and an attempt to do so using
{@link android.content.Context#MODE_WORLD_READABLE} and/or
{@link android.content.Context#MODE_WORLD_WRITEABLE}, will trigger a
{@link java.lang.SecurityException}.
+ <p class="note">
+ <strong>Note:</strong> As of yet, this restriction is not fully enforced.
+ Apps may still modify permissions to their private directory using
+ native APIs or the {@link java.io.File File} API. However, we strongly
+ discourage relaxing the permissions to the private directory.
+ </p>
</li>
<li>
Passing <code>file://</code> URIs outside the package domain may leave the
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
deleted file mode 100644
index 1e7761b..0000000
--- a/docs/html/sdk/index.jd
+++ /dev/null
@@ -1,536 +0,0 @@
-page.title=Download Android Studio and SDK Tools
-page.tags=sdk, android studio
-page.template=sdk
-section.landing=true
-header.hide=1
-nonavpage=true
-fullpage=true
-page.image=images/cards/android-studio_2x.png
-page.metaDescription=Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.
-
-@jd:body
-
-<style>
-.download-bundle-button {line-height:18px;}
-.download-bundle-button .small {font-size: 12px; opacity: 0.7;}
-</style>
-
- <section class="dac-expand dac-hero dac-light">
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-1of2 col-push-1of2 dac-hero-figure">
- <img class="dac-hero-image" src="/images/develop/hero_image_studio5_2x.png" srcset="/images/develop/hero_image_studio5.png 1x, /images/develop/hero_image_studio5_2x.png 2x">
- </div>
- <div class="col-1of2 col-pull-1of2" style="margin-bottom:40px">
-<h1 class="dac-hero-title">Android Studio<br>
-<span style="font-size: 65%;">The Official IDE for Android</span></h1>
-
-<p class="dac-hero-description">Android Studio provides the fastest tools for
-building apps on every type of Android device.</p>
-
-<p class="dac-hero-description">World-class code editing, debugging,
-performance tooling, a flexible build system, and an instant build/deploy
-system all allow you to focus on building unique and high quality apps.</p>
-
-<p style="margin-top:24px">
- <a class="landing-button green download-bundle-button"
- data-modal-toggle="studio_tos">Download Android Studio 2.1<br>
- <span class="small"></span></a>
-</p>
-
-<p style="margin:24px 0 0">
- <a class="dac-hero-cta" href="{@docRoot}tools/studio/index.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the docs</a>
- <a class="dac-hero-cta" href="{@docRoot}tools/revisions/studio.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- See the release notes</a>
-</p>
- </div>
- </div>
- </div>
-</section>
-
-
-
-
-<!-- start studio download modal -->
-<div data-modal="studio_tos" class="dac-modal" id="studio_tos">
- <div class="dac-modal-container">
- <div class="dac-modal-window">
- <header class="dac-modal-header">
- <div class="dac-modal-header-actions">
- <button class="dac-modal-header-close" data-modal-toggle></button>
- </div>
- <section class="dac-swap-section dac-active dac-down">
- <h2 class="norule dac-modal-header-title" id="tos-header">Download Android Studio</h2>
- </section>
- </header>
- <section class="dac-swap-section dac-active dac-left">
- <section class="dac-modal-content">
- <fieldset class="dac-form-fieldset">
- <div class="cols">
- <div class="col-2of2 tos-leftCol">
- <p class="sdk-terms-intro">Before downloading,
- you must agree to the following terms
- and conditions.</p>
- </div>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">Terms and Conditions</h2>
-This is the Android Software Development Kit License Agreement
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div><!-- close sdk-terms -->
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
- <p>You're just a few steps away from building apps for Android!</p>
- <p>In a moment, you'll be redirected to
- <a id="next-link" href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a>.</p>
-</div><!-- end next-steps -->
-
-<div id="sdk-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
-</p>
-<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-</div><!-- end sdk-terms-form -->
-
-
-</div><!-- end cols -->
-
- </fieldset>
- </section>
- </section>
- </div><!-- end dac-modal-window -->
- </div><!-- end dac-modal-container -->
-</div><!-- end #langform, .dac-modal -->
-<!-- end studio_tos modal -->
-
-<div id="useOldTemplates" class="actions-bar dac-expand dac-invert">
- <div class="wrap dac-offset-parent">
- <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#features">
- <i class="dac-sprite dac-arrow-down-gray"></i>
- </a>
- <div class="actions">
- <div><a href="#features">
- <span class="dac-sprite dac-auto-chevron-large"></span>
- Features
- </a></div>
- <div><a href="#latest">
- <span class="dac-sprite dac-auto-chevron-large"></span>
- Latest
- </a></div>
- <div><a href="#resources">
- <span class="dac-sprite dac-auto-chevron-large"></span>
- Resources
- </a></div>
- <div><a href="#videos">
- <span class="dac-sprite dac-auto-chevron-large"></span>
- Videos
- </a></div>
- <div><a href="#downloads">
- <span class="dac-sprite dac-auto-chevron-large"></span>
- Download Options
- </a></div>
- </div><!-- end .actions -->
- </div><!-- end .wrap -->
-</div>
-
-
-<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
- <div class="wrap dac-offset-parent">
- <a class="dac-fab dac-scroll-button" data-scroll-button href="#features">
- <i class="dac-sprite dac-arrow-down-gray"></i>
- </a>
- <ul class="dac-actions">
- <li class="dac-action">
- <a class="dac-action-link" href="#features">
- <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
- Features
- </a>
- </li>
- <li class="dac-action">
- <a class="dac-action-link" href="#latest">
- <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
- Latest
- </a>
- </li>
- <li class="dac-action">
- <a class="dac-action-link" href="#resources">
- <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
- Resources
- </a>
- </li>
- <li class="dac-action">
- <a class="dac-action-link" href="#videos">
- <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
- Videos
- </a>
- </li>
- <li class="dac-action">
- <a class="dac-action-link" href="#downloads">
- <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
- Download Options
- </a>
- </li>
- </ul>
- </div><!-- end .wrap -->
-</div><!-- end new templates -->
-
-
-
-<section id="features" class="dac-section dac-small">
-<div class="dac-toggle">
-
-<div class="wrap feature">
- <div class="cols dac-hero-content">
- <div class="col-1of2 col-push-1of2 dac-hero-figure">
- <img src="/images/tools/studio/studio-feature-instant-run_2x.png">
- </div>
- <div class="col-1of2 col-pull-1of2">
- <div class="dac-hero-tag"></div>
- <h1 class="dac-hero-title">Instant Run</h1>
-<p class="dac-hero-description">Push code and resource
-changes to your app running on a device or emulator and see the
-changes instantly come to life.</p>
-<p class="dac-hero-description">Instant Run dramatically speeds up your edit,
-build, and run cycles, keeping you "in the flow."</p>
- <a class="dac-hero-cta"
- href="/tools/building/building-studio.html#instant-run">
- <span class="dac-sprite dac-auto-chevron"></span>
- Learn more</a>
- </div>
- </div>
-</div>
-
-<div class="wrap feature">
- <div class="cols dac-hero-content">
- <div class="col-1of2 dac-hero-figure">
- <img src="/images/tools/codeeditor-low.gif" >
- </div>
- <div class="col-1of2">
- <div class="dac-hero-tag"></div>
- <h1 class="dac-hero-title">Intelligent code editor</h1>
-<p class="dac-hero-description">Write better code, work faster, and be more productive with an intelligent code editor that helps you each step of the way.</p>
-<p class="dac-hero-description">Android Studio is built on IntelliJ and is capable of advanced code completion, refactoring, and code analysis.</p>
- </div>
- </div>
-</div>
-
-<div class="wrap feature">
- <div class="cols dac-hero-content">
- <div class="col-1of2 col-push-1of2 dac-hero-figure">
- <img src="/images/tools/studio/studio-feature-emulator_2x.jpg">
- </div>
- <div class="col-1of2 col-pull-1of2">
- <div class="dac-hero-tag"></div>
- <h1 class="dac-hero-title">Fast and feature-rich emulator</h1>
-<p class="dac-hero-description">Install and run your apps faster than with a physical device and test your app on virtually any Android device configuration: Android phones, Android tablets, Android Wear, and Android TV devices.</p>
-<p class="dac-hero-description">The new Android Emulator 2.0 is faster than ever and allows you to dynamically resize the emulator and access a suite of sensor controls.</p>
- <a class="dac-hero-cta"
- href="/tools/devices/emulator.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Learn more</a>
- </div>
- </div>
-</div>
-
-<div class="wrap feature">
- <div class="cols dac-hero-content">
- <div class="col-1of2 dac-hero-figure">
- <img src="/images/tools/studio/studio-feature-gradle_2x.png">
- </div>
- <div class="col-1of2">
- <div class="dac-hero-tag"></div>
- <h1 class="dac-hero-title">Robust and flexible build system</h1>
-<p class="dac-hero-description">Easily configure your project to include code libraries and generate multiple build variants from a single project.</p>
-<p class="dac-hero-description">With Gradle, Android Studio offers high-performance build automation, robust dependency management, and customizable build configurations.</p>
- <a class="dac-hero-cta"
- href="/tools/building/plugin-for-gradle.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Learn more</a>
- </div>
- </div>
-</div>
-
-<div class="dac-toggle-content clearfix">
-
-<div class="wrap feature">
- <div class="cols dac-hero-content">
- <div class="col-1of2 col-push-1of2 dac-hero-figure">
- <img src="/images/tools/studio/studio-feature-devices_2x.png">
- </div>
- <div class="col-1of2 col-pull-1of2">
- <div class="dac-hero-tag"></div>
- <h1 class="dac-hero-title">Develop for all <wbr>Android devices</h1>
-<p class="dac-hero-description">Target multiple form factors with a single
-project to easily share code among your different versions of your app.</p>
-<p class="dac-hero-description">Android Studio provides a unified environment
-to develop apps for Android phones, tablets, Android Wear, Android TV, and
-Android Auto.</p>
-
- <a class="dac-hero-cta"
- href="/tools/building/configuring-gradle.html#workBuildVariants">
- <span class="dac-sprite dac-auto-chevron"></span>
- Learn more</a>
- </div>
- </div>
-</div>
-
-<div class="wrap feature">
- <div class="cols dac-hero-content">
- <div class="col-1of2 dac-hero-figure">
- <img src="/images/tools/studio/studio-feature-github_2x.png">
- </div>
- <div class="col-1of2">
- <div class="dac-hero-tag"></div>
- <h1 class="dac-hero-title">Code templates and GitHub integration</h1>
- <p class="dac-hero-description">Start projects with code templates for patterns such as navigation drawer and view pagers, or import Google code samples from GitHub.</p>
- <p class="dac-hero-description">Android Studio's project wizards make it easier than ever to add code in a new project.</p>
- </div>
- </div>
-</div>
-
-</div><!-- end dac-toggle-content -->
-
-<div class="dac-section-links dac-text-center feature-more">
- <div class="dac-section-link" data-toggle="section">
- <span class="dac-toggle-expand">More
- <i class="dac-sprite dac-auto-unfold-more"></i>
- </span>
- <span class="dac-toggle-collapse">Less
- <i class="dac-sprite dac-auto-unfold-less"></i>
- </span>
- </div>
-</div>
-
-</div>
-</section><!-- end features -->
-
-
-
-<section id="latest" class="dac-section dac-light dac-small"><div class="wrap">
- <h1 class="dac-section-title">Latest News</h1>
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:tools/landing/latest"
- data-cardSizes="6x6"
- data-items-per-page="3"
- data-initial-results="3"
- data-maxResults="3"></div>
- </div>
-</section>
-
-<section id="resources" class="dac-section dac-small"><div class="wrap">
- <h1 class="dac-section-title">Resources</h1>
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:tools/landing/resources"
- data-cardSizes="6x6"
- data-initial-results="3"
- data-items-per-page="3"
- data-maxResults="3"></div>
- </div>
-</section>
-
-<section class="dac-section dac-light dac-small dac-gray" id="videos"><div class="wrap">
- <h1 class="dac-section-title">Videos</h1>
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:develop/landing/tools"
- data-sortOrder="-timestamp"
- data-cardSizes="6x6"
- data-maxResults="3"></div>
- </div>
-</section>
-
-
-
-<section id="Requirements" class="dac-section dac-light dac-small">
-<div class="wrap">
-
-<h2 class="norule">System Requirements</h2>
-
-<div class="cols">
-
-<div class="col-2of6">
-<h4>Windows</h4>
-<ul>
-<li>Microsoft® Windows® 7/8/10 (32- or 64-bit)</li>
-<li>2 GB RAM minimum, 8 GB RAM recommended</li>
-<li>2 GB of available disk space minimum,<br>4 GB Recommended
-(500 MB for IDE + 1.5 GB for
-Android SDK and emulator system image)</li>
-<li>1280 x 800 minimum screen resolution</li>
-<li>Java Development Kit (JDK) 8</li>
-<li>For accelerated emulator: 64-bit operating system and
-Intel® processor with support for Intel®
-VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality</li>
-</ul>
-</div>
-
-<div class="col-2of6">
-<h4>Mac</h4>
-<ul>
-<li>Mac® OS X® 10.8.5 or higher, up to 10.11.4 (El Capitan)</li>
-<li>2 GB RAM minimum, 8 GB RAM recommended</li>
-<li>2 GB of available disk space minimum,<br>4 GB Recommended
-(500 MB for IDE + 1.5 GB for
-Android SDK and emulator system image)</li>
-<li>1280 x 800 minimum screen resolution</li>
-<li>Java Development Kit (JDK) 6</li>
-</ul>
-</div>
-
-<div class="col-2of6">
-<h4>Linux</h4>
-<ul>
-<li>GNOME or KDE desktop
-<p><i>Tested on Ubuntu® 12.04, Precise Pangolin (64-bit distribution
-capable of running 32-bit applications)</i></li>
-<li>64-bit distribution capable of running 32-bit applications</li>
-<li>GNU C Library (glibc) 2.11 or later</li>
-<li>2 GB RAM minimum, 8 GB RAM recommended</li>
-<li>2 GB of available disk space minimum,<br>4 GB Recommended
-(500 MB for IDE + 1.5 GB for
-Android SDK and emulator system image)</li>
-<li>1280 x 800 minimum screen resolution</li>
-<li>Java Development Kit (JDK) 8</li>
-<li>For accelerated emulator: Intel® processor with support for Intel®
-VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality,
-or AMD processor with support for AMD Virtualization™ (AMD-V™)</li>
-</ul>
-</div>
-
-</div>
-</div>
-
-</section>
diff --git a/docs/html/sdk/installing/bundle.jd b/docs/html/sdk/installing/bundle.jd
deleted file mode 100644
index 22bdd11..0000000
--- a/docs/html/sdk/installing/bundle.jd
+++ /dev/null
@@ -1,3 +0,0 @@
-page.title=Setting Up the ADT Bundle
-
-@jd:body
diff --git a/docs/html/sdk/installing/create-project.jd b/docs/html/sdk/installing/create-project.jd
deleted file mode 100644
index a4de85c..0000000
--- a/docs/html/sdk/installing/create-project.jd
+++ /dev/null
@@ -1,377 +0,0 @@
-page.title=Managing Projects with Android Studio
-
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#CreatingAProject">Creating an Android Project</a></li>
-
- <li><a href="#CreatingAModule">Creating an Android Module</a></li>
-
- <li><a href="#SettingUpLibraryModule">Setting up a Library Module</a></li>
-
- <li><a href="#ReferencingLibraryModule">Referencing a Library Module</a></li>
-
- <li><a href="#ReferencingAppEngModule">Setting up an App Eng Module</a></li>
-
- <li><a href="#ProjectView">Using the Android Project View</a></li>
-
- </ol>
-
- </div>
- </div>
-
-
-<p>Android Studio provides graphical tools for creating and managing Android projects, which
-contain everything that define your Android apps, from app source code to build configurations and
-test code. Each project contains one or more different types of modules, such as
- application modules, library modules, and test modules.</p>
-
-<p>This guide explains how to create Android projects and different modules using
-<a href="{@docRoot}tools/studio/index.html">Android Studio</a>.
-For more information about the Android project structure and module types, read <a href=
-"{@docRoot}tools/projects/index.html">Managing Projects Overview</a>.</p>
-
-
-
-<h2 id="CreatingAProject">Creating an Android Project</h2>
-
-<p>Android Studio makes it easy to create Android apps for several form factors, such as phone,
-tablet, TV, Wear, and Google Glass. The <em>New Project</em> wizard lets you choose the form factors
-for your app and populates the project structure with everything you need to get started.</p>
-
-<p>Follow the steps in this section to create a project in Android Studio.</p>
-
-<h3 id="Step1CreatingAProject">Step 1: Create a New Project</h2>
-
-<p>If you didn't have a project opened, Android Studio shows the Welcome screen.
-To create a new project, click <strong>New Project</strong>.</p>
-
-<p>If you had a project opened, Android Studio shows the development environment.
-To create a new project, click <strong>File</strong> > <strong>New Project</strong>.</p>
-
-<p>The next window lets you configure the name of your app, the package name, and the location
-of your project.</p>
-
-<img src="{@docRoot}images/tools/wizard2.png" alt="" width="500" height="381">
-<p class="img-caption"><strong>Figure 1.</strong> Choose a name for your project.</p>
-
-<p>Enter the values for your project then click <strong>Next</strong>.</p>
-
-<h3 id="Step2SelectFormFactor">Step 2: Select Form Factors and API Level</h2>
-
-<p>The next window lets you select the form factors supported by your app, such as phone, tablet,
-TV, Wear, and Google Glass. The selected form factors become the application modules within the
-project. For each form factor, you can also select the API Level for that app. To get more information,
-click <strong>Help me choose</strong>.</p>
-
-<img src="{@docRoot}images/tools/wizard4.png" alt="" width="750" height="510">
-<p class="img-caption"><strong>Figure 2.</strong> Select the API Level.</p>
-
-<p>The API Level window shows the distribution of mobile devices running each version of Android,
-as shown in figure 3. Click on an API level to see a list of features introduced in the corresponding
-version of Android. This helps you choose the minimum API Level that has all the features that
-your apps needs, so you can reach as many devices as possible. Then click <strong>OK</strong>.</p>
-
-<img src="{@docRoot}images/tools/wizard3.png" alt="" width="500" height="480">
-<p class="img-caption"><strong>Figure 3.</strong> Choose form factors for your app.</p>
-
-<p>Then, on the Form Factors Window, click <strong>Next</strong>.</p>
-
-
-<h3 id="Step3AddActivity">Step 3: Add an Activity</h2>
-
-<p>The next screen lets you select an activity type to add to your app, as shown in figure 4.
-This screen displays a different set of activities for each of the form factors you selected earlier.</p>
-
-<img src="{@docRoot}images/tools/wizard5.png" alt="" width="720" height="504">
-<p class="img-caption"><strong>Figure 4.</strong> Add an activity to your app.</p>
-
-<p>Choose an activity type then click <strong>Next</strong>.</p>
-
- <p class="note"><strong>Note:</strong> If you choose "Add No Activity", click <strong>Finish</strong>
- to create the project.</p>
-
-
-<h3 id="Step4ConfigureActivity">Step 4: Configure Your Activity</h2>
-
-<p>The next screen lets you configure the activity to add to your app, as shown in figure 5.</p>
-
-<img src="{@docRoot}images/tools/wizard6.png" alt="" width="450" height="385">
-<p class="img-caption"><strong>Figure 5.</strong> Choose a name for your activity.</p>
-
-<p>Enter the activity name, the layout name, and the activity title. Then click
-<strong>Finish</strong>.</p>
-
-
-<h3 id="Step5DevelopYourApp">Step 5: Develop Your App</h2>
-
-<p>Android Studio creates the default structure for your project and opens the development
-environment. If your app supports more than one form factor, Android Studio creates a module folder
-with complete source files for each of them as shown in figure 6.</p>
-
-<img src="{@docRoot}images/tools/wizard7.png" alt="" width="750" height="509">
-<p class="img-caption"><strong>Figure 6.</strong> The default project structure for a mobile app.</p>
-
-<p>Now you are ready to develop your app. For more information, see the following links:</p>
-
-<ul>
-<li><a href="{@docRoot}training/">Training Lessons</a></li>
-<li><a href="{@docRoot}training/building-wearables.html">Building Apps for Wearables</a></li>
-<li><a href="{@docRoot}tv/">Android TV</a></li>
-<li><a href="https://developers.google.com/glass/">Google Glass</a></li>
-</ul>
-
-
- <h2 id="CreatingAModule">Creating an Android Module</h2>
-
- <p>Android application modules contain the <code>src/main/</code>, <code>AndroidManifest.xml</code>,
- <code>build.gradle</code>, build output and other files you need to generate your app's APK files.
- Android Studio provides a <em>New Module Wizard</em> that you can use to quickly create a new
- Android module (or a module from existing code) based on selected application settings, such as
- minimum SDK level and activity template.</p>
-
- <p>To create a new module, select <strong>File</strong> > <strong>New</strong> >
- <strong>Module</strong>. Select the desire module type then click Next to enter the basic module
- settings:</p>
-
- <ul>
- <li>Enter an <strong>Application Name</strong>. This name is used as the title of your
- application launcher icon when it is installed on a device.</li>
-
- <li>Enter a <strong>Module Name</strong>. This text is used as the name of the folder where
- your Java-based activity files are stored.</li>
-
- <li>Enter a <strong>Package Name</strong> and <strong>Package Location</strong>. This class
- package namespace creates the initial
- package structure for your applications code files and is added as the
- <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">{@code package}</a>
- attribute in your application's
- <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Android manifest file</a>.
- This manifest value serves as the unique identifier for your application app when you
- distribute it to users. The package name must follow the same rules as packages in the Java
- programming language.</li>
-
- <li>Select the <strong>Minimum required SDK</strong>.
- This setting indicates the lowest version of the Android platform that your application
- supports for the selected form factor. This value sets the
- <code>minSdkVersion</code> attribute in the build.gradle file.</li>
-
- <p class="note"><strong>Note:</strong> You can manually change the minimum and target SDK
- for your module at any time: Double-click the module's build.gradle in the Project Explorer,
- set the <strong>targetSdkVersion</strong> and <em>targetSdkVersion</em> in the
- <em>defaultConfig</em> section.</p>
-
-
- <li>Select a <strong>Target SDK</strong>. This setting indicates the highest version of
- Android with which you have tested with your application and sets the
- <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code
- targetSdkVersion}</a> attribute in your application's' build.gradle file.
-
-
- <li>Select a <strong>Compile With</strong> API version. This setting specifies what version
- of the SDK to compile your project against. We strongly recommend using the most recent
- version of the API.</li>
-
- <li>Select a <strong>Language Level</strong> API version. This setting specifies what version
- of the SDK to compile your project against. We strongly recommend using the most recent
- version of the API.</li>
-
- <li>Select a <strong>Theme</strong>. This setting specifies which standard Android
- <a href="{@docRoot}design/style/themes.html">visual style</a> is applied to your
- application. Select activity template. For more information about Android code templates, see
- <a href="{@docRoot}tools/projects/templates.html">Using Code Templates</a>. Leave the
- <strong>Create activity</strong> option checked so you can start your
- application with some essential components. </li>
-
- <li>Click the check box for the required Support Libraries then click <strong>Next</strong>.</li>
-
- <li>In the <strong>Configure Launcher Icon</strong> page, create an icon and options, then click
- <strong>Next</strong>.</li>
-
- <li>In the <strong>Create Activity</strong> page, select activity template then click
- <strong>Next</strong>. For more information about Android code templates, see
- <a href="{@docRoot}tools/projects/templates.html">Using Code Templates</a>.
- </li>
-
- <li>Review the new module settings then click <strong>Finish</strong>.</li>
-
- </ul>
-
- <p>The wizard creates a new Android application module according to the options you have chosen.</p>
-
-
-
- <h2 id="SettingUpLibraryModule">Setting up a Library Module</h2>
-
- <p>A library module is a standard Android module, so you can create a new one in the same way
- as you would a new application module, using the New Module wizard and selecting <em>Android
- Library</em> as the module type. The created library module will appear in your project view
- along with the other modules. </p>
-
- <p> You can easily change an existing application module to a library module by changing the
- plugin assignment in the <strong>build.gradle</strong> file to <em>com.android.library</em>.</p>
-
-<pre>
-apply plugin: 'com.android.application'
-
-android {...}
-</pre>
-
-<pre>
-apply plugin: 'com.android.library'
-
-android {...}
-</pre>
-
-
- <h3>Adding a dependency on a library module</h3>
-
- <p>The library dependency can be declared in the module's manifest file or in the
- <strong<build.gradle</strong> file. </p>
-
- <p>A library modules's manifest file must declare all of the shared components that it includes,
- just as would a standard Android application. For more information, see the documentation for
- <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
- <p>For example, the <a href=
- "{@docRoot}resources/samples/TicTacToeLib/AndroidManifest.html">TicTacToeLib</a> example library
- project declares the activity <code>GameActivity</code>:</p>
- <pre>
-<manifest>
- ...
- <application>
- ...
- <activity android:name="GameActivity" />
- ...
- </application>
-</manifest>
-</pre>
-
-
-<p>To add the dependency declaration to the build file, edit the build file for the <code>app</code>
-module (<code>app/build.gradle</code>) and add a dependency on the <code>lib</code> module:</p>
-
-<pre>
-...
-dependencies {
- ...
- compile project(":lib")
-}
-</pre>
-
-<p>In this example, the <code>lib</code> module can still be built and tested independently, and
-the build system creates an AAR package for it that you could reuse in other projects.</p>
-
-<p class="note"><strong>Note:</strong> The library settings in the <code>app/build.gradle</code>
-file will override any shared library resources declared in the manifest file.</p>
-
-
- <h2 id="ReferencingLibraryModule">Referencing a library module</h2>
-
- <p>If you are developing an application and want to include the shared code or resources from a
- library module, you can also do so easily by adding a reference to the library module in the
- module's dependency page.</p>
-
- <p>To add a reference to a library module, follow these steps:</p>
-
- <ol>
- <li>Make sure that both the module library and the application module that depends on it are
- in your project. If one of the modules is missing, import it into your project.</li>
-
- <li>In the project view, right-click the dependent module and select
- <strong>Open</strong> > <strong>Module Settings</strong>.</li>
-
- <li>Right-click the plus icon to add a new dependencies.
- <p>If you are adding references to multiple libraries, you can set their relative
- priority (and merge order) by selecting a library and using the <strong>Up</strong> and
- <strong>Down</strong> controls. The tools merge the referenced libraries with your application
- starting from lowest priority (bottom of the list) to highest (top of the list). If more than one
- library defines the same resource ID, the tools select the resource from the library with higher
- priority. The application itself has highest priority and its resources are always used in
- preference to identical resource IDs defined in libraries.</p>
- </li>
-
- <li>Use the <strong>Scope</strong> drop-down to select how the dependency will be applied.</li>
-
- <li>Click <strong>Apply</strong> to create the dependency and <strong>OK</strong> to close the
- <strong>Project Structure</strong> window.</li>
- </ol>
-
- <p>Android Studio rebuilds the module, including the contents of the library module the next time
- the project or module is built.</p>
-
-
-
- <h3>Declaring library components in the manifest file</h3>
-
- <p>In the manifest file of the application module, you must add declarations of all components
- that the application will use that are imported from a library module. For example, you must
- declare any <code><activity></code>, <code><service></code>,
- <code><receiver></code>, <code><provider></code>, and so on, as well as
- <code><permission></code>, <code><uses-library></code>, and similar elements.</p>
-
- <p>Declarations should reference the library components by their fully-qualified package names,
- where appropriate.</p>
-
- <p>For example, the <a href=
- "{@docRoot}resources/samples/TicTacToeMain/AndroidManifest.html">TicTacToeMain</a> example
- application declares the library activity <code>GameActivity</code> like this:</p>
- <pre>
-<manifest>
- ...
- <application>
- ...
- <activity android:name="com.example.android.tictactoe.library.GameActivity" />
- ...
- </application>
-</manifest>
-</pre>
-
- <p>For more information about the manifest file, see the documentation for <a href=
- "{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-
- <h2 id="ProjectView">Using the Android Project View</h2>
-
-
-<p>The Android project view in Android Studio shows a flattened version of your project's structure
-that provides quick access to the key source files of Android projects and helps you work with
-the new <a href="{@docRoot}sdk/installing/studio-build.html">Gradle-based build system</a>. The
-Android project view:</p>
-
-<ul>
-<li>Groups the build files for all modules at the top level of the project hierarchy.</li>
-<li>Shows the most important source directories at the top level of the module hierarchy.</li>
-<li>Groups all the manifest files for each module.</li>
-<li>Shows resource files from all Gradle source sets.</li>
-<li>Groups resource files for different locales, orientations, and screen types in a single group
-per resource type.</li>
-</ul>
-
-<p>The <em>Android</em> project view is enabled by default and shows all the build files at
-the top level of the project hierarchy under <strong>Gradle Scripts</strong>. The project module
-appears as a folder at the top level of the project hierarchy and contains these three elements
-at the top level:</p>
-
-<ul>
-<li><code>manifests/</code> - Manifest files for the module.</li>
-<li><code>java/</code> - Source files for the module.</li>
-<li><code>res/</code> - Resource files for the module.</li>
-</ul>
-
-<p>Notice how the Android project view groups all instances of the
-<code>ic_launcher.png</code> resource for different screen densities under the same element.</p>
-
-<p class="note"><strong>Note:</strong> The Android project view shows a hierarchy that helps you
-work with Android projects by providing a flattened structure that highlights the most commonly
-used files while developing Android applications. However, the project structure on disk differs
-from this representation and maintains the traditional project structure.</p>
-
-<img src="{@docRoot}images/tools/projectview-p1.png" alt="" style="width:240px" "/>
-
-<img src="{@docRoot}images/tools/projectview-p2.png" alt="" style="width:240px" " />
-<p class="img-caption"><strong>Figure 10:</strong> Android and Traditional project view </p>
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
deleted file mode 100644
index e4d860b..0000000
--- a/docs/html/sdk/installing/index.jd
+++ /dev/null
@@ -1,218 +0,0 @@
-page.title=Install Android Studio
-excludeFromSuggestions=true
-
-page.tags=sdk tools
-
-@jd:body
-
-<style>
-.instruction-select {
- float:right;
- background: #f7f7f7;
- padding: 15px;
- margin: -15px 0 20px 40px;
-}
-</style>
-
-<div class="instruction-select">
-<p><strong>Instructions for</strong></p>
-<select id="instructions-option" onchange="showInstructions(this.value)" style="padding:4px">
- <option value="windows">Windows</option>
- <option value="mac">Mac</option>
- <option value="linux">Linux</option>
-</select>
-</div>
-
-<p>Setting up Android Studio takes just a few clicks.</p>
-
-<p>While the <a href="{@docRoot}sdk/index.html">Android Studio download</a>
-completes, verify which version of the JDK you have:
-open a command line and type <code>javac -version</code>. If the JDK
-is not available or the version is lower than 1.8, download the <a href=
-"http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
-class="external-link">Java SE Development Kit 8</a>.</p>
-
-
-<div id="system-windows" style="display:none">
-
-<p>To install Android Studio on Windows, proceed as follows:</p>
-<ol>
- <li>Launch the <code>.exe</code> file you downloaded.</li>
- <li>Follow the setup wizard to install Android Studio and any necessary SDK tools.
-
- <p>On some Windows systems, the launcher script does not find where the JDK is installed.
- If you encounter this problem,
- you need to set an environment variable indicating the correct location.</p>
- <p>Select <strong>Start menu > Computer > System Properties >
- Advanced System Properties</strong>. Then open <strong>Advanced tab > Environment
- Variables</strong> and add a new system variable <code>JAVA_HOME</code> that points to
- your JDK folder, for example <code>C:\Program Files\Java\jdk1.8.0_77</code>.</p>
- </p>
- </li>
-</ol>
-
-<p>That's it!
-The following video shows each step of the recommended setup procedure.</p>
-
-<video controls style="margin:20px 0" onclick="this.play()">
- <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-windows.mp4" type="video/mp4">
-</video>
-
-<p>As new tools and other APIs become available, Android Studio tells you
-with a pop-up, or you can check for updates by clicking <strong>Help >
-Check for Update</strong>.</p>
-
-
-</div>
-<!-- end windows -->
-
-
-
-<!-- #### MAC INSTRUCTIONS #### -->
-
-<div id="system-mac" style="display:none">
-
-<p>There are, however, known stability issues in Android Studio on Mac
-when using JDK 1.8. Until these issues are resolved, you can improve stability
-by downgrading your JDK to an older version (but no lower than JDK 1.6).</p>
-
-<p>To install Android Studio on your Mac, proceed as follows:</p>
-
-<ol>
- <li>Launch the Android Studio DMG file.</li>
- <li>Drag and drop Android Studio into the Applications folder, then launch
- Android Studio.</li>
- <li>Select whether you want to import previous Android Studio settings,
- then click <strong>OK</strong>.</li>
- <li>The Android Studio Setup Wizard guides you though the rest of the
- setup, which includes downloading Android SDK components
- that are required for development.</li>
-</ol>
-
-<p>That's it!
-The following video shows each step of the recommended setup procedure.</p>
-
-<video controls style="margin:20px 0" onclick="this.play()">
- <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-mac.mp4" type="video/mp4">
-</video>
-
-<p>
-As new tools and other APIs become available, Android Studio tells you
-with a pop-up, or you can check for updates by clicking <strong>Android Studio
-> Check for Updates</strong>.</p>
-
-</div>
-<!-- end mac -->
-
-
-
-<!-- #### LINUX INSTRUCTIONS #### -->
-
-<div id="system-linux" style="display:none">
-
-
-<p>To install Android Studio on Linux, proceed as follows:</p>
-
-<ol>
- <li>Unpack the <code>.zip</code> file you downloaded to an
- appropriate location for your applications, such as within
- <code>/usr/local/</code> for your user profile, or <code>/opt/</code>
- for shared users.
- <li>To launch Android Studio, open a terminal,
- navigate to the <code>android-studio/bin/</code> directory,
- and execute <code>studio.sh</code>.
- <p><strong>Tip:</strong>
- Add <code>android-studio/bin/</code> to your <code>PATH</code> environment
- variable so you can start Android Studio from any directory.</p>
- </li>
- <li>Select whether you want to import previous Android Studio settings
- or not, then click <strong>OK</strong>.</li>
- <li>The Android Studio Setup Wizard guides you though the rest of the
- setup, which includes downloading Android SDK components
- that are required for development.</li>
- </li>
-</ol>
-
-<div class="note">
-<p><strong>Note:</strong>
-If you are running a 64-bit version of Ubuntu, you need to install some 32-bit
-libraries with the following command:</p>
-<pre>sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6</pre>
-<p>If you are running 64-bit Fedora, the command is:</p>
-<pre>sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686</pre>
-</div>
-
-<p>That's it!
-The following video shows each step of the recommended setup procedure.</p>
-
-<video controls style="margin:20px 0" onclick="this.play()">
- <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-linux.mp4" type="video/mp4">
-</video>
-
-<p>As new tools and other APIs become available, Android Studio tells you
-with a pop-up, or you can check for updates by clicking <strong>Help >
-Check for Update</strong>.</p>
-
-</div><!-- end linux -->
-
-<p class="note"><strong>Note:</strong>
-If you want to develop apps with the N Preview SDK, you must use
-the preview version of Android Studio 2.1. For more information, see the
-<a href="{@docRoot}preview/setup-sdk.html">N Preview setup guide</a>.</p>
-
-
-
-<h2>Start building apps</h2>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-2of6">
-<img src="{@docRoot}images/tools/studio/ic_devices_grey.png"
- style="width:100%;background:#eee;margin:0" />
-<h3>Build your first app</h3>
-<p>Get started quickly and learn the basics of Android by following
-the guide to <strong><a href="{@docRoot}training/basics/firstapp/index.html"
->Building Your First App</a></strong>.</p>
-
-</div>
-<div class="col-2of6">
-<img src="{@docRoot}images/tools/studio/ic_school_grey.png"
- style="width:100%;background:#eee;margin:0" />
-<h3>Learn with Udacity</h3>
-<p>Ramp up on Android with interactive video training in the
-<strong><a href="https://www.udacity.com/course/developing-android-apps--ud853">Android Fundamentals Udacity course</a></strong>.</p>
-
-</div>
-<div class="col-2of6">
-<img src="{@docRoot}images/tools/studio/ic_explore_grey.png"
- style="width:100%;background:#eee;margin:0" />
-<h3>Explore Studio</h3>
-<p>Discover powerful Android Studio features and developer strategies in the
-<strong><a href="{@docRoot}tools/studio/index.html">Android Studio Introduction</a></strong>.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-<script>
-/** Show the appropriate instructions for user **/
-function showInstructions(system) {
- $("[id^=system-]").hide(); // hide all of them first
- if (system == "linux") {
- $("#system-linux").show();
- } else if (system == "mac") {
- $("#system-mac").show();
- } else {
- $("#system-windows").show();
- }
- $("select#instructions-option").val(system);
-}
-
-// Get operating system based on the user agent, default windows
-var os = "windows";
-if (navigator.appVersion.indexOf("Linux")!=-1) {
- os = "linux";
-} else if (navigator.appVersion.indexOf("Mac")!=-1) {
- os = "mac";
-}
-showInstructions(os);
-</script>
diff --git a/docs/html/sdk/installing/migrate.jd b/docs/html/sdk/installing/migrate.jd
deleted file mode 100644
index 61e6798..0000000
--- a/docs/html/sdk/installing/migrate.jd
+++ /dev/null
@@ -1,267 +0,0 @@
-page.title=Migrating from Eclipse ADT
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>In this document</h2>
-<ol>
- <li><a href="#overview">Migration Overview</a></li>
- <li><a href="#prerequisites">Migration Prerequisites</a></li>
- <li><a href="#migrate">Importing Projects to Android Studio</a></li>
- <li><a href="#post-migration">Validating imported projects</a></li>
-</ol>
-
-
-<h2>See also</h2>
-<ul>
- <li><a href="{@docRoot}tools/studio/eclipse-transition-guide.html">
- Transition Guide for Eclipse ADT</a></li>
- <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA"
- class="external-link">IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
- <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/IntelliJ+IDEA+for+Eclipse+Users"
- class="external-link">IntelliJ IDEA for Eclipse users</a></li>
- <li><a href="{@docRoot}tools/studio/index.html">Android Studio Overview</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>Migrating from Eclipse ADT to Android Studio requires adapting to a new project structure,
-build system, and IDE functionality. To simplify the migration process, Android Studio provides an
-import tool so you can quickly transition your Eclipse ADT workspaces and Ant build scripts to
-Android Studio projects and <a href="http://www.gradle.org">Gradle</a>-based build files.</p>
-
-<p>This document provides an overview of the migration process and walks you
-through a sample import procedure. For more information about Android Studio features and the
-Gradle-based build system, see <a href="{@docRoot}tools/studio/index.html">Android Studio Overview</a>
-and <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-
-
-<h2 id="overview">Migration Overview </h2>
-<p>Migrating from Eclipse to Android Studio requires that you change the structure of your
-development projects, move to a new build system, and use a new user interface. Here are some of
-the key changes you should be aware of as you prepare to migrate to Android Studio:</p>
-<ul>
- <li><strong>Project files</strong>
- <p>Android Studio uses a different project structure. Each Eclipse ADT
- project is called a module in Android Studio. Each instance of Android
- Studio contains a project with one or more app modules. For more information see,
- <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#project-structure">Project
- Structure</a>.</p></li>
-
- <li><strong>Manifest settings</strong>
- <p>Several elements in the <code>AndroidManifest.xml</code> file are now properties in the
- <code>defaultConfig</code> and <code>productFlavors</code> blocks in the
- <code>build.gradle</code> file. These elements are still valid manifest entries and may
- appear in manifests from older projects, imported projects, dependencies, and libraries. For
- more information see,
- <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#manifest-settings">Manifest
- Settings</a>.</p></li>
-
- <li><strong>Dependencies</strong>
- <p>Library dependencies are handled differently in Android Studio, using Gradle dependency
- declarations and Maven dependencies for well-known local source and binary libraries with
- Maven coordinates. For more information see,
- <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#dependencies">Dependencies</a></p>
- </li>
-
- <li><strong>Test code</strong>
- <p>With Eclipse ADT, test code is written in separate projects and integrated through the
- <code><instrumentation></code> element in your manifest file. Android Studio provides a
- <code>AndroidTest</code> folder within your project so you can easily add and maintain your test
- code within the same project view. JUnit tests can also be configured to run locally to reduce
- testing cycles.</p></li>
-
- <li><strong>Gradle-based build system</strong>
- <p>In place of XML-based Ant build files, Android Studio supports Gradle build files, which
- use the Gradle Domain Specific Language (DSL) for ease of extensibility and customization.
- The Android Studio build system also supports
- <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants"> build variants</a>,
- which are combinations of <code>productFlavor</code> and <code>buildTypes</code>, to customize
- your build outputs.</p></li>
-
- <li><strong>User interface</strong>
- <p>Android Studio provides an intuitive interface and menu options based on the
- <a class="external-link" href="https://www.jetbrains.com/idea/" target="_blank">IntelliJ IDEA</a>
- IDE. To become familiar with the IDE basics, such as navigation, code completion, and keyboard
- shortcuts, see
- <a class="external-link" href="https://www.jetbrains.com/idea/help/intellij-idea-quick-start-guide.html"
- target="_blank">IntelliJ IDEA Quick Start Guide</a>.</p></li>
-
- <li><strong>Developer tools versioning</strong>
- <p>Android Studio updates independently of the Gradle-based build system so different build
- settings can be applied across different versions of command line, Android Studio, and
- continuous integration builds. For more information, see
- <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
- </li>
-</ul>
-
-
-
-
-<h2 id="prerequisites">Migration Prerequisites</h2>
-<p>Before migrating your Eclipse ADT app to Android Studio, review the following steps to make
-sure your project is ready for conversion, and verify you have the tool configuration you need in
-Android Studio:</p>
-
-<ul>
- <li>In Eclipse ADT:
- <ul>
- <li>Make sure the Eclipse ADT root directory contains the <code>AndroidManifest.xml</code>
- file. Also, the root directory must contain either the <code>.project</code> and
- <code>.classpath</code> files from Eclipse or the <code>res/</code> and <code>src/</code>
- directories.</li>
- <li>Build your project to ensure your latest workspace and project updates are saved and
- included in the import.</li>
- <li>Comment out any references to Eclipse ADT workspace library files in the
- <code>project.properties</code> or <code>.classpath</code> files for import. You can
- add these references in the <code>build.gradle</code> file after the import. For more
- information, see
- <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</li>
- <li>It may be useful to record your workspace directory, path variables, and any actual path
- maps that could be used to specify any unresolved relative paths, path variables, and
- linked resource references. Android Studio allows you to manually specify any unresolved
- paths during the import process.</li>
- </ul>
- </li>
- <li>In Android Studio:
- <ul>
- <li>Make a note of any third-party Eclipse ADT plugins in use and check for equivalent features
- in Android Studio or search for a compatible plugin in the
- <a href="https://plugins.jetbrains.com/?androidstudio" class="external-link">IntelliJ Android
- Studio Plugins</a> repository. Use the <strong>File > Settings > Plugins</strong> menu
- option to manage plugins in Android Studio. Android Studio does not migrate any third-party
- Eclipse ADT plugins.</li>
- <li>If you plan to run Android Studio behind a firewall, be sure to set the proxy settings for
- Android Studio and the SDK Manager. Android Studio requires an internet connection for
- Setup Wizard synchronization, 3rd-party library access, access to remote repositories,
- <a href="http://www.gradle.org" class="external-link">Gradle</a>
- initialization and synchronization, and Android Studio version updates. For more information,
- see <a href="{@docRoot}tools/studio/index.html#proxy">Proxy Settings</a>.</li>
- <li>Use the <strong>File > Settings > System Settings</strong> menu option to verify the
- current version and, if necessary, update Android Studio to the latest version from the
- stable channel. To install Android Studio, please visit the
- <a href="{@docRoot}sdk/index.html">Android Studio download page</a>.</li>
- </ul>
- </li>
- </ul>
-
-
-
-<h2 id="migrate">Importing Projects to Android Studio</h2>
-<p>Android Studio provides a function for importing Eclipse ADT projects, which creates a new
-Android Studio project and app modules based on your current
-Eclipse ADT workspace and projects. No changes are made to your Eclipse project files. The Eclipse
-ADT workspace becomes a new Android Studio project, and each Eclipse ADT project within the workspace
-becomes a new Android Studio module. Each instance of Android Studio contains a project with one or
-more app modules.</p>
-
-<p>After selecting an Eclipse ADT project to import, Android Studio creates the Android
-Studio project structure and app modules, generates the new Gradle-based build files and settings,
-and configures the required dependencies. The import options also allow you to enter your workspace
-directory and any actual path maps to handle any unresolved relative paths, path variables, and
-linked resource references.</p>
-
-<p>Depending on the structure of your Eclipse ADT development project, you should select specific
-files for importing:</p>
-<ul>
-<li>For workspaces with multiple projects, select the project folder for each Eclipse ADT
- project individually to import the projects into the same Android Studio project. Android
- Studio combines the Eclipse ADT projects into a single Android Studio project with different app
- modules for each imported project.</li>
-
-<li>For Eclipse ADT projects with separate test projects, select the test project folder for
- import. Android Studio imports the test project and then follows the dependency chain to import
- the source project and any project dependencies.</li>
-
- <li>If Eclipse ADT projects share dependencies within the same workspace, import each
- project individually into Android Studio. Android Studio maintains the shared dependencies
- across the newly created modules as part of the import process.</li>
-</ul>
-
-<p>To import a project to Android Studio:</p>
-
-<ol>
- <li>Start Android Studio and close any open Android Studio projects.</li>
- <li>From the Android Studio menu select <strong>File > New > Import Project</strong>.
- <p>Alternatively, from the <em>Welcome</em> screen, select <strong>Import project
- (Eclipse ADT, Gradle, etc.)</strong>.</p></li>
- <li>Select the Eclipse ADT project folder with the <code>AndroidManifest.xml</code> file
- and click <strong>Ok</strong>.
- <p> <img src="{@docRoot}images/tools/studio-select-project-forimport.png" alt="" /></p>
- </li>
- <li>Select the destination folder and click <strong>Next</strong>.
- <p> <img src="{@docRoot}images/tools/studio-import-destination-dir.png" alt="" /></p></li>
- <li>Select the import options and click <strong>Finish</strong>.
- <p>The import process prompts to migrate any library and project dependencies to Android Studio,
- and add the dependency declarations to the <code>build.gradle</code> file. The import process
- also replaces any well-known source libraries, binary libraries, and JAR files that have known
- Maven coordinates with Maven dependencies, so you no longer need to maintain these dependencies
- manually. The import options also allow you to enter your workspace directory and any actual
- path maps to handle any unresolved relative paths, path variables, and linked resource
- references.</p>
- <p> <img src="{@docRoot}images/tools/studio-import-options.png" alt="" /></p></li>
-
- <li>Android Studio imports the app and displays the project import summary. Review the summary
- for details about the project restructuring and the import process.
- <p> <img src="{@docRoot}images/tools/studio-import-summary.png"/></p>
- </li>
-</ol>
-
-<p>After importing the project from Eclipse ADT to the new Android Studio project and module
-structure, each app module folder in Android Studio contains the complete source set for that
-module, including the {@code src/main} and {@code src/androidTest} directories, resources, build
-file, and Android manifest. Before starting app development, you should resolve any issues shown in
-the project import summary to make sure the project re-structuring and import process completed
-properly.</p>
-
-
-
-<h3 id="post-migration">Validating imported projects</h3>
-<p>After completing the import process, use the Android Studio <strong>Build</strong> and
-<strong>Run</strong> menu options to build your project and verify the output. If your project
-is not building properly, check the following settings:</p>
-
-<ul>
-<ul>
- <li>Use the <strong>Android SDK</strong> button in Android Studio to launch the <a href=
- "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> and verify the installed versions of SDK
- tools, build tools, and platform match the settings for your Eclipse ADT project. Android Studio
- inherits the SDK Manager and JDK settings from your imported Eclipse project.
- </li>
- <li>Use the <strong>File > Project Structure</strong> menu option to verify additional
- Android Studio settings:
- <ul>
- <li>Under <em>SDK Location</em> verify Android Studio has access to the correct SDK and
- JDK locations and versions. </li>
- <li>Under <em>Project</em> verify the Gradle version, Android Plugin version, and related
- repositories.</li>
- <li>Under <em>Modules</em> verify the app and module settings, such as signing configuration
- and library dependencies. </li>
- </ul>
- </li>
- <li>If your project depends on another project, make sure that dependency is defined properly in
- the <code>build.gradle</code> file in the app module folder.</li>
-</ul>
-
-
-<p>If there still are unexpected issues when building and running your project in Android
-Studio after you have checked these settings, consider modifying the Eclipse ADT project and
-re-starting the import process. Importing an Eclipse ADT project to Android Studio creates a new
-Android Studio project and does not impact the existing Eclipse ADT project. </p>
-
-
-
-<p>To get started using Android Studio, review the
-<a href="{@docRoot}tools/studio/index.html">Android Studio</a> features and
-<a href="http://www.gradle.org">Gradle</a>-based build system to become familiar with the new
-project and module structure, flexible build settings, and other advanced Android development
-capabilities. For a comparison of Eclipse ADT and Android Studio features and usage, see
-<a href="{@docRoot}tools/studio/eclipse-transition-guide.html">Transitioning to Android Studio from
-Eclipse</a>. For specific Android Studio how-to documentation, see the pages in the
-<a href="{@docRoot}tools/workflow/index.html">Workflow</a> section.
-</p>
diff --git a/docs/html/sdk/installing/studio-androidview.jd b/docs/html/sdk/installing/studio-androidview.jd
deleted file mode 100644
index 09aeaba..0000000
--- a/docs/html/sdk/installing/studio-androidview.jd
+++ /dev/null
@@ -1,55 +0,0 @@
-page.title=Using the Android Project View
-
-@jd:body
-
-
-<p>The Android project view in Android Studio shows a flattened version of your project's structure
-that provides quick access to the key source files of Android projects and helps you work with
-the new <a href="{@docRoot}sdk/installing/studio-build.html">Gradle-based build system</a>. The
-Android project view:</p>
-
-<ul>
-<li>Groups the build files for all modules at the top level of the project hierarchy.</li>
-<li>Shows the most important source directories at the top level of the module hierarchy.</li>
-<li>Groups all the manifest files for each module.</li>
-<li>Shows resource files from all Gradle source sets.</li>
-<li>Groups resource files for different locales, orientations, and screen types in a single group
-per resource type.</li>
-</ul>
-
-<div style="float:right;margin-left:30px;width:240px">
-<img src="{@docRoot}images/tools/projectview01.png" alt="" width="220" height="264"/>
-<p class="img-caption"><strong>Figure 1:</strong> Show the Android project view.</p>
-</div>
-
-
-<h2 id="enable-view">Enable the Android Project View</h2>
-
-<p>The Android project view is not yet enabled by default. To show the Android project view,
-click <strong>Project</strong> and select <strong>Android</strong>, as shown in Figure 1.</p>
-
-
-<h2 id="project-view">Use the Android Project View</h2>
-
-<p>The Android project view shows all the build files at the top level of the project hierarchy
-under <strong>Gradle Scripts</strong>. Each project module appears as a folder at the top
-level of the project hierarchy and contains these three elements at the top level:</p>
-
-<ul>
-<li><code>java/</code> - Source files for the module.</li>
-<li><code>manifests/</code> - Manifest files for the module.</li>
-<li><code>res/</code> - Resource files for the module.</li>
-</ul>
-
-<p>Figure 2 shows how the Android project view groups all the instances of the
-<code>ic_launcher.png</code> resource for different screen densities under the same element.</p>
-
-<p class="note"><strong>Note:</strong> The Android project view shows a hierarchy that helps you
-work with Android projects by providing a flattened structure that highlights the most commonly
-used files while developing Android applications. However, the project structure on disk differs
-from this representation.</p>
-
-<img src="{@docRoot}images/tools/projectview03.png" alt=""
- style="margin-top:10px" width="650" height="508"/>
-<p class="img-caption"><strong>Figure 2:</strong> The traditional project view (left) and the
-Android project view (right).</p>
\ No newline at end of file
diff --git a/docs/html/sdk/installing/studio-build.jd b/docs/html/sdk/installing/studio-build.jd
deleted file mode 100755
index 6464b28..0000000
--- a/docs/html/sdk/installing/studio-build.jd
+++ /dev/null
@@ -1,104 +0,0 @@
-page.title=Build System Overview
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
- <li><a href="#detailed-build">A Detailed Look at the Build Process</a> </li>
-</ol>
-<h2>See also</h2>
-<ul>
- <li><a href="{@docRoot}sdk/installing/studio.html">
- Getting Started with Android Studio</a></li>
- <li><a href="{@docRoot}tools/studio/index.html">Android Studio Basics</a></li>
-</div>
-</div>
-
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=LCJAgPkpmR0#t=504">
-<div>
- <h3>Video</h3>
- <p>The New Android SDK Build System</p>
-</div>
-</a>
-
-<p>The Android build system is the toolkit you use to build, test, run and package
-your apps. The build system can run as an integrated tool from the Android Studio menu and
-independently from the command line. You can use the features of the build system to:</p>
-
-<ul>
- <li>Customize, configure, and extend the build process.</li>
- <li>Create multiple APKs for your app with different features using the same project and
- modules.</li>
- <li>Reuse code and resources across source sets.</li>
-</ul>
-
-<p>The flexibility of the Android build system enables you to achieve all of this without
-modifying your app's core source files. To build an Android Studio project, see
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.
-To configure custom build settings in an Android Studio project, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-
-<h2 id="detailed-build">A Detailed Look at the Build Process</h2>
-
-<p>The build process involves many tools and processes that generate intermediate files on the
-way to producing an <code>.apk</code>. If you are developing in Android Studio, the complete build
-process is done every time you run the Gradle build task for your project or modules. The build
-process is very flexible so it's useful, however, to understand what is happening under the hood
-since much of the build process is configurable and extensible. The following diagram depicts the
-different tools and processes that are involved in a build:</p>
-
- <img src="{@docRoot}images/build.png" />
-
-<p>The general process for a typical build is outlined below. The build system merges all the
-resources from the configured product flavors, build types, and dependencies. If different
-folders contain resources with the same name or setting, the following override priority order is:
-dependencies override build types, which override product flavors, which override the main source
-directory.</p>
-
- <ul>
-
- <li>The Android Asset Packaging Tool (aapt) takes your application resource files, such as the
- <code>AndroidManifest.xml</code> file and the XML files for your Activities, and compiles them.
- An <code>R.java</code> is also produced so you can reference your resources from your Java code.</li>
-
- <li>The aidl tool converts any <code>.aidl</code> interfaces that you have into Java interfaces.</li>
-
- <li>All of your Java code, including the <code>R.java</code> and <code>.aidl</code> files, are
- compiled by the Java compiler and .class files are output.</li>
-
- <li>The dex tool converts the .class files to Dalvik byte code. Any 3rd party libraries and
- .class files that you have included in your module build are also converted into <code>.dex</code>
- files so that they can be packaged into the final <code>.apk</code> file.</li>
-
- <li>All non-compiled resources (such as images), compiled resources, and the .dex files are
- sent to the apkbuilder tool to be packaged into an <code>.apk</code> file.</li>
-
- <li>Once the <code>.apk</code> is built, it must be signed with either a debug or release key
- before it can be installed to a device.</li>
-
- <li>Finally, if the application is being signed in release mode, you must align the
- <code>.apk</code> with the zipalign tool. Aligning the final <code>.apk</code> decreases memory
- usage when the application is -running on a device.</li>
- </ul>
-
-<p class="note"><b>Note:</b> Apps are limited to a 64K method reference limit. If your app reaches
-this limit, the build process outputs the following error message:
-
-<pre>Unable to execute dex: method ID not in [0, 0xffff]: 65536.</pre>
-
-To avoid this error, see
-<a href="{@docRoot}tools/building/multidex.html">Building Apps with Over 64K Methods</a>.
-</p>
-
-
-<h3>Build output</h3>
-
-<p>The build generates an APK for each build variant in the <code>app/build</code> folder:
-the <code>app/build/outputs/apk/</code> directory contains packages named
-<code>app-<flavor>-<buildtype>.apk</code>; for example, <code>app-full-release.apk</code> and
-<code>app-demo-debug.apk</code>.</p>
-
-
diff --git a/docs/html/sdk/installing/studio-layout.jd b/docs/html/sdk/installing/studio-layout.jd
deleted file mode 100644
index 60cbcb3..0000000
--- a/docs/html/sdk/installing/studio-layout.jd
+++ /dev/null
@@ -1,157 +0,0 @@
-page.title=Using the Layout Editor
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}sdk/installing/studio.html">
-Getting Started with Android Studio</a></li>
-<li><a href="{@docRoot}sdk/installing/studio-tips.html">
-Android Studio Tips and Tricks</a></li>
-<li><a href="{@docRoot}sdk/installing/migrate.html">
-Migrating from Eclipse</a></li>
-</div>
-</div>
-
-<a class="notice-developers-video"
-href="https://developers.google.com/events/io/sessions/324603352">
-<div>
- <h3>Video</h3>
- <p>What's New in Android Developer Tools</p>
-</div>
-</a>
-
-<p>Android Studio offers an advanced layout editor that allows you to drag-and-drop widgets
-into your layout and preview your layout while editing the XML.</p>
-
-<p>Within the layout editor, you can switch between the <strong>Text</strong> view, where
-you edit the XML file as text, and the <strong>Design</strong> view. Just click the
-appropriate tab at the bottom of the window to display the desired editor.</p>
-
-<h2>Editing in the Text View</h2>
-
-<p>You can use the <strong>Text</strong> view to edit your layout file. This section describes
-some of the features that are available in the <strong>Text</strong> view.</p>
-
-<h3>Preview</h3>
-
-<p>While editing in the <strong>Text</strong> view, you can preview the layout on devices
-by opening the <strong>Preview</strong> pane available on the right side of the window.
-Within the <strong>Preview</strong> pane, you can modify the preview by changing various
-options at the top of the pane, including the preview device, layout theme, platform
-version and more. To see a preview of how your app would look with a particular device
-skin, click the preview icon
-<img src="{@docRoot}images/tools/as-preview-icon.png" style="vertical-align:bottom;margin:0;height:19px" />
-and choose the desired device, such as Nexus 4:</p>
-
-<img src="{@docRoot}images/tools/as-preview-chrome.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> Previewing your app.</p>
-
-<p>To preview the layout on multiple devices simultaneously, select <strong>Preview All
-Screen Sizes</strong> from the device drop-down. </p>
-
-<p>When you click in the preview image, the layout editor highlights the corresponding
-section in the XML, and vice-versa.</p>
-
-<h3>Interactive error detection and recovery</h3>
-
-<p>As you edit the <strong>Text</strong> view of your layout XML file, Android Studio flags
-typos and offers assistance.</p>
-
-<p>For example, suppose you are adding a button, and you misspell it as "Buttonn".
-Android Studio helps you to correct it by displaying an error such as the following,
-where you can click on "Change to Button" to fix the error in the XML file:</p>
-
-<img src="{@docRoot}images/tools/as-error.png" alt="" />
-
-<p class="img-caption"><strong>Figure 2.</strong> Flagging errors.</p>
-
-<p>Android Studio also prompts you to supply missing information. For example, suppose you
-start adding a fragment to your layout XML file. First of all, Android Studio displays
-auto-complete suggestions as you type. Once it becomes clear that you are adding a fragment,
-Android Studio displays an error panel with links that you can click to supply the missing
-attributes. Clicking "Automatically add all missing attributes" in this case
-does just that—it completes the fragment definition in your layout XML file:</p>
-
-<img src="{@docRoot}images/tools/as-frag-ex.png" alt="" />
-
-<p class="img-caption"><strong>Figure 3.</strong> Supplying missing information</p>
-
-<h3>Picking a theme</h3>
-
-<p>To pick a theme for your app, click the Theme icon
-<img src="{@docRoot}images/tools/as-theme-icon.png" style="vertical-align:bottom;margin:0;height:19px" />.
-</p>
-
-<p>This displays the <strong>Select Theme</strong> dialog, where you can search for a
-particular theme and/or select one from the list on the right hand side. The theme you
-choose will be reflected in the previewed image.</p>
-
-<img src="{@docRoot}images/tools/as-theme-db.png" alt="" />
-
-<p class="img-caption"><strong>Figure 4.</strong> Specifying a theme.</p>
-
-<h3>Localization</h3>
-
-<p>Android Studio provides built-in localization support. When you click the
-localization icon
-<img src="{@docRoot}images/tools/as-i18n-icon.png" style="vertical-align:bottom;margin:0;height:19px" />,
-you can select a particular locale, add and edit translations, preview the locales your
-app supports (all locales or just a single locale), and preview right-to-left layout for
-languages that are RTL.</p>
-
-<p>See <a href="{@docRoot}training/basics/supporting-devices/languages.html">Supporting
-Different Languages</a> for a description of how to support different locales in your app.</p>
-<p>For example, here is a preview of a "Hello World" app for the
-<img src="{@docRoot}images/tools/as-fr-icon.png" style="vertical-align:bottom;margin:0;height:19px" />
-locale:</p>
-
-<img src="{@docRoot}images/tools/as-fr-device.png" alt="" />
-<p class="img-caption"><strong>Figure 5.</strong> Previewing locales.</p>
-
-<h2>Editing in the Design View</h2>
-
-<p>You can switch to the graphical editor by clicking <strong>Design</strong> at the
-bottom of the window. While editing in the <strong>Design</strong> view, you can show and
-hide the widgets available to drag-and-drop by clicking <strong>Palette</strong> on the
-left side of the window. Clicking <strong>Designer</strong> on the right side of the
-window reveals a panel with a layout hierarchy and a list of properties for each view in
-the layout.</p>
-
-<p>When you drag a widget into the graphical layout for your app, the display changes to
-help you place the widget. What you see depends on the type of layout. For example, if
-you're dragging a widget into a {@link android.widget.FrameLayout}, it displays a grid to
-help you place the widget, as shown in figure 6:</p>
-
-<img src="{@docRoot}images/tools/as-grid-layout.png" alt="" />
-
-<p class="img-caption"><strong>Figure 6.</strong> Using the grid layout to place a widget.</p>
-
-<p>Within the graphical editor, you can rearrange your app's UI by dragging widgets to
-the desired location.</p>
-
-<h3>Multi-API Version Rendering</h3>
-
-<p>Android Studio supports multi-API version rendering. When you click the Android version icon <img src="{@docRoot}images/tools/as-api-level-preview.png" style="vertical-align:bottom;margin:0;height:19px" /> in the <b>Design</b> view,
-Android Studio allows you to preview your Android layouts across multiple Android API levels.
-</p>
-
-<p><img src="{@docRoot}images/tools/studio-api-version-rendering.png" /></p>
- <p class="img-caption"><strong>Figure 7.</strong> Multi-API version rendering.</p>
-
-<h3>Taking a snapshot</h3>
-
-<p>When you run your app on a connected device, you can take a snapshot of it by clicking
-the camera icon
-<img src="{@docRoot}images/tools/as-camera-icon.png" style="vertical-align:bottom;margin:0;height:19px" />
-to the left of the logging
-panel (at the bottom of the window by default). This takes a snapshot of your running app
-(or whatever is currently displayed on your device) and displays it in a window. Check
-<strong>Frame Screenshot</strong> to show your screenshot within the device skin of your
-choice. You can also specify whether you want the image to have screen glare and/or a drop
-shadow. Once you have the desired effect, you can save the image.</p>
-
-<p>You can use the same process to create a snapshot of your app's preview. Just click the
-camera icon in the preview area and follow the steps for adding a device skin.</p>
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
deleted file mode 100644
index 4cd6f8c..0000000
--- a/docs/html/sdk/installing/studio-tips.jd
+++ /dev/null
@@ -1,342 +0,0 @@
-page.title=Android Studio Tips and Tricks
-page.image=images/tools/studio-previewall.png
-page.metaDescription=Tips to help you get started with Android Studio's most common tasks and productivity enhancements.
-page.tags=studio,tips
-meta.tags="studio", "tools"
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#productivity-features">Productivity Shortcuts</a></li>
- <li><a href="#intellij">Working with IntelliJ</a></li>
- <li><a href="#key-commands">Key Commands</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/index.html">Download Android Studio</a></li>
- <li><a href="http://wiki.jetbrains.net/intellij/Android">IntelliJ IDEA Android Tutorials</a></li>
- <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA">IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>If you're unfamiliar with using Android Studio and the IntelliJ IDEA interface, this page
-provides some tips to help you get started with some of the most common tasks and productivity
-enhancements. </p>
-
-
-<h2 id="productivity-features">Productivity Shortcuts</h2>
-
-<p>Android Studio includes a number of features to help you be more productive in your coding.
-This section notes a few of the key features to help you work quickly and efficiently.
-</p>
-
-
-<h3>Smart Rendering</h3>
-<p>With smart rendering, Android Studio displays links for quick fixes to rendering errors.
-For example, if you add a button to the layout without specifying the <em>width</em> and
-<em>height</em> attributes, Android Studio displays the rendering message <em>Automatically
-add all missing attributes</em>. Clicking the message adds the missing attributes to the layout.</p>
-
-
-<h3> Bitmap rendering in the debugger</h3>
-<p>While debugging, you can now right-click on bitmap variables in your app and invoke
-<em>View Bitmap</em>. This fetches the associated data from the debugged process and renders
-the bitmap in the debugger. </p>
-<p><img src="{@docRoot}images/tools/studio-bitmap-rendering.png" style="width:350px"/></p>
-<p class="img-caption"><strong>Figure 1.</strong> Bitmap Rendering</p>
-
-
-<h3>Creating new files</h3>
-<p>You can quickly add new code and resource files by clicking the appropriate directory in the
-<strong>Project</strong> pane and pressing <code>ALT + INSERT</code> on Windows and Linux or
-<code>COMMAND + N</code> on Mac. Based on the type of directory selected, Android Studio
-offers to create the appropriate file type.</p>
-
-<p>For example, if you select a layout directory, press <code>ALT + INSERT</code> on Windows,
-and select <strong>Layout resource file</strong>, a dialog opens so you can name the file
-(you can exclude the {@code .xml} suffix) and choose a root view element. The editor then
-switches to the layout design editor so you can begin designing your layout.</p>
-
-
-<h3>Output window message filtering</h3>
-<p>When checking build results, you can filter messages by <em>message type</em> to quickly
-locate messages of interest.</p>
-<img src="{@docRoot}images/tools/studio-outputwindowmsgfiltering.png" style="width:200px"style="width:200px" />
-<p class="img-caption"><strong>Figure 2.</strong> Filter Build Messages</p>
-
-
-<h3>Hierarchical parent setting</h3>
-<p>The activity parent can now be set in the Activity Wizard when creating a new
-activity. Setting a <em>hierarchal parent</em> sets the {@code Up} button to automatically
-appear in the app's Action bar when viewing a child activity, so the {@code Up}
-button no longer needs to be manually specified in the <em>menu.xml</em> file.</p>
-
-
-<h3>Creating layouts</h3>
-<p>Android Studio offers an advanced layout editor that allows you to drag-and-drop widgets
-into your layout and preview your layout while editing the XML.</p>
-
-<p>While editing in the <strong>Text</strong> view, you can preview the layout on devices by
-opening the <strong>Preview</strong> pane available on the right side of the window. Within the
-Preview pane, you can modify the preview by changing various options at the top of the pane,
-including the preview device, layout theme, platform version and more. To preview the layout on
-multiple devices simultaneously, select <strong>Preview All Screen Sizes</strong> from the
-device drop-down.</p>
-<p><img src="{@docRoot}images/tools/studio-previewall.png" style="width:350px"/></p>
-<p class="img-caption"><strong>Figure 3.</strong> Preview All Screens</p>
-
-<p>You can switch to the graphical editor by clicking <strong>Design</strong> at the
-bottom of the window. While editing in the Design view, you can show and hide the
-widgets available to drag-and-drop by clicking <strong>Palette</strong> on the left side of the
-window. Clicking <strong>Designer</strong> on the right side of the window reveals a panel
-with a layout hierarchy and a list of properties for each view in the layout.</p>
-
-
-<h3>Annotations</h3>
-<p>Android Studio provides coding assistance for using annotations from the
-{@link android.support.annotation Support-Annotations} library, part of the
-Support Repository.
-
-Adding a dependency for this library enables you to decorate your code with annotations to help
-catch bugs, such as null pointer exceptions and resource type conflicts. You can also create
-enumerated annotations to, for example, check that a passed parameter value matches a value from
-a defined set of constants. For more information, see
-<a href="{@docRoot}tools/debugging/annotations.html#annotations">Improving Code Inspection with
-Annotations</a>.
-</p>
-
-
-<h3>Java class decompiling</h3>
-<p>Android Studio allows you to look at what’s inside Java libraries when you don’t have access
-to the source code. </p>
-
-<p>The decompiler is built into Android Studio for easy access. To use this feature, right-click
-a class, method, or field from a library for which you do not have source file access and select
-<strong>decompile</strong>.</p> The decompiled source code appears. </p>
-
-<p>To adjust the Java decompiler settings, select
-<strong>File > Settings > Other Settings > Java Decompiler</strong>. </p>
-
-
-<h3>Debugging and performance enhancements</h3>
-<p>Android Studio offers debugging and performance enhancements such as:</p>
-<ul>
- <li>Custom keymaps. To modify the current keymap, choose
- <strong>File > Settings > Keymap</strong>. </li>
- <li>Support for high density (Retina) displays on Windows and Linux. </li>
- <li>Scratch files for quick prototyping without creating any project files.
- <p>Choose <strong>Tools > New Scratch File</strong> to open a scratch file to quickly
- build and run code prototypes. Together with Android Studio coding assistance, scratch
- files allow you to quickly run and debug code updates with the support of all file operations.
- By embedding code created with scripting languages, you can run your code from within the
- scratch file.</p>
- </li>
-</ul>
-
-
-<h3 id="live-template">Live templates</h3>
-<p>Live templates allow you to enter code snippets for fast insertion and completion of small chunks
-of code. To insert a live template, type the template abbreviations and press the
-Tab key. Android Studio inserts the code snippet associated with the template into
-your code. </p>
-
-<p>For example, entering the <code>newInstance</code> abbreviation followed by the
-Tab key inserts the code for a new fragment instance with argument placeholders. </p>
-
-<pre>
-public static $fragment$ newInstance($args$) {
- $nullChecks$
- Bundle args = new Bundle();
- $addArgs$
- $fragment$ fragment = new $fragment$();
- fragment.setArguments(args);
- return fragment;
-}
-</pre>
-
-<p>Similarly, the <code>fbc</code> abbreviation inserts a <code>findViewById</code> call along
-with cast and resource id syntax. </p>
-
-<pre>
-() findViewById(R.id.);
-</pre>
-
-<p>Use the <strong>File > Settings > Editor > Live Templates</strong> menu option to
-display the full list of supported live templates and customize the inserted code. </p>
-
-
-
-<h2 id="intellij">Working with IntelliJ-based Coding Practices</h3>
-
-<p>This section list just a few of the code editing
-practices you should consider using when creating Android Studio apps. </p>
-
-<p>For complete user documentation for the IntelliJ IDEA interface (upon which Android Studio
-is based), refer to the
-<a href="http://www.jetbrains.com/idea/documentation/index.jsp">IntelliJ IDEA documentation</a>.</p>
-
-
-<h3><em>Alt + Enter</em> key binding</h3>
-<p>For quick fixes to coding errors, the IntelliJ powered IDE implements the <em>Alt + Enter</em>
-key binding to fix errors (missing imports, variable assignments, missing references, etc) when
-possible, and if not, suggest the most probable solution. </p>
-
-
-<h3><em>Ctrl + D</em> key binding</h3>
-<p>The <em>Ctrl + D</em> key binding is great for quickly duplicating code lines or fragments.
-Simply select the desired line or fragment and enter this key binding. </p>
-
-
-<h3>Navigate menu</h3>
-<p>In case you're not familiar with an API class, file or symbol, the <em>Navigate</em> menu lets
-you jump directly to the class of a method or field name without having to search through
-individual classes. </p>
-
-
-<h3>Inspection scopes</h3>
-<p>Scopes set the color of code segments for easy code identification and location. For example,
-you can set a scope to identify all code related to a specific action bar. </p>
-
-
-<h3>Injecting languages</h3>
-<p>With language injection, the Android Studio IDE allows you to work with islands of different
-languages embedded in the source code. This extends the syntax, error highlighting and coding
-assistance to the embedded language. This can be especially useful for checking regular expression
-values inline and validating XML.</p>
-
-
-<h3>Code folding</h3>
-<p>This allows you to selectively hide and display sections of the code for readability. For
-example, resource expressions or code for a nested class can be folded or hidden in to one line
-to make the outer class structure easier to read. The inner class can be later expanded for
-updates. </p>
-
-
-<h3>Image and color preview</h3>
-<p>When referencing images and icons in your code, a preview of the image or icon appears
-(in actual size at different densities) in the code margin to help you verify the image or icon
-reference. Pressing {@code F1} with the preview image or icon selected displays resource asset
-details, such as the <em>dp</em> settings. </p>
-
-
-<h3>Quick F1 documentation</h3>
-<p>You can now inspect theme attributes using <strong>View > Quick Documentation</strong>
-(<strong>F1</strong>),
-see the theme inheritance hierarchy, and resolve values for the various attributes.</p>
-
-<p>If you invoke <strong> View > Quick Documentation</strong> (usually bound to F1) on the theme
-attribute <em>?android:textAppearanceLarge</em>, you will see the theme inheritance hierarchy and
-resolved values for the various attributes that are pulled in.</p>
-
-
-
-<h3 id="key-commands">Keyboard Commands</h3>
-
-<p>The following tables list keyboard shortcuts for common operations.</p>
-
-<p class="note"><strong>Note:</strong> This section lists Android Studio keyboard shortcuts
-for the default keymap. To change the default keymap on Windows and Linux, go to
-<strong>File</strong> > <strong>Settings</strong> > <strong>Keymap</strong>. If you're
-using Mac OS X, update your keymap to use the Mac OS X 10.5+ version keymaps under
-<strong>Android Studio > Preferences > Keymap</strong>.</p>
-
-
-<p class="table-caption"><strong>Table 1.</strong> Programming key commands</p>
-<table>
-<tr><th>Action</th><th>Android Studio Key Command</th></tr>
-
-<tr>
- <td>Command look-up (autocomplete command name)</td>
- <td>CTRL + SHIFT + A</td>
-</tr>
-
-<tr>
- <td>Project quick fix</td>
- <td>ALT + ENTER</td>
-</tr>
-
-<tr>
- <td>Reformat code</td>
- <td>CTRL + ALT + L (Win)<br>
- OPTION + CMD + L (Mac)</td>
-</tr>
-
-<tr>
- <td>Show docs for selected API</td>
- <td>CTRL + Q (Win)<br>
- F1 (Mac)</td>
-</tr>
-
-<tr>
- <td>Show parameters for selected method</td>
- <td>CTRL + P</td>
-</tr>
-
-<tr>
- <td>Generate method</td>
- <td>ALT + Insert (Win)<br>
- CMD + N (Mac)</td>
-</tr>
-
-<tr>
- <td>Jump to source</td>
- <td>F4 (Win)<br>
- CMD + down-arrow (Mac)</td>
-</tr>
-
-<tr>
- <td>Delete line</td>
- <td>CTRL + Y (Win)<br>
- CMD + Backspace (Mac)</td>
-</tr>
-
-<tr>
- <td>Search by symbol name</td>
- <td>CTRL + ALT + SHIFT + N (Win)<br>
- OPTION + CMD + O (Mac)</td>
-</tr>
-
-</table>
-
-
-
-
-<p class="table-caption"><strong>Table 2.</strong> Project and editor key commands</p>
-<table>
-<tr><th>Action</th><th>Android Studio Key Command</th></tr>
-
-<tr>
- <td>Build</td>
- <td>CTRL + F9 (Win)<br>
- CMD + F9 (Mac)</td>
-</tr>
-
-<tr>
- <td>Build and run</td>
- <td>SHIFT + F10 (Win)<br>
- CTRL + R (Mac)</td>
-</tr>
-
-<tr>
- <td>Toggle project visibility</td>
- <td>ALT + 1 (Win)<br>
- CMD + 1 (Mac)</td>
-</tr>
-
-<tr>
- <td>Navigate open tabs</td>
- <td>ALT + left-arrow; ALT + right-arrow (Win)<br>
- CTRL + left-arrow; CTRL + right-arrow (Mac)</td>
-</tr>
-
-</table>
-
-<p>For a complete keymap reference guide, see the
-<a href="http://www.jetbrains.com/idea/documentation/index.jsp">IntelliJ IDEA</a>
-documentation.</p>
diff --git a/docs/html/sdk/sdk_vars.cs b/docs/html/sdk/sdk_vars.cs
deleted file mode 100644
index 6e58ddd..0000000
--- a/docs/html/sdk/sdk_vars.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-<?cs
-set:studio.version='2.1.0.9' ?><?cs
-set:studio.release.date='April 26, 2016' ?><?cs
-
-
-set:studio.linux_bundle_download='android-studio-ide-143.2790544-linux.zip' ?><?cs
-set:studio.linux_bundle_bytes='298122012' ?><?cs
-set:studio.linux_bundle_checksum='45dad9b76ad0506c354483aaa67ea0e2468d03a5' ?><?cs
-
-set:studio.mac_bundle_download='android-studio-ide-143.2790544-mac.dmg' ?><?cs
-set:studio.mac_bundle_bytes='298589307' ?><?cs
-set:studio.mac_bundle_checksum='d667d93ae2e4e0f3fc1b95743329a46222dbf11d' ?><?cs
-
-set:studio.win_bundle_download='android-studio-ide-143.2790544-windows.zip' ?><?cs
-set:studio.win_bundle_bytes='300627540' ?><?cs
-set:studio.win_bundle_checksum='9689ba415e5f09e2dcf5263ea302e7b1d98a8fc6' ?><?cs
-
-set:studio.win_bundle_exe_download='android-studio-bundle-143.2790544-windows.exe' ?><?cs
-set:studio.win_bundle_exe_bytes='1238568304' ?><?cs
-set:studio.win_bundle_exe_checksum='c6abe7980dbb7d1d9887f7341a2942c9e506f891' ?><?cs
-
-set:studio.win_notools_exe_download='android-studio-ide-143.2790544-windows.exe' ?><?cs
-set:studio.win_notools_exe_bytes='283804056' ?><?cs
-set:studio.win_notools_exe_checksum='a2065ba737ddcfb96f4921fee6a038278f46d2a7' ?><?cs
-
-
-
-set:sdk.linux_download='android-sdk_r24.4.1-linux.tgz' ?><?cs
-set:sdk.linux_bytes='326412652' ?><?cs
-set:sdk.linux_checksum='725bb360f0f7d04eaccff5a2d57abdd49061326d' ?><?cs
-
-set:sdk.mac_download='android-sdk_r24.4.1-macosx.zip' ?><?cs
-set:sdk.mac_bytes='102781947' ?><?cs
-set:sdk.mac_checksum='85a9cccb0b1f9e6f1f616335c5f07107553840cd' ?><?cs
-
-set:sdk.win_download='android-sdk_r24.4.1-windows.zip' ?><?cs
-set:sdk.win_bytes='199701062' ?><?cs
-set:sdk.win_checksum='66b6a6433053c152b22bf8cab19c0f3fef4eba49' ?><?cs
-set:sdk.win_installer='installer_r24.4.1-windows.exe' ?><?cs
-set:sdk.win_installer_bytes='151659917' ?><?cs
-set:sdk.win_installer_checksum='f9b59d72413649d31e633207e31f456443e7ea0b' ?><?cs
-
-
-
-set:ndk.mac64_download='android-ndk-r11c-darwin-x86_64.zip' ?><?cs
-set:ndk.mac64_bytes='772428792' ?><?cs
-set:ndk.mac64_checksum='4ce8e7ed8dfe08c5fe58aedf7f46be2a97564696' ?><?cs
-
-set:ndk.linux64_download='android-ndk-r11c-linux-x86_64.zip' ?><?cs
-set:ndk.linux64_bytes='794135138' ?><?cs
-set:ndk.linux64_checksum='de5ce9bddeee16fb6af2b9117e9566352aa7e279' ?><?cs
-
-set:ndk.win64_download='android-ndk-r11c-windows-x86_64.zip' ?><?cs
-set:ndk.win64_bytes='771407642' ?><?cs
-set:ndk.win64_checksum='3d89deb97b3191c7e5555f1313ad35059479f071' ?><?cs
-set:ndk.win32_download='android-ndk-r11c-windows-x86.zip' ?><?cs
-set:ndk.win32_bytes='728899082' ?><?cs
-set:ndk.win32_checksum='ff939bde6cd374eecbd2c3b2ad218697f9a5038c'
-?>
-<?cs
-def:size_in_mb(bytes)
- ?><?cs set:mb = bytes / 1024 / 1024
- ?><?cs var:mb ?><?cs
-/def ?>
diff --git a/docs/html/sdk/terms.jd b/docs/html/sdk/terms.jd
deleted file mode 100644
index 149c243..0000000
--- a/docs/html/sdk/terms.jd
+++ /dev/null
@@ -1,144 +0,0 @@
-page.title=Terms and Conditions
-hide_license_footer=true
-fullpage=1
-@jd:body
-
-<div class="wrap" style="width:940px;">
-
-<div class="sdk-terms fullsize" onfocus="this.blur()">
-<h1>Terms and Conditions</h1>
-
-This is the Android Software Development Kit License Agreement
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-
-<em>November 20, 2015</em>
-</div>
-
-</div>
\ No newline at end of file
diff --git a/docs/html/sdk/win-usb.jd b/docs/html/sdk/win-usb.jd
deleted file mode 100644
index d4948eb..0000000
--- a/docs/html/sdk/win-usb.jd
+++ /dev/null
@@ -1,308 +0,0 @@
-page.title=Google USB Driver
-@jd:body
-
-
-
-<div style="position:relative;height:660px;">
-
-
-<div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-<div class="col-13" style="margin:0;"> </div><!-- provides top margin for content -->
-
-
-<p class="sdk-terms-intro">Before downloading the Google USB Driver,
-you must agree to the following terms and conditions.</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">Terms and Conditions</h2>
-This is the Android Software Development Kit License Agreement
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-<em>November 20, 2015</em>
-</div><!-- thin wrapper around tos doc -->
-
-
-<div id="usb-terms-form">
-<p>
-<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-<label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
-</p>
-<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-</div>
-
-
-
-</div><!-- end TOS -->
-
-
-
-<div class="wrap col-13" style="margin:0" id="main">
-
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#WinUsbDriver">Downloading the Google USB Driver</a></li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/extras/oem-usb.html#InstallingDriver">Installing a USB Driver</a></li>
- <li><a href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a></li>
- </ol>
-
-<h2>Get it</h2>
-
-<div class="download-box">
- <a onclick="return onDownload(this)"
- href="https://dl-ssl.google.com//android/repository/latest_usb_driver_windows.zip"
- class="button" id="usbDriverButton">
- Download Google USB Driver
- </a>
- <p class="filename">latest_usb_driver_windows.zip</p>
-</div>
-
-</div>
-</div>
-
-<p>The Google USB Driver is <strong>required for Windows only</strong> in order to perform
-<a href="{@docRoot}tools/help/adb.html">adb</a> debugging with any of
-the <strong>Google Nexus devices</strong>. The one exception is the
-Galaxy Nexus: the driver for Galaxy Nexus is distributed by <a
-href="http://www.samsung.com/us/support/downloads/verizon-wireless/SCH-I515MSAVZW">Samsung</a>
-(listed as model SCH-I515).</p>
-
-<p>Windows drivers for all other devices are provided by the respective hardware
-manufacturer, as listed in the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a>
-document.</p>
-
-
-
-<p class="note"><strong>Note:</strong>
-If you're developing on Mac OS X or Linux, then you <strong>do not</strong> need to install a USB
-driver. To start developing with your device, read
-<a href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a>.</p>
-
-
-<h2 id="WinUsbDriver">Downloading the Google USB Driver</h2>
-
-<p>The Google USB Driver for Windows is available for download as an optional SDK
-component. You need the driver only if you are developing on Windows and
-want to connect a Google Android-powered device (such as a Nexus 7) to your
-development environment over USB.</p>
-
-<div class="figure" style="width:536px;margin:0">
- <img src="{@docRoot}images/developing/sdk-usb-driver.png" alt="" />
- <p class="img-caption"><strong>Figure 1.</strong> The SDK Manager
- with the Google USB Driver selected.</p>
-</div>
-
-<p>You can download the Google USB Driver for Windows in one of two ways:</p>
-<ul>
- <li>
- <a onclick="$('#usbDriverButton').trigger('click');return false;" href="#">
- Click here to download the latest Google USB Driver ZIP file</a>.</li>
- <li>Or, use the Android SDK Manager tool that is
-included with the <a href="{@docRoot}sdk/index.html">Android SDK</a>. Using the SDK Manager
-helps you keep the driver up to date by notifying you when your current driver is out of date.
- <ol>
- <li>Launch the Android SDK Manager by double-clicking <code>SDK Manager.exe</code>,
- at the root of your SDK directory.</li>
- <li>Expand <em>Extras</em>.</li>
- <li>Check <strong>Google USB Driver package</strong> and click <strong>Install</strong>.</li>
- <li>Proceed to install the package. When done, the driver files are
- downloaded into the <code><sdk>\extras\google\usb_driver\</code> directory.</li>
- </ol>
- </li>
-</ul>
-
-<p>For installation information, read
-<a href="{@docRoot}tools/extras/oem-usb.html#InstallingDriver">Installing a USB Driver</a>.</p>
-
-
-
-</div><!-- end wrap "main" for document content -->
-
-</div><!-- end outter wrapper for page contents -->
-
-
-
-
-<script>
-
-
- function onDownload(link) {
-
- /* set text for download button */
- $("#downloadForRealz").html($(link).text());
- $("#downloadForRealz").attr('href',$(link).attr('href'));
-
- $("#tos").fadeIn('fast');
- $("#main").fadeOut('fast');
-
- location.hash = "download";
- return false;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed and a bit version is chosen */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- // OK, start the download and reset the page
- $("input#agree").attr('checked',false);
- $("a#downloadForRealz").addClass('disabled');
- $("#tos").fadeOut('fast');
- $("#main").fadeIn('fast');
- location.hash = "top";
- } else {
- // Have not agreed to tos, make the checkbox blink
- $("label#agreeLabel").parent().stop().animate({color: "#258AAF"}, 200,
- function() {$("label#agreeLabel").parent().stop().animate({color: "#222"}, 200)}
- );
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
\ No newline at end of file
diff --git a/docs/html/tools/_book.yaml b/docs/html/tools/_book.yaml
deleted file mode 100644
index fb257f3..0000000
--- a/docs/html/tools/_book.yaml
+++ /dev/null
@@ -1,280 +0,0 @@
-toc:
-- title: Download
- path: /sdk/index.html
- section:
- - title: Install Android Studio
- path: /sdk/installing/index.html
-
-- title: Workflow
- path: /tools/workflow/index.html
- section:
- - title: Projects
- path: /tools/projects/index.html
- - title: Build and Run
- path: /tools/building/index.html
- - title: Virtual Devices
- path: /tools/devices/index.html
- - title: Hardware Devices
- path: /tools/device.html
- section:
- - title: USB Drivers
- path: /tools/extras/oem-usb.html
- - title: Testing
- path: /tools/testing/index.html
- - title: Debugging
- path: /tools/debugging/index.html
- - title: Publishing
- path: /tools/publishing/publishing_overview.html
- path_attributes:
- - name: zh-cn-lang
- value: 发布概述
- section:
- - title: Preparing for Release
- path: /tools/publishing/preparing.html
- path_attributes:
- - name: zh-cn-lang
- value: 准备发布
- - title: Versioning Your Apps
- path: /tools/publishing/versioning.html
- - title: Signing Your Apps
- path: /tools/publishing/app-signing.html
-
-- title: Android Studio
- path: /tools/studio/index.html
- section:
- - title: Features
- path: /tools/studio/studio-features.html
- - title: Configuration
- path: /tools/studio/studio-config.html
- section:
- - title: SDK Manager
- path: /tools/help/sdk-manager.html
- - title: Project Tools
- path: /sdk/installing/create-project.html
- section:
- - title: Project Structure Management
- path: /tools/help/project-mgmt.html
- - title: Using Code Templates
- path: /tools/projects/templates.html
- - title: Building and Running
- path: /tools/building/building-studio.html
- - title: Code Tools
- path: /tools/studio/code-tools.html
- section:
- - title: Improving Your Code with lint
- path: /tools/debugging/improving-w-lint.html
- - title: Improving Code Inspection with Annotations
- path: /tools/debugging/annotations.html
- - title: Shrink Your Code and Resources
- path: /tools/help/proguard.html
- - title: Supporting URLs and App Indexing in Android Studio
- path: /tools/help/app-link-indexing.html
- - title: UI Tools
- path: /tools/studio/ui-tools.html
- section:
- - title: Layout Editor
- path: /sdk/installing/studio-layout.html
- - title: Theme Editor
- path: /tools/help/theme-editor.html
- - title: Translations Editor
- path: /tools/help/translations-editor.html
- - title: Vector Asset Studio
- path: /tools/help/vector-asset-studio.html
- - title: Image Asset Studio
- path: /tools/help/image-asset-studio.html
- - title: AVD Manager
- path: /tools/devices/managing-avds.html
- - title: Android Emulator
- path: /tools/devices/emulator.html
- section:
- - title: Android Emulator Command-Line Features
- path: /tools/help/emulator.html
- - title: Debugging Tools
- path: /tools/debugging/debugging-studio.html
- section:
- - title: DDMS
- path: /tools/debugging/ddms.html
- - title: Android Monitor
- path: /tools/help/android-monitor.html
- section:
- - title: logcat Monitor
- path: /tools/help/am-logcat.html
- - title: Memory Monitor
- path: /tools/help/am-memory.html
- - title: CPU Monitor
- path: /tools/help/am-cpu.html
- - title: GPU Monitor
- path: /tools/help/am-gpu.html
- - title: Network Monitor
- path: /tools/help/am-network.html
- - title: Tips and Tricks
- path: /sdk/installing/studio-tips.html
- - title: Migrating from Eclipse ADT
- path: /sdk/installing/migrate.html
- section:
- - title: Transition Guide
- path: /tools/studio/eclipse-transition-guide.html
-
-- title: Tools Help
- path: /tools/help/index.html
- section:
- - title: adb
- path: /tools/help/adb.html
- - title: android
- path: /tools/help/android.html
- section:
- - title: Managing AVDs
- path: /tools/devices/managing-avds-cmdline.html
- - title: Managing Projects
- path: /tools/projects/projects-cmdline.html
- - title: AVD Manager
- path: /tools/help/avd-manager.html
- - title: bmgr
- path: /tools/help/bmgr.html
- - title: Desktop Head Unit
- path: /tools/help/desktop-head-unit.html
- - title: Device Monitor
- path: /tools/help/monitor.html
- - title: dmtracedump
- path: /tools/help/dmtracedump.html
- - title: Draw 9-Patch
- path: /tools/help/draw9patch.html
- - title: etc1tool
- path: /tools/help/etc1tool.html
- - title: Hierarchy Viewer
- path: /tools/help/hierarchy-viewer.html
- section:
- - title: Optimizing your UI
- path: /tools/debugging/debugging-ui.html
- - title: hprof-conv
- path: /tools/help/hprof-conv.html
- - title: jobb
- path: /tools/help/jobb.html
- - title: lint
- path: /tools/help/lint.html
- - title: logcat
- path: /tools/help/logcat.html
- section:
- - title: Reading and Writing Logs
- path: /tools/debugging/debugging-log.html
- - title: mksdcard
- path: /tools/help/mksdcard.html
- - title: Tracer for OpenGL ES
- path: /tools/help/gltracer.html
- - title: zipalign
- path: /tools/help/zipalign.html
-
-- title: Build System
- path: /sdk/installing/studio-build.html
- section:
- - title: Running Gradle Builds
- path: /tools/building/building-cmdline.html
- - title: Configuring Gradle Builds
- path: /tools/building/configuring-gradle.html
- - title: Android Plugin for Gradle
- path: /tools/building/plugin-for-gradle.html
- - title: Manifest Merging
- path: /tools/building/manifest-merge.html
- - title: Apps Over 64K Methods
- path: /tools/building/multidex.html
-
-- title: Performance Tools
- path: /tools/performance/index.html
- section:
- - title: Overdraw Debugger
- path: /tools/performance/debug-gpu-overdraw/index.html
- - title: Rendering Profiler
- path: /tools/performance/profile-gpu-rendering/index.html
- - title: Hierarchy Viewer
- path: /tools/performance/hierarchy-viewer/index.html
- section:
- - title: Setup
- path: /tools/performance/hierarchy-viewer/setup.html
- - title: Profiling
- path: /tools/performance/hierarchy-viewer/profiling.html
- - title: Memory Profilers
- path: /tools/performance/comparison.html
- section:
- - title: Memory Monitor
- path: /tools/performance/memory-monitor/index.html
- - title: Heap Viewer
- path: /tools/performance/heap-viewer/index.html
- - title: Allocation Tracker
- path: /tools/performance/allocation-tracker/index.html
- - title: Investigating Your RAM Usage
- path: /tools/debugging/debugging-memory.html
- - title: Traceview
- path: /tools/debugging/debugging-tracing.html
- section:
- - title: Walkthrough
- path: /tools/performance/traceview/index.html
- - title: Command Reference
- path: /tools/help/traceview.html
- - title: Systrace
- path: /tools/debugging/systrace.html
- section:
- - title: Walkthrough
- path: /tools/performance/systrace/index.html
- - title: Command Reference
- path: /tools/help/systrace.html
- - title: Battery Profilers
- path: /tools/performance/batterystats-battery-historian/index.html
- section:
- - title: Historian Charts
- path: /tools/performance/batterystats-battery-historian/charts.html
-
-- title: Testing Tools
- path: /tools/testing/testing-tools.html
- section:
- - title: Testing Concepts
- path: /tools/testing/testing_android.html
- - title: Testing Support Library
- path: /tools/testing-support-library/index.html
- section:
- - title: API Reference
- path: /reference/android/support/test/package-summary.html
- - title: Testing with Android Studio
- path: /training/testing/start/index.html
- - title: Testing from the Command-Line
- path: /tools/testing/testing_otheride.html
- - title: monkey
- path: /tools/help/monkey.html
- - title: monkeyrunner
- path: /tools/help/monkeyrunner_concepts.html
- section:
- - title: MonkeyDevice
- path: /tools/help/MonkeyDevice.html
- - title: MonkeyImage
- path: /tools/help/MonkeyImage.html
- - title: MonkeyRunner
- path: /tools/help/MonkeyRunner.html
-
-- title: Support Library
- path: /tools/support-library/index.html
- section:
- - title: Features
- path: /tools/support-library/features.html
- - title: Setup
- path: /tools/support-library/setup.html
-
-- title: Data Binding Library
- path: /tools/data-binding/guide.html
-
-- title: Revisions
- path: /tools/revisions/index.html
- section:
- - title: Android Studio
- path: /tools/revisions/studio.html
- - title: SDK Tools
- path: /tools/sdk/tools-notes.html
- - title: SDK Build Tools
- path: /tools/revisions/build-tools.html
- - title: Android Plugin for Gradle
- path: /tools/revisions/gradle-plugin.html
- - title: SDK Platforms
- path: /tools/revisions/platforms.html
- - title: ADT Plugin
- path: /tools/sdk/eclipse-adt.html
-
-- title: NDK
- path: /tools/sdk/ndk/index.html
diff --git a/docs/html/tools/adk/adk.jd b/docs/html/tools/adk/adk.jd
deleted file mode 100755
index d602497..0000000
--- a/docs/html/tools/adk/adk.jd
+++ /dev/null
@@ -1,672 +0,0 @@
-page.title=Accessory Development Kit 2011 Guide
-page.tags=adk
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#components">ADK Components</a></li>
- <li>
-
- <a href="#getting-started">Getting Started with the ADK</a>
-
- <ol>
- <li><a href="#installing">Installing the Arduino software and necessary
- libraries</a></li>
-
- <li><a href="#installing-firmware">Installing the firmware to the ADK board</a></li>
-
- <li><a href="#running-demokit">Running the DemoKit Android application</a></li>
-
- <li><a href="#monitoring">Monitoring the ADK board</a></li>
- </ol>
- </li>
-
- <li>
- <a href="#firmware">How the ADK board implements the Android Accessory Protocol</a>
-
- <ol>
- <li><a href="#wait-adk">Wait for and detect connected devices</a></li>
-
- <li><a href="#determine-adk">Determine the connected device's accessory mode
- support</a></li>
-
- <li><a href="#start-adk">Attempt to start the device in accessory mode</a></li>
-
- <li><a href="#establish-adk">Establish communication with the device</a></li>
- </ol>
- </li>
- </ol>
-
- <h2>Download</h2>
- <ol>
- <li><a href="https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK package</a></li>
- </ol>
-
- <h2>See also</h2>
-
- <ol>
- <li><a href="http://www.youtube.com/watch?v=s7szcpXf2rE">Google I/O Session Video</a></li>
- <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory Dev Guide</a></li>
- </ol>
-
- </div>
- </div>
-
- <p>The Android Open Accessory Development Kit (ADK) is a reference implementation of an Android
- Open Accessory, based on the <a href="http://www.arduino.cc/">Arduino open source electronics
- prototyping platform</a>. The accessory's hardware design files, code that implements the
- accessory's firmware, and the Android application that interacts with the accessory are provided
- as part of the kit to help hardware builders and software developers get started building their
- own accessories. The hardware design files and firmware code are contained in the <a href=
- "https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK package download</a>.</p>
-
- <p>A limited number of kits were produced and distributed at the Google I/O 2011 developer
- conference. However, many hardware builders have reproduced and enhanced the original design and
- these boards are available for purchase. The following list of distributors are currently
- producing Android Open Accessory compatible development boards:</p>
-
- <ul>
- <li>The <a href="http://store.arduino.cc/">Arduino Store</a> provides the <a
-href="http://arduino.cc/en/Main/ArduinoBoardADK">Arduino Mega ADK</a> (for EU nations or non-
- EU nations) that is based on the ATmega2560 and supports the ADK firmware.</li>
-
- <li><a href="https://store.diydrones.com/ProductDetails.asp?ProductCode=BR-PhoneDrone">DIY
- Drones</a> provides an Arduino-compatible board geared towards RC (radio controlled) and UAV
- (unmanned aerial vehicle) enthusiasts.</li>
-
- <li><a href="http://mbed.org/order/">mbed</a> provides a microcontroller and a library
- to develop accessories that support the Android accessory protocol. For more information, see
- <a href="http://mbed.org/cookbook/mbed-with-Android-ADK">mbed with the Android ADK</a>.
- </li>
-
- <li><a href="http://www.microchip.com/android">Microchip</a> provides a PIC based USB
- microcontroller board.</li>
-
- <li><a href="http://shop.moderndevice.com/products/freeduino-usb-host-board">Modern
- Device</a> provides an Arduino-compatible board that supports the ADK firmware.</li>
-
- <li><a href="http://www.rt-net.jp/shop/index.php?main_page=product_info&cPath=3_4&products_id=1">
- RT Corp</a> provides an Arduino-compatible board based on the Android ADK board design.</li>
-
- <li><a href="http://www.seeedstudio.com/depot/seeeduino-adk-main-board-p-846.html">
- Seeed Studio</a> provides an Arduino-compatible board that supports the ADK firmware.</li>
-
- <li><a href="http://www.sparkfun.com/products/10748">
- SparkFun</a>'s IOIO board now has beta support for the ADK firmware.</li>
-
- <li><a href="http://troido.de/de/shoplsmallgbuy-android-stufflsmallg">Troido</a> has produced an
- Arduino-compatible version of the ADK hardware.</li>
-
- </ul>
-
- <p>We expect more hardware distributers to create a variety of kits, so please stay tuned for
- further developments.</p>
-
- <h2 id="components">ADK Components</h2>
-
- <p>The main hardware and software components of the ADK include:</p>
-
- <ul>
- <li>A USB micro-controller board that is based on the Arduino Mega2560 and Circuits@Home USB
- Host Shield designs (now referred to as the ADK board), which you will later implement as an
- Android USB accessory. The ADK board provides input and output pins that you can implement
- through the use of attachments called "shields." Custom firmware, written in C++, is installed
- on the board to define the board's functionality and interaction with the attached shield and
- Android-powered device. The hardware design files for the board are located in
- <code>hardware/</code> directory.</li>
-
- <li>An Android Demo Shield (ADK shield) that affixes atop the ADK board implements the input
- and output points on the board. These implementations include a joystick, LED outputs, and
- temperature and light sensors. You can create or buy your own shields or wire your own features
- to the ADK board to implement custom functionality. The hardware design files for the shield
- are located in <code>hardware/</code>.</li>
-
- <li>A library based on the <a href=
- "http://www.circuitsathome.com/arduino_usb_host_shield_projects">Arduino USB Host Shield</a>
- library provides the logic for the USB micro-controller board to act as a USB Host. This allows
- the board to initiate transactions with USB devices. Describing how to use this entire library
- is beyond the scope of this document. Where needed, this document points out important
- interactions with the library. For more information, see the source code for the Arduino USB
- Host Shield library in the <code>arduino_libs/USB_Host_Shield</code> directory.</li>
-
- <li>An Arduino sketch, <code>arduino_libs/AndroidAccessory/examples/demokit/demokit.pde</code>,
- defines the firmware that
- runs on the ADK board and is written in C++. The sketch calls the Android accessory protocol
- library to interact with the Android-powered device. It also sends data from the ADK board and
- shield to the Android application and receives data from the Android application and outputs it
- to the ADK board and shield.</li>
-
- <li>The Android accessory protocol library, which is located in the
- <code>arduino_libs/AndroidAccessory</code> directory. This library defines how to
- enumerate the bus, find a connected Android-powered device that supports accessory mode, and
- how to setup communication with the device.</li>
-
- <li>Other third party libraries to support the ADK board's functionality:
- <ul>
- <li><a href="http://www.arduino.cc/playground/Main/CapSense">CapSense library</a></li>
-
- <li><a href="http://www.arduino.cc/playground/Learning/I2C">I2C / TWI (Two-Wire Interface)
- library</a></li>
-
- <li><a href="http://www.arduino.cc/playground/ComponentLib/Servo">Servo library</a></li>
-
- <li><a href="http://www.arduino.cc/playground/Code/Spi">Spi library</a></li>
-
- <li><a href="http://www.arduino.cc/en/Reference/Wire">Wire library</a></li>
-
- <li>An Android application, DemoKit, that communicates with the ADK board and shield. The
- source for this project is in the <code>app/</code> directory.</li>
- </ul>
- </li>
-
- </ul>
-
- <h2 id="getting-started">Getting Started with the ADK</h2>
-
- <p>The following sections describe how to install the Arduino software on your computer, use the
- Arduino IDE to install the ADK board's firmware, and install and run the accompanying
- Android application for the ADK board. Before you begin, download the following items to set up
- your development environment:</p>
-
- <ul>
- <li><a href="http://arduino.cc/en/Main/Software">Arduino 1.0 or higher</a>: contains
- libraries and an IDE for coding and installing firmware to the ADK board.</li>
-
- <li><a href="http://www.arduino.cc/playground/Main/CapSense">CapSense library v.04</a>:
- contains the libraries to sense human capacitance. This library is needed for the capacitive
- button that is located on the ADK shield.</li>
-
- <li><a href="https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK software
- package</a>: contains the firmware for the ADK board and hardware design files for the ADK
- board and shield.</li>
- </ul>
-
- <h3 id="installing">Installing the Arduino software and necessary libraries</h3>
-
- <p>To install the Arduino software:</p>
-
- <ol>
- <li>
- <a href="http://arduino.cc/en/Main/Software">Download and install</a> the Arduino 1.0 or
- higher as described on the Arduino website.
-
- <p class="note"><strong>Note:</strong> If you are on a Mac, install the FTDI USB Serial
- Driver that is included in the Arduino package, even though the installation instructions say
- otherwise.</p>
- </li>
-
- <li><a href="https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">Download</a> and
- extract the ADK package to a directory of your choice. You should have an <code>app</code>,
- <code>arduino_libs</code>, and <code>hardware</code> directories.</li>
-
- <li><a href="http://www.arduino.cc/playground/Main/CapSense">Download</a> and extract
- the CapSense package to a directory of your choice.</li>
-
- <li>Install the necessary libraries:
-
- <p>On Windows:</p>
-
- <ol type="a">
- <li>Copy the <code>arduino_libs/AndroidAccessory</code> and
- <code>arduino_libs/USB_Host_Shield</code> directories (the complete directories,
- not just the files within) to the <code><arduino_installation_root>/libraries/</code>
- directory.</li>
-
- <li>Copy the extracted <code>CapSense/</code> library directory and its contents to the
- <code><arduino_installation_root>/libraries/</code> directory.</li>
- </ol>
-
- <p>On Mac:</p>
-
- <ol type="a">
- <li>Create, if it does not already exist, an <code>Arduino</code>
- directory inside your user account's <code>Documents</code> directory, and within
- that, a <code>libraries</code> directory.</li>
-
- <li>Copy the <code>arduino_libs/AndroidAccessory</code> and
- <code>arduino_libs/USB_Host_Shield</code> directories (the
- complete directories, not just the files within) to your
- <code>Documents/Arduino/libraries/</code> directory.</li>
-
- <li>Copy the extracted <code>CapSense/</code> library directory and its contents to the
- <code>Documents/Arduino/libraries/</code> directory.
- </ol>
-
- <p>On Linux (Ubuntu):</p>
-
- <ol type="a">
- <li>Copy the <code>firmware/arduino_libs/AndroidAccessory</code> and
- <code>firmware/arduino_libs/USB_Host_Shield</code> directories (the complete directories,
- not just the files within) to the <code><arduino_installation_root>/libraries/</code>
- directory.</li>
-
- <li>Copy the extracted <code>CapSense/</code> library directory and its contents to the
- <code><arduino_installation_root>/libraries/</code> directory.</li>
-
- <li>Install the avr-libc library by entering <code>sudo apt-get install avr-libc</code>
- from a shell prompt.</li>
- </ol>
- </li>
- </ol>
-
- <p>You should now have three new directories in the Arduino <code>libraries/</code> directory:
- <code>AndroidAccessory</code>, <code>USB_Host_Shield</code>, and <code>CapSense</code>.</p>
-
- <h3 id="installing-firmware">Installing the firmware to the ADK board</h3>
-
- <p>To install the firmware to the ADK board:</p>
-
- <ol>
- <li>Connect the ADK board to your computer using the micro-USB port, which allows two-way
- communication and provides power to the ADK board.</li>
-
- <li>Launch the Arduino IDE.</li>
-
- <li>Click <strong>Tools > Board > Arduino Mega 2560</strong> to specify the ADK board's
- type.</li>
-
- <li>Select the appropriate USB port:
-
- <ul>
- <li>On Windows: click <strong>Tools > Serial Port > COM#</strong> to specify the port
- of communication. The COM port number varies depending on your computer. COM1 is usually
- reserved for serial port connections. You most likely want COM2 or COM3.</li>
-
- <li>On Mac: Click <strong>Tools > Serial Port > dev/tty.usbserial-###</strong> to
- specify the port of communication.</li>
-
- <li>On Linux (Ubuntu): Click <strong>Tools > Serial Port > dev/ttyUSB#</strong> to
- specify the port of communication.</li>
- </ul>
- </li>
-
- <li>To open the Demokit sketch (firmware code), click <strong>File > Examples >
- AndroidAccessory > demokit</strong>.</li>
-
- <li>Click <strong>Sketch > Verify/Compile</strong> to ensure that the sketch has no
- errors.</li>
-
- <li>Select <strong>File > Upload</strong>. When Arduino outputs <strong>Done
- uploading.</strong>, the board is ready to communicate with your Android-powered device.</li>
- </ol>
-
- <h3 id="running-demokit">Running the DemoKit Android application</h3>
-
- <p>The DemoKit Android application runs on your Android-powered device and communicates with the
- ADK board. The ADK board receives commands such as lighting up the board's LEDs or sends data
- from the board such as joystick movement and temperature readings.</p>
-
- <p>After the application is installed, you can interact with the ADK board by moving the color
- LED or servo sliders (make sure
- the servos are connected) or by pressing the relay buttons in the application. On the ADK shield,
- you can press the buttons and move the joystick to see their outputs displayed in the
- application.</p>
-
- <h3 id="monitoring">Monitoring the ADK Board</h3>
-
- <p>The ADK firmware consists of a few files that you should be looking at if you want to build
- your own accessory. The files in the <code>arduino_libs/AndroidAccessory</code>
- directory are the most important files and have the logic to detect and connect to
- Android-powered devices that support accessory mode. Feel free to add debug statements (Arduino
- <code>Serial.println()</code> statements) to the code located in the
- <code><arduino_installation_root>/libraries/AndroidAccessory</code> directory and
- <code>demokit.pde</code> sketch and re-upload the sketch to the ADK board to
- discover more about how the firmware works.</p>
-
- <p>You can view the debug statements in the Arduino Serial Monitor by clicking <strong>Tools >
- Serial Monitor</strong> and setting the baud to 115200. The following sections about how
- accessories communicate with Android-powered devices describe much of what you should be doing in
- your own accessory.</p>
-
- <h2 id="firmware">How the ADK board implements the Android Accessory protocol</h2>
-
- <p>If you have access to the ADK board and shield, the following sections describe the firmware
- code that you installed onto the ADK board. The firmware demonstrates a practical example of how
- to implement the Android Accessory protocol. Even if you do not have the ADK board and shield,
- reading through how the hardware detects and interacts with devices in accessory mode is still
- useful if you want to port the code over for your own accessories.</p>
-
- <p>The important pieces of the firmware are the
- <code>arduino_libs/AndroidAccessory/examples/demokit/demokit/demokit.pde</code> sketch, which is
- the code that receives and sends data to the DemoKit application running on the Android-powered
- device. The code to detect and set up communication with the Android-powered device is contained
- in the <code>arduino_libs/AndroidAccessory/AndroidAccessory.h</code> and
- <code>arduino_libs/AndroidAccessory/AndroidAccessory.cpp</code> files. This code
- includes most of the logic that will help you implement your own accessory's firmware. It might
- be useful to have all three of these files open in a text editor as you read through these next
- sections.</p>
-
- <p>The following sections describe the firmware code in the context of the algorithm described in
- <a href="#accessory-protocol">Implementing the Android Accessory Protocol</a>.</p>
-
- <h3 id="wait-adk">Wait for and detect connected devices</h3>
-
- <p>In the firmware code (<code>demokit.pde</code>), the <code>loop()</code> function runs
- repeatedly and calls <code>AndroidAccessory::isConnected()</code> to check for any connected
- devices. If there is a connected device, it continuously updates the input and output streams
- going to and from the board and application. If nothing is connected, it continuously checks for
- a device to be connected:</p>
- <pre>
-...
-
-AndroidAccessory acc("Google, Inc.",
- "DemoKit",
- "DemoKit Arduino Board",
- "1.0",
- "http://www.android.com",
- "0000000012345678");
-
-...
-void loop()
-{
-...
- if (acc.isConnected()) {
- //communicate with Android application
- }
- else{
- //set the accessory to its default state
- }
-...
-}
-</pre>
-
- <h3 id="determine-adk">Determine the connected device's accessory mode support</h3>
-
- <p>When a device is connected to the ADK board, it can already be in accessory mode, support
- accessory mode and is not in that mode, or does not support accessory mode. The
- <code>AndroidAccessory::isConnected()</code> method checks for these cases and responds
- accordingly when the <code>loop()</code> function calls it. This function first checks to see if
- the device that is connected hasn't already been handled. If not, it gets the connected device's
- device descriptor to figure out if the device is already in accessory mode by calling
- <code>AndroidAccessory::isAccessoryDevice()</code>. This method checks the vendor and product ID
- of the device descriptor. A device in accessory mode has a vendor ID of 0x18D1 and a product ID
- of 0x2D00 or 0x2D01. If the device is in accessory mode, then the ADK board can <a href=
- "#establish">establish communication with the device</a>. If not, the board <a href=
- "#start">attempts to start the device in accessory mode</a>.</p>
- <pre>
-bool AndroidAccessory::isConnected(void)
-{
- USB_DEVICE_DESCRIPTOR *devDesc = (USB_DEVICE_DESCRIPTOR *) descBuff;
- byte err;
-
- max.Task();
- usb.Task();
-
- if (!connected &&
- usb.getUsbTaskState() >= USB_STATE_CONFIGURING &&
- usb.getUsbTaskState() != USB_STATE_RUNNING) {
- Serial.print("\nDevice addressed... ");
- Serial.print("Requesting device descriptor.");
-
- err = usb.getDevDescr(1, 0, 0x12, (char *) devDesc);
- if (err) {
- Serial.print("\nDevice descriptor cannot be retrieved. Program Halted\n");
- while(1);
- }
-
- if (isAccessoryDevice(devDesc)) {
- Serial.print("found android accessory device\n");
-
- connected = configureAndroid();
- } else {
- Serial.print("found possible device. switching to serial mode\n");
- switchDevice(1);
- }
- } else if (usb.getUsbTaskState() == USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE) {
- connected = false;
- }
-
- return connected;
-}
-</pre>
-
- <h3 id="start-adk">Attempt to start the device in accessory mode</h3>
-
- <p>If the device is not already in accessory mode, then the ADK board must determine whether or
- not it supports it by sending control request 51 to check the version of the USB accessory
- protocol that the device supports (see <code>AndroidAccessory::getProtocol()</code>). Protocol
- version 1 is supported by Android 2.3.4 (API Level 10) and higher. Protocol version 2 is
- supported by Android 4.1 (API Level 16) and higher. Versions greater than 2 may supported in
- the future.
- If the appropriate protocol version is returned, the board sends control request 52 (one
- for each string with <code>AndroidAcessory:sendString()</code>) to send it's identifying
- information, and tries to start the device in accessory mode with control request 53. The
- <code>AndroidAccessory::switchDevice()</code> method takes care of this:</p>
- <pre>
-bool AndroidAccessory::switchDevice(byte addr)
-{
- int protocol = getProtocol(addr);
- if (protocol >= 1) {
- Serial.print("device supports protocol 1\n");
- } else {
- Serial.print("could not read device protocol version\n");
- return false;
- }
-
- sendString(addr, ACCESSORY_STRING_MANUFACTURER, manufacturer);
- sendString(addr, ACCESSORY_STRING_MODEL, model);
- sendString(addr, ACCESSORY_STRING_DESCRIPTION, description);
- sendString(addr, ACCESSORY_STRING_VERSION, version);
- sendString(addr, ACCESSORY_STRING_URI, uri);
- sendString(addr, ACCESSORY_STRING_SERIAL, serial);
-
- usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR | USB_SETUP_RECIPIENT_DEVICE,
- ACCESSORY_START, 0, 0, 0, 0, NULL);
- return true;
-}
-</pre>If this method returns false, the board waits until a new device is connected. If it is
-successful, the device displays itself on the USB bus as being in accessory mode when the ADK board
-re-enumerates the bus. When the device is in accessory mode, the accessory then <a href=
-"#establish-adk">establishes communication with the device</a>.
-
- <h3 id="establish-adk">Establish communication with the device</h3>
-
- <p>If a device is detected as being in accessory mode, the accessory must find the proper bulk
- endpoints and set up communication with the device. When the ADK board detects an Android-powered
- device in accessory mode, it calls the <code>AndroidAccessory::configureAndroid()</code>
- function:</p>
- <pre>
-...
-if (isAccessoryDevice(devDesc)) {
- Serial.print("found android acessory device\n");
-
- connected = configureAndroid();
- }
-...
-</pre>
-
- <p>which in turn calls the <code>findEndpoints()</code> function:</p>
- <pre>
-...
-bool AndroidAccessory::configureAndroid(void)
-{
- byte err;
- EP_RECORD inEp, outEp;
-
- if (!findEndpoints(1, &inEp, &outEp))
- return false;
-...
-</pre>
-
- <p>The <code>AndroidAccessory::findEndpoints()</code> function queries the Android-powered
- device's configuration descriptor and finds the bulk data endpoints in which to communicate with
- the USB device. To do this, it first gets the device's first four bytes of the configuration
- descriptor (only need descBuff[2] and descBuff[3]), which contains the information about the
- total length of data returned by getting the descriptor. This data is used to determine whether
- or not the descriptor can fit in the descriptor buffer. This descriptor also contains information
- about all the interfaces and endpoint descriptors. If the descriptor is of appropriate size, the
- method reads the entire configuration descriptor and fills the entire descriptor buffer with this
- device's configuration descriptor. If for some reason the descriptor is no longer attainable, an
- error is returned.</p>
- <pre>
-...
-
-bool AndroidAccessory::findEndpoints(byte addr, EP_RECORD *inEp, EP_RECORD *outEp)
-{
- int len;
- byte err;
- uint8_t *p;
-
- err = usb.getConfDescr(addr, 0, 4, 0, (char *)descBuff);
- if (err) {
- Serial.print("Can't get config descriptor length\n");
- return false;
- }
-
-
- len = descBuff[2] | ((int)descBuff[3] << 8);
- if (len > sizeof(descBuff)) {
- Serial.print("config descriptor too large\n");
- /* might want to truncate here */
- return false;
- }
-
- err = usb.getConfDescr(addr, 0, len, 0, (char *)descBuff);
- if (err) {
- Serial.print("Can't get config descriptor\n");
- return false;
- }
-
-...
-</pre>
-
- <p>Once the descriptor is in memory, a pointer is assigned to the first position of the buffer
- and is used to index the buffer for reading. There are two endpoint pointers (input and output)
- that are passed into <code>AndroidAccessory::findEndpoints()</code> and their addresses are set
- to 0, because the code hasn't found any suitable bulk endpoints yet. A loop reads the buffer,
- parsing each configuration, interface, or endpoint descriptor. For each descriptor, Position 0
- always contains the size of the descriptor in bytes and position 1 always contains the descriptor
- type. Using these two values, the loop skips any configuration and interface descriptors and
- increments the buffer with the <code>descLen</code> variable to get to the next descriptor.</p>
-
- <p class="note"><strong>Note:</strong> An Android-powered device in accessory mode can
- potentially have two interfaces, one for the default communication to the device and the other
- for ADB communication. The default communication interface is always indexed first, so finding
- the first input and output bulk endpoints will return the default communication endpoints, which
- is what the <code>demokit.pde</code> sketch does. If you are writing your own firmware, the logic
- to find the appropriate endpoints for your accessory might be different.</p>
-
- <p>When it finds the first input and output endpoint descriptors, it sets the endpoint pointers
- to those addresses. If the findEndpoints() function finds both an input and output endpoint, it
- returns true. It ignores any other endpoints that it finds (the endpoints for the ADB interface,
- if present).</p>
- <pre>
-...
- p = descBuff;
- inEp->epAddr = 0;
- outEp->epAddr = 0;
- while (p < (descBuff + len)){
- uint8_t descLen = p[0];
- uint8_t descType = p[1];
- USB_ENDPOINT_DESCRIPTOR *epDesc;
- EP_RECORD *ep;
-
- switch (descType) {
- case USB_DESCRIPTOR_CONFIGURATION:
- Serial.print("config desc\n");
- break;
-
- case USB_DESCRIPTOR_INTERFACE:
- Serial.print("interface desc\n");
- break;
-
- case USB_DESCRIPTOR_ENDPOINT:
- epDesc = (USB_ENDPOINT_DESCRIPTOR *)p;
- if (!inEp->epAddr && (epDesc->bEndpointAddress & 0x80))
- ep = inEp;
- else if (!outEp->epAddr)
- ep = outEp;
- else
- ep = NULL;
-
- if (ep) {
- ep->epAddr = epDesc->bEndpointAddress & 0x7f;
- ep->Attr = epDesc->bmAttributes;
- ep->MaxPktSize = epDesc->wMaxPacketSize;
- ep->sndToggle = bmSNDTOG0;
- ep->rcvToggle = bmRCVTOG0;
- }
- break;
-
- default:
- Serial.print("unkown desc type ");
- Serial.println( descType, HEX);
- break;
- }
-
- p += descLen;
- }
-
- if (!(inEp->epAddr && outEp->epAddr))
- Serial.println("can't find accessory endpoints");
-
- return inEp->epAddr && outEp->epAddr;
-}
-
-...
-</pre>
-
- <p>Back in the <code>configureAndroid()</code> function, if there were endpoints found, they are
- appropriately set up for communication. The device's configuration is set to 1 and the state of
- the device is set to "running", which signifies that the device is properly set up to communicate
- with your USB accessory. Setting this status prevents the device from being re-detected and
- re-configured in the <code>AndroidAccessory::isConnected()</code> function.</p>
- <pre>
-bool AndroidAccessory::configureAndroid(void)
-{
- byte err;
- EP_RECORD inEp, outEp;
-
- if (!findEndpoints(1, &inEp, &outEp))
- return false;
-
- memset(&epRecord, 0x0, sizeof(epRecord));
-
- epRecord[inEp.epAddr] = inEp;
- if (outEp.epAddr != inEp.epAddr)
- epRecord[outEp.epAddr] = outEp;
-
- in = inEp.epAddr;
- out = outEp.epAddr;
-
- Serial.print("inEp: ");
- Serial.println(inEp.epAddr, HEX);
- Serial.print("outEp: ");
- Serial.println(outEp.epAddr, HEX);
-
- epRecord[0] = *(usb.getDevTableEntry(0,0));
- usb.setDevTableEntry(1, epRecord);
-
- err = usb.setConf( 1, 0, 1 );
- if (err) {
- Serial.print("Can't set config to 1\n");
- return false;
- }
-
- usb.setUsbTaskState( USB_STATE_RUNNING );
-
- return true;
-}
-</pre>
-
- <p>Lastly, methods to read and write to the appropriate endpoints are needed. The
- <code>demokit.pde</code> sketch calls these methods depending on the data that is read from the
- Android-powered device or sent by the ADK board. For instance, moving the joystick on the ADK
- shield writes data that is read by the DemoKit application running on the Android-powered device.
- Moving sliders on the DemoKit application is read by the <code>demokit.pde</code> sketch and
- changes the state of the accessory, such as lighting up or changing the color of the LED
- lights.</p>
- <pre>
-int AndroidAccessory::read(void *buff, int len, unsigned int nakLimit) {
- return usb.newInTransfer(1, in, len, (char *)buff, nakLimit); }
-
-int AndroidAccessory::write(void *buff, int len) {
- usb.outTransfer(1, out, len, (char *)buff);
- return len; }
-</pre>
-
- <p>See the <code>demokit.pde</code> sketch for information about how the ADK board
- reads and writes data.</p>
diff --git a/docs/html/tools/adk/adk2.jd b/docs/html/tools/adk/adk2.jd
deleted file mode 100644
index 052ec48..0000000
--- a/docs/html/tools/adk/adk2.jd
+++ /dev/null
@@ -1,652 +0,0 @@
-page.title=Accessory Development Kit 2012 Guide
-page.tags=adk
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#components">Components</a></li>
- <li><a href="#clock">Using the Alarm Clock</a></li>
- <li><a href="#play-audio">Playing Audio</a></li>
- <li><a href="#dev">Developing Accessories with ADK 2012</a>
- <ol>
- <li><a href="#src-download">Downloading the ADK Source</a></li>
- <li><a href="#dev-setup">Setting Up the Development Environment</a></li>
- <li><a href="#alt-build">Using the ADK Alternative Build System</a></li>
- </ol>
- </li>
- <li><a href="#adk-conn">How the ADK Connects with Android Devices</a>
- <ol>
- <li><a href="#adk-conn-bt">ADK Connection over Bluetooth</a></li>
- <li><a href="#adk-conn-usb">ADK Connection over USB</a></li>
- </ol>
- </li>
- <li><a href="#audio-dock">USB Audio Dock Implementation</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="https://developers.google.com/events/io/sessions/gooio2012/128/">
- Google I/O Session Video</a></li>
- <li><a href="http://source.android.com/tech/accessories/aoap/aoa.html">
- Android Open Accessory Protocol</a></li>
- <li><a href="http://source.android.com/tech/accessories/aoap/aoa2.html">
- Android Open Accessory Protocol 2.0</a></li>
- <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">
- USB Accessory Dev Guide</a></li>
- </ol>
- </div>
-</div>
-
-<p>The Android Accessory Development Kit (ADK) for 2012 is the latest reference implementation of an
-<a href="http://source.android.com/tech/accessories/index.html">Android Open Accessory</a> device,
-designed to help Android hardware accessory builders and software developers create accessories
-for Android. The ADK 2012 is based on the <a href="http://arduino.cc">Arduino</a> open source
-electronics prototyping platform, with some hardware and software extensions that allow it to
-communicate with Android devices.</p>
-
-<p>A limited number of these kits were produced and distributed at the Google I/O 2012 developer
-conference. If you did not receive one of these kits, fear not! The specifications and design files
-for the hardware were also released for use by manufacturers and hobbyists. You should expect to see
-kits with similar features available for purchase, or you can build one yourself!</p>
-
-<p>One of the important new features demonstrated by this ADK is the ability to play audio over a
-USB connection. Be sure to check out the <a href="#audio-dock">reference implementation</a> of a USB
-audio dock in this ADK if you are interested in making audio-related USB accessories for
-Android.</p>
-
-<h2 id="components">Components</h2>
-
-<p>The ADK 2012 is based on the Arduino open source electronics prototyping platform and is an open
-hardware design. The hardware design files and firmware source code are included with the ADK
-software download. The ADK contains two main physical hardware components:</p>
-
-<ol>
- <li>Main processing board containing the microprocessor, USB connections, power connector and
-input/output pins. This board can be removed and used separately from the rest of the hardware.</li>
- <li>Shield containing sensors, LEDs, input controls, audio amplifier and speaker output, contained
-in a custom, polygon box enclosure.</li>
-</ol>
-
-<p>The main hardware features of the ADK are as follows:</p>
-
-<ul>
- <li>An ARM 32-bit Cortex M3 micro-processor</li>
- <li>Separate USB connections for an Android device and computer connection for programming and
-debugging</li>
- <li>Sensors for light, color, proximity, temperature, humidity, barometric pressure, and
-acceleration</li>
- <li>Micro SD Card slot</li>
- <li>Bluetooth support</li>
-</ul>
-
-<p>The ADK comes preloaded with an alarm clock firmware program that you can use immediately. A
-companion Android application, <a
-href="https://play.google.com/store/apps/details?id=com.google.android.apps.adk2">ADK 2012</a>, is
-available on Google Play. The source code for both the Android application and the ADK firmware (an
-Arduino sketch) can be downloaded from this page.</p>
-
-<p>The ADK 2012 also comes with additional parts to help you develop accessories with it,
-including:</p>
-
-<ul>
- <li>AC power adapter</li>
- <li>USB A to Micro USB B connector cable</li>
- <li>Micro USB B to Micro USB AB connector (small, rectangular plug)</li>
- <li>Micro SD Card, preinstalled in the ADK SD Card socket</li>
-</ul>
-
-<h2 id="clock">Using the Alarm Clock</h2>
-
-<p>An alarm clock program comes preloaded on the ADK. This firmware program allows you to use the
-ADK as an alarm clock.</p>
-
-<p>To use the ADK as an alarm clock:</p>
-
-<ol>
- <li>Open up the ADK by gently squeezing the two widest faces of the enclosure.</li>
- <li>Attach the provided AC power adapter (round connector) to the main ADK board, or attach a USB
-cable to the port marked <strong>Computer</strong> and a USB port on your computer.</li>
- <li>Place and hold your fingertip over the clock symbol on the control face.
- <p class="note"><strong>Note:</strong> You may need to hold your finger in place for 1-2
-seconds.</p>
- </li>
- <li>Use the plus (+) and minus (-) symbols inside the clock digits to set the correct time.</li>
- <li>Place your fingertip over the alarm clock symbol to activate alarm setting.</li>
- <li>Use the plus (+) and minus (-) symbols inside the clock digits to set the alarm time.</li>
- <li>Use the plus (+) and minus (-) symbols inside the last two clock digits to turn the alarm on
-({@code on}) or off ({@code oF}).</li>
- <li>To set the alarm tone, place and hold your fingertip over the alarm clock symbol, then tap the
-slider control on top of the enclosure.</li>
-</ol>
-
-<p>To use the <strong>ADK 2012</strong> companion application for the alarm clock:</p>
-
-<ol>
- <li>Load the companion application on your Android device running Android 3.1 (API Level 12) or
-higher:
- <ul>
- <li>Using an NFC-enabled Android device, unlock and hold the device against the left side of
-the ADK enclosure. Follow the prompts to install the app.
- <br>- or -</li>
- <li>Start Google Play on your device, search for the <strong>ADK 2012</strong> application and
-install it. If you cannot find the app, your device is not compatible. Try installing on another
-device.</li>
- </ul>
- </li>
- <li>Connect your Android device to the ADK using one of the following methods:
- <ul>
- <li id="conn-bt">To connect using Bluetooth:
- <ol>
- <li>Plug the AC power adapter into the ADK.</li>
- <li>On your Android device, turn Bluetooth On (<strong>Settings >
-Bluetooth</strong>).</li>
- <li>In the <strong>Settings</strong> page, press the <strong>Bluetooth</strong> option to
-view paired devices.</li>
- <li>Select <strong>Search for Devices</strong> to locate the ADK 2012 accessory and follow
-the on screen instructions to connect.</li>
- <li>After pairing is complete, start the <strong>ADK 2012</strong> app on your Android
-device.</li>
- <li>On the start screen, select the <strong>Use Bluetooth</strong> button.</li>
- <li>In the list of paired devices, select the <strong>ADK 2012</strong> device.</li>
- <li>The <strong>ADK 2012</strong> app should switch to the menu screen and you can start
-interacting with the ADK accessory.</li>
- </ol>
- </li>
-
- <li id="conn-usb">To connect using USB:
- <ol>
- <li>Plug the AC power adapter into the ADK.</li>
- <li>Connect the Micro USB AB connector (small, rectangular plug) to the port labeled
-<strong>Phone</strong> on the ADK board.</li>
- <li>Unlock your Android device and connect the Micro USB B connector to your device.
- <p class="note"><strong>Note:</strong> Your device must support Android USB accessory
-mode. Devices that support this mode include Google Nexus devices.</p>
- </li>
- <li>On the Android device, you should see a prompt to connect to the <strong>ADK DemoKit
-2012</strong>, select <strong>OK</strong>.</li>
- <li>The <strong>ADK 2012</strong> app should start automatically and you can start
-interacting with the ADK.</li>
- </ol>
- </li>
- </ul>
- </li>
-</ol>
-
-<p class="note"><strong>Note:</strong> When using the ADK with a USB connection to an Android
-device, make sure the AC power adapter is plugged in. A USB connection to a computer does not
-provide sufficient voltage to power both the ADK and a USB connection to a device.</p>
-
-
-<h2 id="play-audio">Playing Audio</h2>
-
-<p>The ADK 2012 comes with audio output capabilities, including an amplifier and speaker. You can
-use it to play audio from your Android device using either a Bluetooth or USB connection.</p>
-
-<p>To play audio over Bluetooth:</p>
-
-<ol>
- <li>Follow the instructions in the <a href="#conn-bt">previous section</a> to connect your Android
-device to the ADK over Bluetooth.</li>
- <li>On your Android device, navigate to the <strong>Settings > Bluetooth</strong> page to view the
-list of paired devices, and make sure the ADK is connected.</li>
- <li>Select the settings icon next to the <strong>ADK 2012</strong> item.</li>
- <li>Make sure the <strong>Media Audio</strong> option is enabled.</li>
- <li>Navigate to an application that plays music or other audio.</li>
- <li>Play a song or sound and listen to it on the ADK speaker!</li>
-</ol>
-
-<p>To play audio over USB, you must use a device running Android 4.1 (API Level 16) or higher:</p>
-
-<ol>
- <li>Plug the AC power adapter into the ADK.</li>
- <li>Connect the Micro USB AB connector (small, rectangular plug) to the Phone port on the ADK
-board.</li>
- <li>Unlock your Android device and connect the Micro USB B connector to your device.
- <p class="note"><strong>Note:</strong> Your device must support Android USB accessory
-mode. Devices that support this mode include Google Nexus devices.</p>
- </li>
- <li>On the Android device, you should see a prompt to connect to the <strong>ADK DemoKit
-2012</strong>, select <strong>Cancel</strong> and allow the ADK to connect as a media device
-only.</li>
- <li>Navigate to an application that plays music or other audio.</li>
- <li>Play a song or sound and listen to it on the ADK speaker!</li>
-</ol>
-
-<p class="note"><strong>Note:</strong> When using the ADK with a USB connection to an Android
-device, make sure the AC power adapter is plugged in. A USB connection to a computer does not
-provide sufficient voltage to power both the ADK and a USB connection to a device.</p>
-
-
-<h2 id="dev">Developing Accessories with ADK 2012</h2>
-
-<p>The ADK 2012 is a hardware platform and a set of software libraries for prototyping Android
-accessories. This section discusses how to set up a development environment for programming the ADK
-to make it do what you want and to test software for building your own Android accessories.</p>
-
-<h3 id="src-download">Downloading the ADK Source</h3>
-
-<p>The support software and hardware specifications for the ADK 2012 are available from the Android
-source repository. Follow the instructions below to obtain the source material for the ADK.</p>
-
-<p>To download the ADK 2012 software, source code and hardware design specifications.</p>
-
-<ol>
- <li>Download and install <a href="http://git-scm.com/download">Git</a> for your development
-system.</li>
- <li>Download and setup the {@code repo} tool, as described on the <a
-href="http://source.android.com/source/downloading.html#installing-repo">Android open source
-project</a> site.
- <p class="note"><strong>Note:</strong> Developers using Windows must use a Linux compatibility
-package, such as <a href="http://www.cygwin.com/">cygwin</a>, to install and run {@code repo}.
-Within your compatibility environment, you must install {@code curl}, {@code git} and {@code
-python} to be able to download and use the {@code repo} tool.</p>
- </li>
- <li>In a terminal window, create a new directory for the downloaded source files, initialize and
-synchronize a local repository:
-<pre>
-$> mkdir android-accessories
-$> cd android-accessories
-$> repo init -u https://android.googlesource.com/accessories/manifest
-$> repo sync
-</pre>
- </li>
-</ol>
-
-<p>After successfully completing this process, you should have the source code and tools for
-working with the ADK 2012:</p>
-
-<ul>
- <li>{@code adk2012/board} - Source code and hardware design files for the ADK 2012</li>
- <li>{@code adk2012/app} - Source code for the ADK 2012 Android companion application</li>
- <li>{@code external/ide} - Source code for the ADK 2012 Integrated Development Environment
-(IDE)</li>
- <li>{@code external/toolchain} - The toolchain used by the ADK 2012 IDE</li>
-</ul>
-
-
-<h3 id="dev-setup">Setting Up the Development Environment</h3>
-
-<p>The ADK 2012 comes with an integrated development environment (IDE) that you use to develop
-software and program the ADK 2012 accessory. The following instructions explain how to setup and run
-the ADK 2012 IDE.</p>
-
-<p>To set up and run the ADK 2012 IDE:</p>
-
-<ol>
- <li>Download and install the Java Development Kit 6 or higher from <a
- href="http://java.oracle.com">java.oracle.com</a>.</li>
- <li>Download the ADK 2012 IDE for your development platform:
- <ul>
- <li><a href="https://dl-ssl.google.com/android/adk/adk2012_ide-win32-20120629.zip">
- Windows</a></li>
- <li><a href="https://dl-ssl.google.com/android/adk/adk2012_ide-macosx-20120626.zip">
- Mac</a></li>
- <li>Linux
- <a href="https://dl-ssl.google.com/android/adk/adk2012_ide-linux32-20120626.tgz">32bit</a>,
- <a href="https://dl-ssl.google.com/android/adk/adk2012_ide-linux64-20120626.tgz">64bit</a>
- </li>
- </ul>
- </li>
- <li>Unpack the downloaded archive.</li>
- <li>Run the application by navigating to the unpacked {@code ADK2012_IDE/} folder and execute
- the {@code arduino} file.</li>
-</ol>
-
-<p>After you have successfully installed and run the ADK 2012 IDE, you must configure it to use
-the ADK 2012 library.</p>
-
-<p>To configure the ADK 2012 IDE for use with the ADK libraries:</p>
-
-<ol>
- <li>Start the ADK 2012 IDE and choose <strong>File > Preferences</strong>.</li>
- <li>In the <strong>Preferences</strong> dialog, make a note of the <strong>Sketchbook
-location</strong> directory.</li>
- <li>Copy the {@code <adk-source-download>/adk2012/board/library/ADK2} directory and its
-contents into your {@code sketchbook/libraries/} directory, so that you create a {@code
-sketchbook/libraries/ADK2} directory.</li>
- <li>Stop and restart the <strong>ADK 2012 IDE</strong>.</li>
- <li>In the IDE, choose <strong>File > Examples > ADK2</strong> and then choose one of the example
-sketches:
- <ul>
- <li><strong>clock</strong> - The sketch that is preloaded onto the ADK 2012.</li>
- <li><strong>BluetoothScan</strong> - An example sketch demonstrating code that connects an
-accessory to an Android device over Bluetooth.</li>
- <li><strong>usbaccessory</strong> - An example sketch demonstrating code that connects an
-accessory to an Android device through a USB cable.</li>
- </ul>
- </li>
- <li>Connect a Micro USB cable from the <strong>Computer</strong> port on the ADK board to your
-development computer.</li>
- <li>In the <strong>ADK 2012 IDE</strong>, establish a serial port connection with the ADK by
-selecting <strong>Tools > Serial Port</strong> and selecting the serial port for the ADK.</li>
- <li>In the <strong>ADK 2012 IDE</strong>, choose the ADK by selecting<strong>Tools > Board >
-Google ADK2</strong>.</li>
- <li>Modify an example sketch or create your own.</li>
- <li>Upload the sketch to the ADK by choosing <strong>File > Upload</strong>. When the <strong>ADK
-2012 IDE</strong> reports <strong>Done uploading</strong>, the sketch is uploaded and the ADK is
-ready to communicate with your Android device.</li>
-</ol>
-
-<h3 id="alt-build">Using the ADK Alternative Build System</h3>
-
-<p>An alternative, make file-based build and upload system is also available for the ADK 2012. This
-system is command line based and intended for production environments where using an IDE environment
-to load software onto accessory hardware may be inconvenient or undesirable.</p>
-
-<p>To setup the environment:</p>
-<ol>
- <li><a href="#src-download">Download</a> the ADK 2012 source code files.</li>
- <li>In a terminal window, navigate to {@code
-<adk-source-download>/adk2012/board/MakefileBasedBuild}.</li>
- <li>Execute the following command and follow the instructions:
- <pre>$> ./setup</pre>
- </li>
-</ol>
-
-<p>To build a program for your accessory:</p>
-<ol>
- <li>Place your accessory code in the {@code MakefileBasedBuild/app} directory, including all
-required library files. See the {@code app/main.c} file for an example of the program format.</li>
- <li>Execute the following command and follow the instructions:
- <pre>$> ./build</pre>
- </li>
-</ol>
-
-<p>To load the program on your accessory hardware:</p>
-<ol>
- <li>Run the build process above and make sure your program compiled successfully.</li>
- <li>Attach the accessory via USB cable to your development computer.</li>
- <li>Check which port the accessory is attached to and modify the {@code UART} variable in the
-{@code flash} script to the correct port address. On linux machines, the port address is typically
-{@code /dev/ttyUSB0}.</li>
- <li>Execute the following command to load the program on the accessory:
- <pre>$> ./flash</pre></li>
-</ol>
-
-<h2 id="adk-conn">How the ADK Connects with Android Devices</h2>
-
-<p>The essential feature of any Android accessory is its ability to connect and communicate with an
-Android device. Creating a fast and reliable connection between your accessory and Android devices
-is the first order of business when building software for an accessory. This section describes the
-connection and communication essentials used in the ADK 2012 so that you can apply them to
-developing your own Android accessories.</p>
-
-<h3 id="adk-conn-bt">ADK Connection over Bluetooth</h3>
-
-<p>The ADK 2012 app and hardware accessory use a Bluetooth Serial Port Profile (SPP) connection to
-communicate. This connection allows two way communication between the ADK accessory and Android
-devices.</p>
-
-<p class="note"><strong>Note:</strong> The implementation of the ADK hardware allows the use of
-other profiles and multiple connections. However, the basic communication between the ADK 2012
-accessory and the Android application uses SPP.</p>
-
-<h4 id="acc-bt-code">Accessory Bluetooth Code</h4>
-
-<p>In order to enable Bluetooth communications, the {@code clock.ino} sketch for the ADK 2012
-accessory calls a {@code btStart()} method during the {@code setup()} method to enable radio
-frequency communications and start listening for Bluetooth connections:</p>
-
-<pre>
-ADK L;
-void setup() {
- L.adkInit();
- L.btStart();
-}
-...
-void btStart(){
- uint8_t i, dlci;
- int f;
-
- L.btEnable(adkBtConnectionRequest, adkBtLinkKeyRequest, adkBtLinkKeyCreated,
- adkBtPinRequest, NULL);
-
- dlci = L.btRfcommReserveDlci(RFCOMM_DLCI_NEED_EVEN);
-
- if(!dlci) dbgPrintf("BTADK: failed to allocate DLCI\n");
- else{
-
- //change descriptor to be valid...
- for(i = 0, f = -1; i < sizeof(sdpDescrADK); i++){
-
- if(sdpDescrADK[i] == MAGIX){
- if(f == -1) f = i;
- else break;
- }
- }
-
- if(i != sizeof(sdpDescrADK) || f == -1){
-
- dbgPrintf("BTADK: failed to find a single marker in descriptor\n");
- L.btRfcommReleaseDlci(dlci);
- return;
- }
-
- sdpDescrADK[f] = dlci >> 1;
-
- dbgPrintf("BTADK has DLCI %u\n", dlci);
-
- L.btRfcommRegisterPort(dlci, btAdkPortOpen, btAdkPortClose, btAdkPortRx);
- L.btSdpServiceDescriptorAdd(sdpDescrADK, sizeof(sdpDescrADK));
- }
-}
-</pre>
-
-<p>Notice that the {@code sdpDescrADK} object contains a Universally Unique Identifier (UUID) in the
-variable {@code BT_ADK_UUID}. This identifier <em>must match</em> the device UUID provided in the
-{@link android.bluetooth.BluetoothSocket} connection request in the Android application code.</p>
-
-<p>Once Bluetooth is enabled with the code shown above, the accessory listens for connection
-requests. The ADK library handles listening and connection details, so the accessory calls
-{@code ADK::adkEventProcess()} once during each loop execution:</p>
-
-<pre>
-void loop(void)
-{
- ...
- L.adkEventProcess(); //let the adk framework do its thing
- ...
-}
-</pre>
-
-<p>If a Bluetooth connection has been established, any commands are routed to the
-{@code btAdkPortRx()} callback method (which was registered with the ADK library as part of the
-{@code btStart()} method) and processed accordingly. The ADK accessory sends messages back through
-the Bluetooth connection using the {@code ADK::btRfcommPortTx()} method.
-For more details, review the implementations of these methods in the {@code clock.ino} sketch.</p>
-
-<h4 id="app-bt-code">Android App Bluetooth Code</h4>
-
-<p>In the ADK 2012 Android app, the code for handling Bluetooth connections is encapsulated in in a
-{@code BTConnection} class. In this class, the application requests access to the Bluetooth adapter
-and negotiates a connection with the ADK 2012 accessory. Here is a summary of the relevant code:</p>
-
-<pre>
-mAdapter = BluetoothAdapter.getDefaultAdapter();
-BluetoothDevice device = mAdapter.getRemoteDevice(address);
-mSocket = device.createInsecureRfcommSocketToServiceRecord(ADK_UUID);
-mSocket.connect();
-</pre>
-
-<p>Note the {@code ADK_UUID} parameter in the second line. This identifier must match the identifier
-output by the accessory (the {@code BT_ADK_UUID} variable mentioned earlier), otherwise the protocol
-negotiation fails and the {@link android.bluetooth.BluetoothSocket} is not created. Once a
-connection is established, you obtain {@link java.io.InputStream} and {@link java.io.OutputStream}
-objects from the socket to communicate with the accessory:</p>
-
-<pre>
-mInStream = mSocket.getInputStream();
-mOutStream = mSocket.getOutputStream();
-</pre>
-
-<p>Review the {@code BTConnection.java} file provided in the ADK 2012 software download for more
-implementation details.</p>
-
-<h3 id="adk-conn-usb">ADK Connection over USB</h3>
-
-<p>The ADK 2012 app and hardware accessory can also use a USB connection to communicate, similar to
-the original ADK.</p>
-
-<h4 id="acc-usb-code">Accessory USB Code</h4>
-
-<p>The ADK library takes care of most of the implementation details for a USB connection, the
-accessory code must make a few calls to initialize USB connectivity, including setting the accessory
-identification strings:</p>
-
-<pre>
-ADK L;
-void setup() {
- L.adkInit();
- L.usbSetAccessoryStringVendor(...);
- L.usbSetAccessoryStringName(...);
- L.usbSetAccessoryStringLongname(...);
- L.usbSetAccessoryStringVersion(...);
- L.usbSetAccessoryStringUrl(...);
- L.usbSetAccessoryStringSerial(...);
-
- L.usbStart();
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> The identification strings must match the USB accessory
-filter settings specified in the connecting Android application,otherwise the application cannot
-connect with the accessory.</p>
-
-<p>Once USB is enabled with code shown above, the accessory listens for connection requests. The ADK
-library handles listening and connection details, so the accessory calls {@code
-ADK::adkEventProcess()} once during each loop execution:</p>
-
-<pre>
-void loop(void)
-{
- ...
- L.adkEventProcess(); //let the adk framework do its thing
- ...
-}
-</pre>
-
-<p>The accessory must then check for a live USB connection to process commands and send
-messages. Here is a summary of the relevant code:</p>
-
-<pre>
-void loop() {
- if (L.accessoryConnected()) {
- int recvLen = L.accessoryReceive(msg, sizeof(msg));
- if (recvLen > 0) {
- ... // process message
- }
-
- L.accessorySend(outmsg, outmsgLen);
- }
- L.adkEventProcess();
-}
-</pre>
-
-<p>For more details, review the implementations of these methods in the {@code clock.ino}
-sketch.</p>
-
-<h4 id="app-usb-code">Android App USB Code</h4>
-
-<p>In the ADK 2012 Android app, the code for handling USB connections is encapsulated in a
-{@code UsbConnection} class. This class sets up a {@link android.content.BroadcastReceiver} to
-listen for USB events and then attempts to connect when a matching connection event is received.
-Here is a summary of the relevant code:</p>
-
-<pre>
-import com.android.future.usb.UsbAccessory;
-import com.android.future.usb.UsbManager;
-
-mUSBManager = UsbManager.getInstance(this);
-UsbAccessory acc = mUSBManager.getAccessoryList()[0];
-
-if (!mUSBManager.hasPermission(acc)) return;
-</pre>
-
-<p>The ADK 2012 app uses the support library to implement the USB accessory connections, in order to
-support devices running Android 2.3.4 (API Level 10). If you only need to support Android
-3.1 (API Level 12) and higher devices, you can replace the first 4 lines the following code:</p>
-
-<pre>
-import android.hardware.usb.UsbAccessory
-import android.hardware.usb.UsbManager
-
-mUSBManager = (UsbManager) getSystemService(Context.USB_SERVICE);
-UsbAccessory acc = (UsbAccessory)
- intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
-</pre>
-
-<p>Note that the app only receives events when the USB accessory identification information matches
-the information in the {@code res/xml/usb_accessory_filter.xml} file, referenced by the
-application’s manifest statement:</p>
-
-<pre>
-<meta-data
- android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
- android:resource="@xml/usb_accessory_filter" />
-</pre>
-
-<p>Connections from other USB devices are not received by the ADK 2012 accessory.</p>
-
-<p>Once the connection is established, the app can communicate with the accessory through file input
-and output streams, as shown in the following example code:</p>
-
-<pre>
-ParcelFileDescriptor mFD = mUSBManager.openAccessory(acc);
-if (mFD != null) {
- FileDescripter fd = mFD.getFileDescriptor();
- mIS = new FileInputStream(fd); // use this to receive messages
- mOS = new FileOutputStream(fd); // use this to send commands
-}
-</pre>
-
-<p>Review the {@code UsbConnection.java} file provided in the ADK 2012 source code for more
-implementation details.</p>
-
-<h2 id="audio-dock">USB Audio Dock Implementation</h2>
-
-<p>One of the important new features introduced with the ADK 2012 is the ability to play audio over
-a USB connection. This innovation was introduced as an update to Android Open Accessory (AOA)
-<a href="http://source.android.com/tech/accessories/aoap/aoa2.html">protocol 2.0</a> and is
-available on devices running Android 4.1 (API Level 16) and higher.</p>
-
-<p>The ADK 2012 provides a reference implementation of this functionality for accessory developers.
-No software application is required to be installed on the connected Android device, accessory
-developers only need to support AOA v2. This implementation demonstrates audio output of 16bit,
-44.1kHz stereo PCM source data compressed into a single channel due to the audio hardware available
-on the accessory.</p>
-
-<p>Using the audio output features provided by the ADK library requires only a few function calls.
-The first few calls are in the accessory {@code setup()} routine, which prepare the accessory for
-USB connections and audio output, as summarized in the code example below:</p>
-
-<pre>
-ADK L;
-void setup() {
- L.audioInit();
- L.usbh_init()
- L.usbStart();
-}
-</pre>
-
-<p>For more information about the {@code ADK::audioInit()} function, see the {@code
-libraries/ADK/Audio.c} library file. For more information about the {@code ADK::usbh_init()}
-function, see the {@code libraries/ADK/Usbh.c} library file.</p>
-
-<p>After completing this setup, the {@code loop()} function calls {@code ADK::adkEventProcess()} to
-handle audio output and other ADK functions:</p>
-
-<pre>
-void loop(void)
-{
- ...
- L.adkEventProcess(); //let the adk framework do its thing
- ...
-}
-</pre>
-
-<p>This call executes task queuing for the ADK and as part of the execution process, the task queue
-executes {@code usbh_work()} in {@code libraries/ADK/Usbh.c}, which handles audio output requests.
-Review the implementation of this function for details. For additional implementation details on
-audio output, see the {@code libraries/ADK/accessory.c} library file.</p>
diff --git a/docs/html/tools/adk/index.jd b/docs/html/tools/adk/index.jd
deleted file mode 100644
index e08748fc..0000000
--- a/docs/html/tools/adk/index.jd
+++ /dev/null
@@ -1,30 +0,0 @@
-page.title=Accessory Development Kit
-page.tags=adk
-@jd:body
-
-<p>The Accessory Development Kit (ADK) is a reference implementation for hardware manufacturers and
-hobbyists to use as a starting point for building accessories for Android. Each ADK release is
-provided with source code and hardware specifications to make the process of developing your own
-accessories easier. Creating new and alternative hardware based on the ADK is encouraged!</p>
-
-<p>Android accessories can be audio docking stations, exercise machines, personal medical testing
-devices, weather stations, or any other external hardware device that adds to the functionality of
-Android.</p>
-
-<p>Accessories use the Android Open Accessory (AOA) protocol to communicate with Android
-devices, over a USB cable or through a Bluetooth connection. If you are building an accessory that
-uses USB, make sure you understand how to implement the AOA protocol to establish communication
-between your accessory hardware and Android. For more information, see the
-<a href="http://source.android.com/tech/accessories/index.html">Android Open Acessory protocol</a>.
-</p>
-
-<p>The following sections provide more information about the Android Accessory Development Kits, how
-to use them, and how to get started building your own accessories for Android.</p>
-
-<dl>
- <dt><a href="adk2.html">ADK 2012 Guide</a></dt>
- <dd>Guide to getting started with the ADK released at Google I/O 2012.</dd>
-
- <dt><a href="adk.html">ADK 2011 Guide</a></dt>
- <dd>Guide to getting started with the original ADK, released at Google I/O 2011.</dd>
-</dl>
diff --git a/docs/html/tools/building/building-cmdline.jd b/docs/html/tools/building/building-cmdline.jd
deleted file mode 100644
index 2e2619b..0000000
--- a/docs/html/tools/building/building-cmdline.jd
+++ /dev/null
@@ -1,364 +0,0 @@
-page.title=Building and Running from the Command Line
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#DebugMode">Building in Debug Mode</a></li>
- <li><a href="#ReleaseMode">Building in Release Mode</a>
- <ol>
- <li><a href="#ManualReleaseMode">Build unsigned</a></li>
- <li><a href="#AutoReleaseMode">Build signed and aligned</a></li>
- <li><a href="#OnceBuilt">Once built and signed in release mode</a></li>
- </ol>
- </li>
- <li><a href="#RunningOnEmulator">Running on the Emulator</a></li>
- <li><a href="#RunningOnDevice">Running on a Device</a></li>
- <li><a href="#Signing">Application Signing</a></li>
- <li><a href="#PluginReference">Plugin Language Reference</a></li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/installing/studio-build.html">
- Build System</a></li>
- <li><a href="{@docRoot}tools/devices/managing-avds-cmdline.html">
- Managing AVDs from the Command Line</a></li>
- <li><a href="{@docRoot}tools/devices/emulator.html">
- Using the Android Emulator</a></li>
- <li><a href="{@docRoot}tools/publishing/app-signing.html">
- Signing Your Applications</a></li>
- </ol>
- </div>
- </div>
-
- <p>By default, there are two build types to build your application using the Gradle build settings:
- one for debugging your application — <em>debug</em> — and one for building your
- final package for release — <em>release mode</em>. Regardless of which build type
- your modules use, the app must be signed before it can install on an emulator or device—with
- a debug key when building in debug mode and with your own private key when building in release mode.</p>
-
- <p>Whether you're building with the debug or release build type, you need to run
- and build your module. This will create the .apk file that you can install on an emulator or device.
- When you build using the debug build type, the .apk file is automatically signed by the SDK tools
- with a debug key based on the <code>debuggable true</code> setting in the module's build.gradle file,
- so it's instantly ready for installation onto an emulator or attached
- development device. You cannot distribute an application that is signed with a debug key.
- When you build using the release build type, the .apk file is <em>unsigned</em>, so you
- must manually sign it with your own private key, using Keytool and Jarsigner settings in the
- module's <code>build.gradle</code> file.</p>
-
- <p>It's important that you read and understand <a href=
- "{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>, particularly once
- you're ready to release your application and share it with end-users. That document describes the
- procedure for generating a private key and then using it to sign your APK file. If you're just
- getting started, however, you can quickly run your applications on an emulator or your own
- development device by building in debug mode.</p>
-
- <p>If you don't have <a href="http://www.gradle.org/">Gradle</a>, you can obtain it from the <a href="http://gradle.org/">Gradle
- home page</a>. Install it and make sure it is in your executable PATH. Before calling Gradle, you
- need to declare the JAVA_HOME environment variable to specify the path to where the JDK is
- installed.</p>
-
- <p class="note"><strong>Note:</strong> When using <code>ant</code> and installing JDK on Windows,
- the default is to install in the "Program Files" directory. This location will cause
- <code>ant</code> to fail, because of the space. To fix the problem, you can specify the JAVA_HOME
- variable like this:
- <pre>set JAVA_HOME=c:\Progra~1\Java\<jdkdir></pre>
-
- <p>The easiest solution, however, is to install JDK in a non-space directory, for example:</p>
-
- <pre>c:\java\jdk1.7</pre>
-
- <h2 id="DebugMode">Building in Debug Mode</h2>
-
- <p>For immediate application testing and debugging, you can build your application in debug mode
- and immediately install it on an emulator. In debug mode, the build tools automatically sign your
- application with a debug key and optimize the package with {@code zipalign}.</p>
-
- <p>To build in debug mode, open a command-line and navigate to the root of your project directory.
- Use Gradle to build your project in debug mode, invoke the <code>assembleDebug</code> build task
- using the Gradle wrapper script (<code>gradlew assembleRelease</code>).
-
- <p>This creates your debug <code>.apk</code> file inside the module <code>build/</code>
- directory, named <code><your_module_name>-debug.apk</code>. The file is already signed
- with the debug key and has been aligned with
- <a href="{@docRoot}tools/help/zipalign.html"><code>zipalign</code></a>. </p>
-
- <p>On Windows platforms, type this command:</p>
-
-<pre>
-> gradlew.bat assembleDebug
-</pre>
-
-<p>On Mac OS and Linux platforms, type these commands:</p>
-
-<pre>
-$ chmod +x gradlew
-$ ./gradlew assembleDebug
-</pre>
-
- <p>The first command (<code>chmod</code>) adds the execution permission to the Gradle wrapper
- script and is only necessary the first time you build this project from the command line.</p>
-
- <p>After you build the project, the output APK for the app module is located in
- <code>app/build/outputs/apk/</code>, and the output AAR for any lib modules is located in
- <code>lib/build/outputs/libs/</code>.</p>
-
- <p>To see a list of all available build tasks for your project, type this command:</p>
-
-<pre>
-$ ./gradlew tasks
-</pre>
-
- <p>Each time you change a source file or resource, you must run Gradle again in order to package up
- the latest version of the application.</p>
-
- <p>To install and run your application on an emulator, see the section about <a href=
- "{@docRoot}tools/building/building-studio.html">Running on the Emulator</a>.</p>
-
- <h2 id="ReleaseMode">Building in Release Mode</h2>
-
- <p>When you're ready to release and distribute your application to end-users, you must build your
- application in release mode. Once you have built in release mode, it's a good idea to perform
- additional testing and debugging with the final .apk.</p>
-
- <p>Before you start building your application in release mode, be aware that you must sign the
- resulting application package with your private key, and should then align it using the {@code
- zipalign} tool. There are two approaches to building in release mode: build an unsigned package
- in release mode and then manually sign and align the package, or allow the build script to sign
- and align the package for you.</p>
-
- <h3 id="ManualReleaseMode">Build unsigned</h3>
-
- <p>If you build your application <em>unsigned</em>, then you will need to manually sign and align
- the package.</p>
-
- <p>To build an <em>unsigned</em> .apk in release mode, open a command-line and navigate to the
- root of your module directory. Invoke the <code>assembleRelease</code> build task.</li>
-
- <p>On Windows platforms, type this command:</p>
-
-<pre>
-> gradlew.bat assembleRelease
-</pre>
-
-<p>On Mac OS and Linux platforms, type this command:</p>
-
-<pre>
-$ ./gradlew assembleRelease
-</pre>
-
-
- <p>This creates your Android application .apk file inside the project <code>bin/</code>
- directory, named <code><em><your_module_name></em>-unsigned.apk</code>.</p>
-
- <p class="note"><strong>Note:</strong> The .apk file is <em>unsigned</em> at this point and can't
- be installed until signed with your private key.</p>
-
- <p>Once you have created the unsigned .apk, your next step is to sign the .apk with your private
- key and then align it with {@code zipalign}. To complete this procedure, read <a href=
- "{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
- <p>When your <code>.apk</code> has been signed and aligned, it's ready to be distributed to end-users.
- You should test the final build on different devices or AVDs to ensure that it
- runs properly on different platforms.</p>
-
- <h3 id="AutoReleaseMode">Build signed and aligned</h3>
-
- <p>If you would like, you can configure the Android build script to automatically sign and align
- your application package. To do so, you must provide the path to your keystore and the name of
- your key alias in your modules's build.gradle file. With this information provided,
- the build will prompt you for your keystore and alias password when you build using the release
- build type and produce your final application package, which will be ready for distribution.</p>
-
- <p>To specify your keystore and alias, open the module build.gradle file (found in
- the root of the module directory) and add entries for {@code storeFile}, {@code storePassword},
- {@code keyAlias} and {@code keyPassword}.
- For example:</p>
- <pre>
-storeFile file("myreleasekey.keystore")
-keyAlias "MyReleaseKey"
-</pre>
-
- <p>Save your changes. Now you can build a <em>signed</em> .apk in release mode:</p>
-
- <ol>
- <li>Open a command-line and navigate to the root of your module directory.</li>
-
- <li>Edit the build.gradle file to build your project in release mode:
- <p><pre>
-...
-android {
- ...
- defaultConfig { ... }
- signingConfigs {
- release {
- storeFile file("myreleasekey.keystore")
- storePassword "password"
- keyAlias "MyReleaseKey"
- keyPassword "password"
- }
- }
- buildTypes {
- release {
- ...
- signingConfig signingConfigs.release
- }
- }
-}
-...
-</pre></p>
- </li>
-
- <li>When prompted, enter you keystore and alias passwords.
-
- <p class="caution"><strong>Caution:</strong> As described above, your password will be
- visible on the screen.</p>
- </li>
- </ol>
-
- <p>This creates your Android application .apk file inside the module <code>build/</code>
- directory, named <code><em><your_module_name></em>-release.apk</code>. This .apk file has
- been signed with the private key specified in build.gradle file and aligned with {@code
- zipalign}. It's ready for installation and distribution.</p>
-
- <h3 id="OnceBuilt">Once built and signed in release mode</h3>
-
- <p>Once you have signed your application with a private key, you can install and run it on an
- <a href="#RunningOnEmulator">emulator</a> or <a href="#RunningOnDevice">device</a>. You can
- also try installing it onto a device from a web server. Simply upload the signed .apk to a web
- site, then load the .apk URL in your Android web browser to download the application and begin
- installation. (On your device, be sure you have enabled
- <em>Settings > Applications > Unknown sources</em>.)</p>
-
- <h2 id="RunningOnEmulator">Running on the Emulator</h2>
-
- <p>Before you can run your application on the Android Emulator, you must <a href=
- "{@docRoot}tools/devices/managing-avds.html">create an AVD</a>.</p>
-
- <p>To run your application:</p>
-
- <ol>
- <li>
- <strong>Open the AVD Manager and launch a virtual device</strong>
-
- <p>From your SDK's <code>platform-tools/</code> directory, execute the {@code android} tool
-with the <code>avd</code> options:</p>
- <pre>
-android avd
-</pre>
-
- <p>In the <em>Virtual Devices</em> view, select an AVD and click <strong>Start</strong>.</p>
- </li>
-
- <li>
- <strong>Install your application</strong>
-
- <p>From your SDK's <code>tools/</code> directory, install the {@code .apk} on the
- emulator:</p>
- <pre>
-adb install <em><path_to_your_bin></em>.apk
-</pre>
-
- <p>Your .apk file (signed with either a release or debug key) is in your module {@code build/}
- directory after you build your application.</p>
-
- <p>If there is more than one emulator running, you must specify the emulator upon which to
- install the application, by its serial number, with the <code>-s</code> option. For
- example:</p>
- <pre>
-adb -s emulator-5554 install <em>path/to/your/app</em>.apk
-</pre>
-
- <p>To see a list of available device serial numbers, execute {@code adb devices}.</p>
- </li>
- </ol>
-
- <p>If you don't see your application on the emulator, try closing the emulator and launching the
- virtual device again from the AVD Manager. Sometimes when you install an application for the
- first time, it won't show up in the application launcher or be accessible by other applications.
- This is because the package manager usually examines manifests completely only on emulator
- startup.</p>
-
- <p>Be certain to create multiple AVDs upon which to test your application. You should have one
- AVD for each platform and screen type with which your application is compatible. For instance, if
- your application compiles against the Android 4.0 (API Level 14) platform, you should create an
- AVD for each platform equal to and greater than 4.0 and an AVD for each <a href=
- "{@docRoot}guide/practices/screens_support.html">screen type</a> you support, then test your
- application on each one.</p>
-
- <p class="note"><strong>Tip:</strong> If you have <em>only one</em> emulator running, you can
- build your application and install it on the emulator in one simple step. Navigate to the root of
- your project directory and use Ant to compile the project with <em>install mode</em>: <code>ant
- install</code>. This will build your application, sign it with the debug key, and install it on
- the currently running emulator.</p>
-
- <h2 id="RunningOnDevice">Running on a Device</h2>
-
- <p>Before you can run your application on a device, you must perform some basic setup for your
- device:</p>
-
- <ul>
- <li>Enable <strong>USB debugging</strong> on your device. You can find the option under
- <strong>Settings > Developer options</strong>.
- <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
- options</strong> is hidden by default. To make it available, go
- to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
- seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
- </li>
-
- <li>Ensure that your development computer can detect your device when connected via USB</li>
- </ul>
-
- <p>Read <a href="{@docRoot}tools/device.html#setting-up">Setting up a Device for
- Development</a> for more information.</p>
-
- <p>Once your device is set up and connected via USB, navigate to your SDK's <code>platform-tools/</code>
- directory and install the <code>.apk</code> on the device:</p>
- <pre>
-adb -d install <em>path/to/your/app</em>.apk
-</pre>
-
- <p>The {@code -d} flag specifies that you want to use the attached device (in case you also have
- an emulator running).</p>
-
- <p>For more information on the tools used above, please see the following documents:</p>
-
- <ul>
- <li><a href="{@docRoot}tools/help/android.html">android Tool</a></li>
-
- <li><a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a></li>
-
- <li><a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (ADB)</li>
- </ul>
-
- <h2 id="Signing">Application Signing</h2>
-
- <p>As you begin developing Android applications, understand that all Android applications must be
- digitally signed before the system will install them on an emulator or device. There are two ways
- to do this: with a <em>debug key</em> (for immediate testing on an emulator or development
- device) or with a <em>private key</em> (for application distribution).</p>
-
- <p>The Android build tools help you get started by automatically signing your .apk files with a
- debug key at build time. This means that you can build your application and install it on the
- emulator without having to generate your own private key. However, please note that if you intend
- to publish your application, you <strong>must</strong> sign the application with your own private
- key, rather than the debug key generated by the SDK tools.</p>
-
- <p>Please read <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your
- Applications</a>, which provides a thorough guide to application signing on Android and what it
- means to you as an Android application developer. The document also includes a guide to publishing
- and signing your application.</p>
-
- <h2 id="PluginReference">Android Plugin for Gradle</h2>
-
- <p>The Android build system uses the Android plugin for Gradle to support the Gradle Domain
- Specific Language (DSL) and declarative language elements. See the
- <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for Gradle</a> section for
- a description of the plugin and a link to the complete list of the supported Gradle DSL elements.</p>
-
-
-
diff --git a/docs/html/tools/building/building-studio.jd b/docs/html/tools/building/building-studio.jd
deleted file mode 100644
index 2b18b66..0000000
--- a/docs/html/tools/building/building-studio.jd
+++ /dev/null
@@ -1,801 +0,0 @@
-page.title=Building and Running from Android Studio
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li>
- <a href="#run-configuration">Changing the run configuration</a>
- </li>
-
- <li>
- <a href="#changing-variant">Changing build variants</a>
- </li>
-
- <li>
- <a href="#gradle-console">Monitoring the build process</a>
- </li>
-
- <li>
- <a href="#generating-apks">Generating APKs</a>
- </li>
-
- <li>
- <a href="#instant-run">About Instant Run</a>
- <ol>
- <li>
- <a href="#set-up-ir">Configuring and optimizing your project for Instant Run</a>
- </li>
-
- <li>
- <a href="#ir-limitations">Limitations of Instant Run</a>
- </li>
- </ol>
- </li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/installing/studio-build.html">
- Build System</a></li>
- <li><a href="{@docRoot}tools/devices/managing-avds.html">
- Managing AVDs with AVD Manager</a></li>
- <li><a href="{@docRoot}tools/devices/emulator.html">
- Using the Android Emulator</a></li>
- <li><a href="{@docRoot}tools/device.html">
- Using Hardware Devices</a></li>
- <li><a href="{@docRoot}tools/publishing/app-signing.html">
- Signing Your Applications</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- By default, Android Studio sets up new projects to deploy to the Emulator or
- a physical device with just a few clicks. With Instant Run, you can push
- changes to methods and existing app resources to a running app without
- building a new APK, so code changes are visible almost instantly.
-</p>
-
-<p>
- To build and run your app, click <strong>Run 'app'</strong> <img src=
- "{@docRoot}images/tools/as-run.png" alt="" style=
- "vertical-align:bottom;margin:0;">. Android Studio builds your app with
- Gradle, asks you to select a deployment target (an emulator or a connected
- device), and then deploys your app to it. You can customize some of this
- default behavior, such as selecting an automatic deployment target, by
- <a href="#run-configuration">changing the run configuration</a>.
-</p>
-
-<p>
- If you want to <a href="{@docRoot}tools/devices/emulator.html">use the Android
- Emulator</a> to run your app, you need to have an Android Virtual Device
- (AVD) ready. If you haven't already created one, then after you click
- <strong>Run 'app'</strong>, click <strong>Create New Emulator</strong> in the
- <strong>Select Deployment Target</strong> dialog. Follow the Virtual Device
- Configuration wizard to define the type of device you want to emulate. For
- more information, see <a href=
- "{@docRoot}tools/devices/managing-avds.html">Managing AVDs with the AVD
- Manager</a>.
-</p>
-
-<p>
- If you're using a physical Android device, you need to enable USB debugging
- on the device. For more information, see <a href=
- "{@docRoot}tools/device.html">Using Hardware Devices</a>.
-</p>
-
-<p class="note">
- <strong>Note:</strong> You can also deploy your app in debug mode by clicking
- <strong>Debug 'app'</strong> <img src=
- "{@docRoot}images/tools/as-debugbutton.png" alt="" style=
- "vertical-align:bottom;margin:0;">. Running your app in debug mode
- allows you to set breakpoints in your code, examine variables and evaluate
- expressions at run time, and run debugging tools. To learn more, read about
- <a href="{@docRoot}tools/debugging/debugging-studio.html">Debugging with
- Android Studio</a>.
-</p>
-
-<h3 id="run-configuration">
- Changing the run configuration
-</h3>
-
-<p>
- The run configuration specifies the module to run, package to deploy,
- activity to start, target device, emulator settings, and Logcat options. The
- default run configuration launches the default project activity and uses the
- <strong>Device Chooser</strong> for target device selection. If the default
- settings don't suit your project or module, you can customize the run
- configuration, or even create a new one, at the project, default, and module
- levels. To edit a run configuration:
-</p>
-
-<ol>
- <li>Select <strong>Run</strong> > <strong>Edit Configurations</strong>.
- </li>
-
- <li>Expand the <strong>Android Application</strong> item and select an
- existing run configuration.
- <ul>
- <li>To create a new run configuration, click the '<strong>+</strong>'
- button in the top left corner of the dialog box and select
- <strong>Android Application</strong>.
- </li>
- </ul>
- </li>
-
- <li>With a run configuration selected, adjust your desired settings. For
- example, in the <strong>General</strong> tab, you can specify the APK
- installation settings, launch options, and deployment target options.
- </li>
-</ol>
-
-<h3 id="changing-variant">
- Changing the build variant
-</h3>
-
-<p>
- By default, Android Studio builds the debug version of your app, which is
- intended only for testing, when you click <strong>Run 'app'</strong>. You
- need to build the release version when <a href=
- "{@docRoot}tools/publishing/preparing.html">preparing your app for public
- release</a>.
-</p>
-<p>
- To change the build variant Android Studio uses, go to <strong>Build</strong>
- > <strong>Select Build Variant</strong> and select a different one from
- the drop-down menu. By default, new projects are set up with a debug and
- release build variant.
-</p>
-
-<p>
- Using <em>product flavors</em>, you can create additional build variants for
- different versions of your app, each having different features or device
- requirements. To learn more about build variants and product flavors, read
- <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
- Builds</a>.
-</p>
-
-<h3 id="gradle-console">
- Monitoring the build process
-</h3>
-
-<p>
- You can view details about the build process by clicking <strong>Gradle
- Console</strong> <img src="{@docRoot}images/tools/as-gradlebutton.png" alt=""
- style="vertical-align:bottom;margin:0;">. The console displays each
- task that Gradle executes in order to build your app, as shown in figure 1.
-</p>
-
-<img src="{@docRoot}images/tools/studio-gradle-console.png" alt="">
-<p class="img-caption">
- <strong>Figure 1.</strong> The Gradle Console in Android Studio.
-</p>
-
-<p>
- If your build variants use product flavors, Gradle also invokes tasks to
- build those product flavors. To view the list of all available build tasks,
- click <strong>Gradle</strong> <img src=
- "{@docRoot}images/tools/as-gradle.png" alt="" style=
- "vertical-align:bottom;margin:0;"> on the right side of the IDE
- window.
-</p>
-
-<p>
- If an error occurs during the build process, the <em>Messages</em> window
- appears to describe the issue. Gradle may recommend some command-line
- options to help you resolve the issue, such as <code>--stacktrace</code> or
- <code>--debug</code>. To use command-line options with your build process:
-</p>
-
-<ol>
- <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
- dialog:
- <ul>
- <li>On Windows or Linux, select <strong>File</strong> >
- <strong>Settings</strong> from the main menu.
- </li>
-
- <li>On Mac OSX, select <strong>Android Studio</strong> >
- <strong>Preferences</strong> from the main menu.
- </li>
- </ul>
- </li>
-
- <li>Navigate to <strong>Build, Execution, Deployment</strong> >
- <strong>Compiler</strong>.
- </li>
-
- <li>In the text field next to <em>Command-line Options</em>, enter your
- command-line options.
- </li>
-
- <li>Click <strong>OK</strong> to save and exit.
- </li>
-</ol>
-
-<p>
- Gradle will apply these command-line options the next time you try building
- your app.
-</p>
-
-<h3 id="generating-apks">
- Generating APKs
-</h3>
-
-<p>
- When you click <strong>Run 'app'</strong>, Android Studio generates a debug
- APK and deploys it to your target device. Before you can generate a release
- version of your app for public distribution, however, you must first learn
- how to <a href="{@docRoot}tools/publishing/app-signing.html#studio">sign your
- app</a>. You can then generate multiple signed APKs of your debug or release
- build variants. To locate the generated APK files, click the link in the
- pop-up dialog, as shown in figure 2.
-</p>
-
-<p>
- <img src="{@docRoot}images/tools/as-find-apk.png" alt="">
-</p>
-
-<p class="img-caption">
- <strong>Figure 2.</strong> Click the link to locate the generated APK
- files.
-</p>
-
-<h2 id="instant-run">About Instant Run</h3>
-
-<p>
- Introduced in Android Studio 2.0, Instant Run is a behavior for the
- <strong>Run</strong> <img src="{@docRoot}images/tools/as-run.png" alt=""
- style="vertical-align:bottom;margin:0;"> and <strong>Debug</strong> <img src=
- "{@docRoot}images/tools/as-debugbutton.png" alt="" style=
- "vertical-align:bottom;margin:0;"> commands that significantly reduces the
- time between updates to your app. Although your first build may take longer
- to complete, Instant Run pushes subsequent updates to your app without
- building a new APK, so changes are visible much more quickly.
-</p>
-
-<p>
- Instant Run is supported only when you deploy the debug build variant, use
- Android Plugin for Gradle version 2.0.0 or higher, and set
- <code>minSdkVersion</code> to 15 or higher in your app's module-level
- <code>build.gradle</code> file. For the best performance, set
- <code>minSdkVersion</code> to 21 or higher.
-</p>
-
-<p>
- After deploying an app, a small, yellow thunderbolt icon appears within the
- <strong>Run</strong> <img src=
- "{@docRoot}images/tools/instant-run/as-irrun.png" alt="" style=
- "vertical-align:bottom;margin:0;"> button (or <strong>Debug</strong>
- <img src="{@docRoot}images/tools/instant-run/as-irdebug.png" alt="" style=
- "vertical-align:bottom;margin:0;"> button), indicating that Instant Run is
- ready to push updates the next time you click the button. Instead of building
- a new APK, it pushes just those new changes and, in some cases, the app
- doesn't even need to restart but immediately shows the effect of those code
- changes.
-</p>
-
-<p>
- Instant Run pushes updated code and resources to your connected device or
- emulator by performing a <em>hot swap</em>, <em>warm swap</em>, or <em>cold
- swap</em>. It automatically determines the type of swap to perform based on
- the type of change you made. The following table describes how Instant Run
- behaves when you push certain code changes to a target device.
-</p>
-
-<table id="ir-table">
- <col width="40%">
- <tr>
- <th scope="col">
- Code Change
- </th>
- <th scope="col">
- Instant Run Behavior
- </th>
- </tr>
-
- <tr id="hot-swap">
- <td>
- <ul>
- <li>Change implementation code of an existing method
- </li>
- </ul>
- </td>
- <td>
- <p>
- Supported with <strong>hot swap</strong>: This is the
- fastest type of swap and makes changes visible much more quickly. Your
- application keeps running and a stub method with the new implementation is used
- the next time the method is called.
- </p>
-
- <p>
- Hot swaps do not re-initialize objects in your running app. You may need to
- restart the current activity, or <a href="#rerun">restart the app</a>, before
- you see certain updates. By default, Android Studio automatically restarts the
- current activity after performing a hot swap. If you do not want this behavior,
- you can <a href="#activity-restart">disable automatic activity restarts</a>.
- </p>
- </td>
- </tr>
-
- <tr id="warm-swap">
- <td>
- <ul>
- <li>Change or remove an existing resource
- </li>
- </ul>
- </td>
- <td>
- Supported with <strong>warm swap</strong>: This swap
- is still very fast, but Instant Run must restart the current activity when it
- pushes the changed resources to your app. Your app keeps running, but a small
- flicker may appear on the screen as the activity restarts—this is normal.
- </td>
- </tr>
-
- <tr id="cold-swap">
- <td>
- Structural code changes, such as:
- <ul>
- <li>Add, remove, or change:
- <ul>
- <li>an annotation
- </li>
-
- <li>an instance field
- </li>
-
- <li>a static field
- </li>
-
- <li>a static method signature
- </li>
-
- <li>an instance method signature
- </li>
- </ul>
- </li>
-
- <li>Change which parent class the current class inherits from
- </li>
-
- <li>Change the list of implemented interfaces
- </li>
-
- <li>Change a class's static initializer
- </li>
-
- <li>Reorder layout elements that use dynamic resource IDs
- </li>
- </ul>
- </td>
- <td>
- <p>
- Supported with <strong>cold swap</strong> (API level 21 or higher): This swap
- is a bit slower because, although a new APK is not required, Instant Run must
- restart the whole app when it pushes structural code changes.
- </p>
-
- <p>
- For target devices running API level 20 or lower, Android Studio
- deploys a full APK.
- </p>
- </td>
- </tr>
-
- <tr>
- <td>
- <ul>
- <li>Change the app manifest
- </li>
-
- <li>Change resources referenced by the app manifest
- </li>
-
- <li>Change an Android widget UI element
- </li>
- </ul>
- </td>
- <td>
- <p>
- When making changes to the app's manifest or resources referenced by the
- manifest, Android Studio automatically <strong>deploys a new build</strong>
- in order to apply these changes. This is because certain information about
- the app, such as its name, app icon resources, and intent filters, are
- determined from the manifest when the APK is installed on the device.
- </p>
-
- <p>
- If your build process automatically updates any part of the app manifest,
- such as automatically iterating <code>versionCode</code> or
- <code>versionName</code>, you will not be able to benefit from the full
- performance of Instant Run. When using Instant Run, you should disable
- automatic updates to any part in the app manifest in your debug build
- variants.
- </p>
-
- <p>
- When updating an Android widget UI element, you need to perform a <a href=
- "#rerun">Clean and Rerun</a> to see your changes. Alternatively, because
- performing clean builds may take longer while using Instant Run, you can
- temporarily <a href="#disable-ir">disable Instant Run</a> while making
- updates to your widget UI.
- </p>
- </td>
- </tr>
-</table>
-
-<p class="note">
- <strong>Note:</strong> If you need to restart your app after a crash, do not
- launch it from your target device. Restarting your app from your target
- device does not apply any of your code changes since the last cold swap or
- <em>incremental build</em>. To launch your app with all your recent changes,
- click <strong>Run</strong> <img src="{@docRoot}images/tools/as-run.png" alt=
- "" style="vertical-align:bottom;margin:0;"> (or <strong>Debug</strong>
- <img src="{@docRoot}images/tools/as-debugbutton.png" alt="" style=
- "vertical-align:bottom;margin:0;">) from Android Studio.
-</p>
-
-<h4 id="rerun">
- Using Rerun
-</h4>
-
-<p>
- When pushing code changes that affect certain initializers, such as changes
- to an app's {@link android.app.Application#onCreate onCreate()} method, you
- need to restart your app for the changes to take effect. To perform an
- <em>incremental build</em> and restart the app, click <strong>Rerun</strong>
- <img src="{@docRoot}images/tools/as-restart.png" alt="" style=
- "vertical-align:bottom;margin:0;">.
-</p>
-
-<p>
- If you need to deploy a <em>clean build</em>, select <strong>Run</strong>
- > <strong>Clean and Rerun 'app'</strong> <img src=
- "{@docRoot}images/tools/as-cleanrerun.png" alt="" style=
- "vertical-align:bottom;margin:0;"> from the main menu, or hold down the
- <strong>Shift</strong> key while clicking <strong>Rerun</strong> <img src=
- "{@docRoot}images/tools/as-restart.png" alt="" style=
- "vertical-align:bottom;margin:0;">. This action stops the running app,
- performs a full clean build, and deploys the new APK to your target device.
-</p>
-
-<h4 id="activity-restart">
- Disabling automatic activity restart
-</h4>
-
-<p>
- When performing a hot swap, your app keeps running but Android Studio
- automatically restarts the current activity. To disable this default setting:
-</p>
-
-<ol>
- <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
- dialog:
- <ul>
- <li>On Windows or Linux, select <strong>File</strong> >
- <strong>Settings</strong> from the main menu.
- </li>
-
- <li>On Mac OSX, select <strong>Android Studio</strong> >
- <strong>Preferences</strong> from the main menu.
- </li>
- </ul>
- </li>
-
- <li>Navigate to <strong>Build, Execution, Deployment</strong> >
- <strong>Instant Run</strong>.
- </li>
-
- <li>Uncheck the box next to <strong>Restart activity on code
- changes</strong>.
- </li>
-</ol>
-
-<p>
- If automatic activity restart is disabled, you can manually restart the current
- activity from the menu bar by selecting <strong>Run</strong> > <strong>Restart
- Activity</strong>.
-</p>
-
-<h3 id="set-up-ir">
- Configuring and optimizing your project for Instant Run
-</h3>
-
-<p>
- Android Studio enables Instant Run by default for projects built using
- Android Plugin for Gradle 2.0.0 and higher.
-</p>
-
-<p>
- To update an existing project with the latest version of the plugin:
-</p>
-
-<ol>
- <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
- dialog.
- </li>
-
- <li>
- <p>
- Navigate to <strong>Build, Execution, Deployment</strong> >
- <strong>Instant Run</strong> and click <strong>Update Project</strong>,
- as shown in figure 3.
- </p>
-
- <p>
- If the option to update the project does not appear, it’s already
- up-to-date with the latest Android Plugin for Gradle.
- </p>
-
- <img src="{@docRoot}images/tools/instant-run/update-project-dialog.png"
- alt="" height="51">
-
- <p class="img-caption">
- <strong>Figure 3.</strong> Updating the Android Plugin for Gradle for an
- existing project.
- </p>
- </li>
-</ol>
-
-<p>
- You also need to <a href="#changing-variant">change the build variant</a> to
- a debug version of your app to start using Instant Run.
-</p>
-
-<h4 id="configure-dexoptions">
- Improve build times by configuring DEX resources
-</h4>
-
-<p>
- When you deploy a clean build, Android Studio instruments your app to allow
- Instant Run to push code and resource updates. Although updating the running
- app happens much more quickly, the first build may take longer to complete.
- You can improve the build process by configuring a few <a class=
- "external-link" href=
- "http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html">
- <code>DexOptions</code></a> settings:
-</p>
-
-<dl>
- <dt>
- <a class="external-link" href=
- "http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html#com.android.build.gradle.internal.dsl.DexOptions:maxProcessCount">
- <code>maxProcessCount</code></a>
- </dt>
-
- <dd>
- Sets the maximum number of DEX processes that can be started concurrently.
- If the Gradle daemon is already running, you need to stop the process
- before initializing it with a new maximum process count. You can terminate
- the Gradle daemon by calling one of the following from the
- <em>Terminal</em> window:
- <ul>
- <li>On Windows, call <code>gradlew --stop</code>
- </li>
-
- <li>On Linux/Mac OSX, call <code>./gradlew --stop</code>
- </li>
- </ul>
- </dd>
-
- <dt>
- <a class="external-link" href=
- "http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html#com.android.build.gradle.internal.dsl.DexOptions:javaMaxHeapSize">
- <code>javaMaxHeapSize</code></a>
- </dt>
-
- <dd>
- Sets the maximum memory allocation pool size for the dex operation. When
- passing a value, you can append the letter 'k' to indicate kilobytes, 'm'
- to indicate megabytes, or 'g' to indicate gigabytes.
- </dd>
-</dl>
-
-<p>
- The following example sets <code>maxProcessCount</code> to 4 and
- <code>javaMaxHeapSize</code> to "2g" in the module-level
- <code>build.gradle</code> file:
-</p>
-
-<pre>
-android {
- ...
- dexOptions {
- maxProcessCount 4 // this is the default value
- javaMaxHeapSize "2g"
- }
-}
-</pre>
-
-<p>
- You should experiment with these settings by incrementing their values and
- observing the effect on your build times. You could experience a negative
- impact to performance if you allocate too many resources to the dexing process.
-</p>
-
-<h4>
- Enabling dexing-in-process and incremental Java compilation
-</h4>
-
-<p>
- <a href="{@docRoot}tools/revisions/gradle-plugin.html#revisions">Android
- Plugin for Gradle version 2.1.0</a> and higher features additional build
- process improvements, including incremental Java compilation and
- dexing-in-process. Incremental Java compilation is enabled by default and
- reduces compilation time during development by only recompiling portions of
- the source that have changed or need to be recompiled.
-</p>
-
-<p>
- Dexing-in-process performs dexing within the build process rather than in a
- separate, external VM processes. This not only makes incremental builds much
- faster, but also significantly speeds up full builds. To enable this feature,
- you need to set the Gradle daemon's maximum heap size to at least 2048 MB. You
- can do this by including the following in your project's
- <code>gradle.properties</code> file:
-
-<pre>
-org.gradle.jvmargs = -Xmx2048m
-</pre>
-
-</p>
-
-<p>
- If you have defined a value for <a class="external-link" href=
- "http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html#com.android.build.gradle.internal.dsl.DexOptions:javaMaxHeapSize">
- <code>javaMaxHeapSize</code></a> in your module-level <code>build.gradle</code>
- file, you need to set the daemon's max heap size to the value of
- <code>javaMaxHeapSize</code> + 1024 MB. For example, if you have set
- <code>javaMaxHeapSize</code> to "2g", you need to add the following to your
- project's <code>gradle.properties</code> file:
-
-<pre>
-org.gradle.jvmargs = -Xmx3072m
-</pre>
-
-</p>
-
-<h4 id="windows-defender">
- Excluding your project from Windows Defender
-</h4>
-
-<p>
- On Windows systems, Windows Defender may cause slowdowns while using Instant
- Run. If you are using Windows Defender, you should <a class="external-link"
- href=
- "http://answers.microsoft.com/en-us/protect/wiki/protect_defender-protect_scanning/how-to-exclude-a-filefolder-from-windows-defender/f32ee18f-a012-4f02-8611-0737570e8eee">
- exclude your Android Studio project folder from Windows Defender malware
- scans</a>.
-</p>
-
-<h4 id="crashlytics">
- Disabling Crashlytics for your debug build variant
-</h4>
-
-<p>
- Using Crashlytics is known to cause slower build times. To improve build
- performance while developing your app, you can <a class="external-link" href=
- "https://docs.fabric.io/android/crashlytics/build-tools.html#disabling-crashlytics-for-debug-builds">
- disable Crashlytics for your debug build variant</a>.
-</p>
-
-<h3 id="ir-limitations">
- Limitations of Instant Run
-</h3>
-
-<p>
- Instant Run is designed to speed up the build and deploy process in most
- situations. However, there are some aspects to using Instant Run that might
- affect its behavior and compatibility with your app. If you experience any
- other issues while using Instant Run, please <a class="external-link" href=
- "http://tools.android.com/filing-bugs">file a bug</a>.
-</p>
-
-<h4 id="multiple-devices">
- Deploying to multiple devices
-</h4>
-
-<p>
- Instant Run uses different techniques to perform hot, warm, and cold swaps
- that are specific to the API level of the target device. For this reason,
- while deploying an app to multiple devices at once, Android Studio
- temporarily turns off Instant Run.
-</p>
-
-<h4 id="ir-multidex">
- Multidexing your app
-</h4>
-
-<p>
- If your project is configured for <a href=
- "{@docRoot}tools/building/multidex.html#mdex-pre-l">Legacy Multidex</a>—that
- is, when <code>build.gradle</code> is configured with <code>multiDexEnabled
- true</code> and <code>minSdkVersion 20</code> or lower—and you deploy to
- target devices running Android 4.4 (API level 20) or lower, Android Studio
- disables Instant Run.
-</p>
-
-<p>
- If <code>minSdkVersion</code> is set to 21 or higher, Instant Run
- automatically configures your app for multidex. Because Instant Run only
- works with the debug version of your app, you may need to <a href=
- "{@docRoot}tools/building/multidex.html#mdex-gradle">configure your app for
- multidex</a> when deploying your release build variant.
-</p>
-
-<h4 id="instrumented-tests">
- Running instrumented tests and performance profilers
-</h4>
-
-<p>
- Instrumented tests load both the debug APK and a test APK into the same
- process on a test device, allowing control methods to override the normal
- lifecycle of the app and perform tests. While running or debugging
- instrumented tests, Android Studio does not inject the additional methods
- required for Instant Run and turns the feature off.
-</p>
-
-<p>
- While profiling an app, you should disable Instant Run. There is a small
- performance impact when using Instant Run and a slightly larger impact when
- overriding methods with a hot swap. This performance impact could interfere
- with information provided by performance profiling tools. Additionally, the
- stub methods generated with each hot swap can complicate stack traces.
-</p>
-
-<h4 id="plugins">
- Using third-party plugins
-</h4>
-
-<p>
- Android Studio temporarily disables the Java Code Coverage Library (JaCoCo)
- and ProGuard while using Instant Run. Because Instant Run only works with
- debug builds, this does not affect your release build.
-</p>
-
-<p>
- Certain third-party plugins that perform bytecode enhancement may cause
- issues with how Instant Run instruments your app. If you experience these
- issues, but want to continue using Instant Run, you should disable those
- plugins for your debug build variant. You can also help improve compatibility
- with third-party plugins by <a class="external-link" href=
- "http://tools.android.com/filing-bugs">filing a bug</a>.
-</p>
-
-<h4 id="multi-process-apps">
- Pushing changes to multi-process apps
-</h4>
-
-<p>
- Instant Run only instruments your app's main process in order to perform hot
- swaps and warm swaps. When pushing code changes to other app processes, such
- as changes to a method implementation or an existing resource, Instant Run
- performs a <a href="#cold-swap">cold swap</a>.
-</p>
-
-<h4 id="disable-ir">
- Disabling Instant Run
-</h4>
-
-<p>
- To disable Instant Run:
-</p>
-
-<ol>
- <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
- dialog.
- </li>
-
- <li>Navigate to <strong>Build, Execution, Deployment</strong> >
- <strong>Instant Run</strong>.
- </li>
-
- <li>Uncheck the box next to <strong>Enable Instant Run</strong>.
- </li>
-</ol>
\ No newline at end of file
diff --git a/docs/html/tools/building/configuring-gradle.jd b/docs/html/tools/building/configuring-gradle.jd
deleted file mode 100644
index 73a048b..0000000
--- a/docs/html/tools/building/configuring-gradle.jd
+++ /dev/null
@@ -1,549 +0,0 @@
-page.title=Configuring Gradle Builds
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
- <li><a href="#buildFileBasics">Build Configuration Basics</a>
- <ol>
- <li><a href="#buildFileBasics">Declare dependencies</a></li>
- <li><a href="#buildFileBasics">Run ProGuard</a></li>
- <li><a href="#configureSigning">Configure signing settings</a></li>
- </ol>
- </li>
-
-
- <li><a href="#workBuildVariants">Work with build variants</a></li>
-</ol>
-
-
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}tools/building/plugin-for-gradle.html">
-Android Plugin for Gradle</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>This section builds on the
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a> and
-<a href="{@docRoot}tools/building/building-studio.html">Build and Running from Android Studio</a>
-to show you how to use build variants based on product flavors and build types.</p>
-
-
-<h2 id="buildFileBasics">Build Configuration Basics</h2>
-
-<p>Android Studio projects contain a top-level build file and a build file for each module. The
-build files are called <code>build.gradle</code>, and they are plain text files that use
-<a href="http://groovy.codehaus.org">Groovy</a> syntax to configure the build with the elements
-provided by the Android plugin for Gradle. In most cases, you only need to edit the build files
-at the module level. For example, the build file for the app module in the
-<code>BuildSystemExample</code> project looks like this:</p>
-
-<pre>
-apply plugin: 'com.android.application'
-
-android {
- compileSdkVersion 19
- buildToolsVersion "19.0.0"
-
- defaultConfig {
- minSdkVersion 8
- targetSdkVersion 19
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-}
-
-dependencies {
- compile project(":lib")
- compile 'com.android.support:appcompat-v7:19.0.1'
- compile fileTree(dir: 'libs', include: ['*.jar'])
-}
-</pre>
-
-<p><code>apply plugin: 'com.android.application'</code> applies the Android plugin for Gradle to this build.
-This adds Android-specific build tasks to the top-level build tasks and makes the
-<code>android {...}</code> element available to specify Android-specific build options.</p>
-
-<p><code>android {...}</code> configures all the Android-specific build options:</p>
-
-<ul>
- <li>The <code>compileSdkVersion</code> property specifies the compilation target.</li>
- <li><p>The <code>buildToolsVersion</code> property specifies what version of the build tools
- to use. To install several versions of the build tools, use the SDK Manager.</p>
- <p class="note"><strong>Note:</strong> Always use a build tools version whose major
- revision number is higher or equal to that of your compilation target and target SDK.</p>
- </li>
- <li><p>The <code>defaultConfig</code> element configures core settings and
- entries in the manifest file (<code>AndroidManifest.xml</code>) dynamically from the
- build system. The values in <code>defaultConfig</code> override those in the manifest
- file.</p>
- <p>The configuration specified in the <code>defaultConfig</code> element applies
- to all build variants, unless the configuration for a build variant overrides some
- of these values.</p>
- </li>
- <li>The <code>buildTypes</code> element controls how to build and package your app.
- By default, the build system defines two build types: <em>debug</em> and
- <em>release</em>. The debug build type includes debugging symbols and is signed with
- the debug key. The release build type is not signed by default.
- In this example the build file configures the release version to use
- ProGuard.</li>
-</ul>
-
-<p>The <code>dependencies</code> element is outside and after the <code>android</code> element.
-This element declares the dependencies for this module. Dependencies are covered in the following
-sections.</p>
-
-<p class="note"><strong>Note:</strong> When you make changes to the build files in your project,
-Android Studio requires a project sync to import the build configuration changes. Click
-<strong>Sync Now</strong> on the yellow notification bar that appears for Android Studio
-to import the changes.</p>
-
-<img src="{@docRoot}images/tools/as-gradlesync.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> Sync the project in Android Studio.</p>
-
-<h3 id="declareDeps">Declare dependencies</h3>
-
-<p>The <code>app</code> module in this example declares three
-dependencies:</p>
-
-<pre>
-...
-dependencies {
- // Module dependency
- compile project(":lib")
-
- // Remote binary dependency
- compile 'com.android.support:appcompat-v7:19.0.1'
-
- // Local binary dependency
- compile fileTree(dir: 'libs', include: ['*.jar'])
-}
-</pre>
-
-<p>Each of these dependencies is described below. The build system adds all the
-<code>compile</code> dependencies to the compilation classpath and includes them in the final
-package.</p>
-
-<h4>Module dependencies</h4>
-
-<p>The <code>app</code> module depends on the <code>lib</code> module, because
-<code>MainActivity</code> launches <code>LibActivity1</code> as described in
-<a href="#openActFromLib">Open an Activity from a Library Module</a>.</p>
-
-<p><code>compile project(":lib")</code> declares a dependency on the <code>lib</code>
-module of <code>BuildSystemExample</code>. When you build the <code>app</code> module,
-the build system assembles and includes the <code>lib</code> module.</p>
-
-<h4>Remote binary dependencies</h4>
-
-<p>The <code>app</code> and <code>lib</code> modules both use the <code>ActionBarActivity</code>
-class from the Android Support Library, so these modules depend on it.</p>
-
-<p><code>compile 'com.android.support:appcompat-v7:19.0.1'</code> declares a dependency on
-version 19.0.1 of the Android Support Library by specifying its Maven coordinates. The Android Support
-Library is available in the <em>Android Repository</em> package of the Android SDK. If your
-SDK installation does not have this package, download and install it using the SDK Manager.</p>
-
-Android Studio configures projects to use the Maven Central Repository by default. (This
-configuration is included in the top-level build file for the project.)</p>
-
-<h4>Local binary dependencies</h4>
-
-<p>Some modules do not use any binary dependencies from the
-local file system. If you have modules that require local binary dependencies, copy the JAR
-files for these dependencies into <code><moduleName>/libs</code> inside your project.</p>
-
-<p><code>compile fileTree(dir: 'libs', include: ['*.jar'])</code> tells the build system that any
-JAR file inside <code>app/libs</code> is a dependency and should be included in the compilation
-classpath and in the final package.</p>
-
-<p>For more information about dependencies in Gradle, see
-<a href="http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html">Dependency
-Management Basics</a> in the Gradle User Guide.</p>
-
-<h3 id="runProguard">Run ProGuard</h3>
-
-<p>The build system can run
-<a href="http://developer.android.com/tools/help/proguard.html">ProGuard</a> to obfuscate your
-classes during the build process. In <code>BuildSystemExample</code>, modify the build file for
-the app module to run ProGuard for the release build:</p>
-
-<pre>
-...
-android {
- ...
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-}
-...
-</pre>
-
-<p><code>getDefaultProguardFile('proguard-android.txt')</code> obtains the default ProGuard
-settings from the Android SDK installation. Android Studio adds the module-specific rules file
-<code>proguard-rules.pro</code> at the root of the module, where you can add custom ProGuard
-rules.</p>
-
-
-
-<h3>Application ID for package identification </h3>
-<p>With the Android build system, the <em>applicationId</em> attribute is used to
-uniquely identify application packages for publishing. The application ID is set in the
-<em>android</em> section of the <code>build.gradle</code> file.
-</p>
-
- <pre>
- apply plugin: 'com.android.application'
-
- android {
- compileSdkVersion 19
- buildToolsVersion "19.1"
-
- defaultConfig {
- <strong>applicationId "com.example.my.app"</strong>
- minSdkVersion 15
- targetSdkVersion 19
- versionCode 1
- versionName "1.0"
- }
- ...
- </pre>
-
-<p class="note"><strong>Note:</strong> The <em>applicationId</em> is specified only in your
-{@code build.gradle} file, and not in the AndroidManifest.xml file.</p>
-
-<p>When using build variants, the build system enables you to uniquely identify different
-packages for each product flavors and build types. The application ID in the build type is added as
-a suffix to those specified for the product flavors. </p>
-
- <pre>
- productFlavors {
- pro {
- applicationId = "com.example.my.pkg.pro"
- }
- free {
- applicationId = "com.example.my.pkg.free"
- }
- }
-
- buildTypes {
- debug {
- applicationIdSuffix ".debug"
- }
- }
- ....
- </pre>
-
-<p>The package name must still be specified in the manifest file. It is used in your source code
-to refer to your R class and to resolve any relative activity/service registrations. </p>
-
- <pre>
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- <strong>package="com.example.app"</strong>>
- </pre>
-
-<p class="note"><strong>Note:</strong> If you have multiple manifests (for example, a product
-flavor specific manifest and a build type manifest), the package name is optional in those manifests.
-If it is specified in those manifests, the package name must be identical to the package name
-specified in the manifest in the <code>src/main/</code> folder. </p>
-
-<p>For more information about the build files and process, see
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a>.</p>
-
-
-
-<h3 id="configureSigning">Configure signing settings</h3>
-
-<p>The debug and the release versions of the app differ on whether the application can be
-debugged on secure devices and on how the APK is signed. The build system signs the debug
-version with a default key and certificate using known credentials to avoid a password prompt at
-build time. The build system does not sign the release version unless you explicitly define a
-signing configuration for this build. If you do not have a release key, you can generate one as
-described in <a href="{@docRoot}tools/publishing/app-signing.html">Signing your Applications</a>.</p>
-
-
-<h2 id="workBuildVariants">Work with build variants</h2>
-
-<p>This section describes how the build system can help you create different versions of the same
-application from a single project. This is useful when you have a demo version and a paid version
-of your app, or if you want to distribute multiple APKs for different device configurations on
-Google Play.</p>
-
-<p>The build system uses <em>product flavors</em> to create different product versions of your app.
-Each product version of your app can have different features or device requirements. The build
-system also uses build types to apply different build and packaging settings to each product version.
-Each product flavor and build type combination forms a build variant. The build system generates a
-different APK for each build variant of your app. </p>
-
-<h3>Build variants</h3>
-
-<p>This example project consists of the two default build types (<em>debug</em> and <em>release</em>)
-and two product flavors for app type (demo and full). For more information on advanced uses of
-build variants, see
-<a href="{@docRoot}sdk/installing/studio-build.html"> Build System Overview</a> .</p>
-
-
-<h4>Product flavors </h4>
-
-<p>To create different product versions of your app:</p>
-
-<ol>
- <li>Define product flavors in the build file.</li>
- <li>Create additional source directories for each flavor.</li>
- <li>Add the flavor-specific sources to your project.</li>
-</ol>
-
-<p>The rest of this section walks you through these steps in detail using a
-<code>BuildSystemExample</code> project. You create two flavors of the
-<code>BuildSystemExample</code> app, a demo flavor and a full flavor. Both flavors share
-<code>MainActivity</code>, to which you add a new button to launch a new activity,
-<code>SecondActivity</code>. This new activity is different for each flavor, so you simulate a
-situation where the new activity would have more features in the full flavor than in the demo
-flavor. At the end of the exercise, you end up with two different APKs, one for each flavor.</p>
-
-<h3>Define product flavors in the build file</h3>
-
-<p>To define two product flavors, edit the build file for the app module to add the following
-configuration:</p>
-
-<pre>
-...
-android {
- ...
- defaultConfig { ... }
- signingConfigs { ... }
- buildTypes { ... }
- productFlavors {
- demo {
- applicationId "com.buildsystemexample.app.demo"
- versionName "1.0-demo"
- }
- full {
- applicationId "com.buildsystemexample.app.full"
- versionName "1.0-full"
- }
- }
-}
-...
-</pre>
-
-<p>The product flavor definitions support the same properties as the <code>defaultConfig</code>
-element. The base configuration for all flavors is specified in <code>defaultConfig</code>, and each
-flavor overrides any default values. The build file above uses the <code>applicationId</code>
-property to assign a different package name to each flavor: since each flavor definition creates a
-different app, they each need a distinct package name.</p>
-
-<p class="note"><strong>Note:</strong> To distribute your app using
-<a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a> in
-Google Play, assign the same package name to all variants and give each variant a different
-<code>versionCode</code>. To distribute different variants of your app as separate apps in Google
-Play, assign a different package name to each variant.</p>
-
-<h4>Add additional source directories for each flavor</h4>
-
-<p>Now you create source folders and add a <code>SecondActivity</code> to each flavor. To create
-the source directory structure for the demo flavor:</p>
-
-<ol>
- <li>On the <em>Project</em> panel, expand <strong>BuildSystemExample</strong>, and then expand
- the <strong>app</strong> directory.</li>
- <li>Right-click the <strong>src</strong> directory under <em>app</em> and select
- <strong>New</strong> > <strong>Directory</strong>.</li>
- <li>Enter "demo" as the name of the new directory and click <strong>OK</strong>.</li>
- <li><p>Similarly, create the following directories:</p>
- <ul>
- <li><code>app/src/demo/java</code></li>
- <li><code>app/src/demo/res</code></li>
- <li><code>app/src/demo/res/layout</code></li>
- <li><code>app/src/demo/res/values</code></li>
- </ul>
- </li>
-</ol>
-
-<p>The resulting directory structure looks like figure 1.</p>
-
-<img src="{@docRoot}images/tools/as-demoflavordirs.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> New source directories for the demo flavor.</p>
-
-<h4>Add a new activity to each flavor</h4>
-
-<p>To add <code>SecondActivity</code> to the <code>demo</code> flavor:</p>
-
-<ol>
- <li>On the <em>Project</em> panel, right click on the <strong>app</strong> module and select
- <strong>New</strong> > <strong>Activity</strong>.</li>
- <li>Select <strong>Blank Activity</strong> and click <strong>Next</strong>.</li>
- <li>Enter "SecondActivity" as the activity name.</li>
- <li>Enter "com.buildsystemexample.app" as the package name and click
- <strong>Finish</strong>.</li>
- <li>Right click on the <strong>java</strong> directory under <em>app/src/demo</em> and select
- <strong>New</strong> > <strong>Package</strong>.</li>
- <li>Enter "com.buildsystemexample.app" as the package name and click <strong>OK</strong>.</li>
- <li>Drag <strong>SecondActivity</strong> and drop it under the new package in
- <em>app/src/demo/java</em>.</li>
- <li>Accept the default values and click <strong>Refactor</strong>.</li>
-</ol>
-
-<p>To add the layout for <code>SecondActivity</code> and a strings resource to the demo flavor:</p>
-
-<ol>
- <li>Drag <strong>activity_second.xml</strong> from <em>app/src/main/res/layout</em> and drop it
- inside <em>app/src/demo/res/layout</em>.</li>
- <li>Accept the default values on the window that appears and click <code>OK</code>.</li>
- <li>Copy <strong>strings.xml</strong> from <em>app/src/main/res</em> into
- <em>app/src/demo/res</em>.</li>
- <li><p>Replace the contents of the new copy of <code>strings.xml</code> with the
- following:</p>
- <p><pre>
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <string name="hello_world">Demo version only.</string>
-</resources>
-</pre></p>
- </li>
-</ol>
-
-<p>Now you add source folders and <code>SecondActivity</code> to the full flavor by making a copy
-of the <code>demo</code> flavor:</p>
-
-<ol>
- <li>On the <em>Project</em> panel, right click on the <strong>demo</strong> directory under
- <em>app/src</em> and select <strong>Copy</strong>.</li>
- <li>Right-click on the <strong>src/</strong> directory under <em>app/</em> and select
- <strong>Paste</strong>.</li>
- <li>On the window that appears, enter "full" as the new name and click <strong>OK</strong>.</li>
- <li><p>Replace the contents of <strong>strings.xml</strong> under <em>src/full/res/values</em>
- with the following:</p>
- <p><pre>
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <string name="hello_world">This is the full version!</string>
-</resources>
-</pre></p>
- </li>
-</ol>
-
-<p class="note"><strong>Note:</strong> From this point on, you could develop
-<code>SecondActivity</code> independently inside each
-flavor. For example, you could add more features to this activity in the <code>full</code> flavor.</p>
-
-<p>To work on files from a particular flavor, click on <strong>Build Variants</strong> on the left
-of the IDE window and select the flavor you want to modify in the <em>Build Variants</em> panel,
-as shown in figure 2. Android Studio may show errors in source files from flavors other than the
-one selected in the <em>Build Variants</em> panel, but this does not affect the outcome of the
-build.</p>
-
-<img src="{@docRoot}images/tools/as-buildvariants.png" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> The Build Variants panel.</p>
-
-<h4>Launch a flavor-specific activity from the main activity</h4>
-
-<p>Since the flavor-specific activity (<code>SecondActivity</code>) has the same package name and
-activity name in both flavors, you can launch it from the main activity, which is common to all
-flavors. To modify the main activity:</p>
-
-<ol>
- <li><p>Edit <code>activity_main.xml</code> and add a new button to
- <code>MainActivity</code>:</p>
- <p><pre>
-<LinearLayout ...>
- ...
- <Button
- android:id="@+id/button2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/button2"
- android:onClick="onButton2Clicked"/>
-</LinearLayout>
-</pre></p>
- </li>
- <li>Click on the areas marked in red in the layout file and press <strong>Alt</strong>+
- <strong>Enter</strong>. Follow the suggestions from Android Studio to add a new string
- resource with value “Open Second Activity” and an <code>onButton2Clicked</code> method to
- <code>MainActivity</code>.</li>
- <li><p>Add the following code to the <code>onButton2Clicked</code> method of
- <code>MainActivity</code>:</p>
- <p><pre>
-public void onButton2Clicked(View view) {
- Intent intent = new Intent(this, SecondActivity.class);
- startActivity(intent);
-}
-</pre></p>
- </li>
- <li><p>Edit the app's manifest to include a reference to <code>SecondActivity</code>:</p>
- <p><pre>
-<manifest ...>
- <application ...>
- ...
- <activity
- android:name="com.buildsystemexample.app.SecondActivity"
- android:label="@string/title_activity_second" >
- </activity>
- </application>
-</manifest>
-</pre></p>
- </li>
-</ol>
-
-
-<h4>Build types </h4>
-<p>Build types represent the build packaging versions generated for each app package. By default,
-the debug and release build types are provided.
-</p>
-
-<pre>
-...
-android {
- ...
- defaultConfig { ... }
- signingConfigs { ... }
- buildTypes { ... }
- productFlavors {...}
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- debug {
- debuggable true
- }
- }
-}
-...
-</pre>
-
-<p class="note"><strong>Note:</strong> Although only the <em>release</em> build type appears in
-the default <strong>build.gradle</strong> file, both the release and debug build types are
-applied to each build. </p>
-
-<p>In this example, the product flavors and build types create the following build variants:
-<ul>
-<li>demoDebug</li>
-<li>demoRelease</li>
-<li>fullDebug</li>
-<li>fullRelease</li>
-</ul>
-
-<p>To build this example, click the <strong>Build</strong> menu option in Android Studio or invoke
-the <code>assemble</code> task from the command line. </p>
-
-<p class="note"><strong>Note:</strong> The <strong>Build > Make Project</strong> option compiles
-all the source files in the entire project that have been modified since the last compilation. The
-<strong>Build > Rebuild Project</strong> option recomplies all the source files in the project.</p>
-
-<p>Separate output folders are created for each build variant. </p>
diff --git a/docs/html/tools/building/index.jd b/docs/html/tools/building/index.jd
deleted file mode 100644
index b5a56c0..0000000
--- a/docs/html/tools/building/index.jd
+++ /dev/null
@@ -1,40 +0,0 @@
-page.title=Building and Running Overview
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/building/building-studio.html">
- Building Your Project from Android Studio</a></li>
- <li><a href="{@docRoot}tools/building/building-cmdline.html">
- Building Your Project from the Command Line</a></li>
- <li><a href="{@docRoot}sdk/installing/studio-build.html">
- Build System</a></li>
- </ol>
-</div>
-</div>
-
-
-<p>The Android build process provides project and module build settings so that
-your Android modules are compiled and packaged into <code>.apk</code> files, the containers
-for your application binaries, based on your build settings. The apk file for each app contains all
-of the information necessary to run your application on a device or emulator, such as compiled
-<code>.dex</code> files (<code>.class</code> files converted to Dalvik byte code), a binary version
-of the <code>AndroidManifest.xml</code> file, compiled resources (<code>resources.arsc</code>) and
-uncompiled resource files for your application.</p>
-
-<p>To run an application on an emulator or device, the application must be signed using debug or
-release mode. You typically want to sign your application in debug mode when you develop and test
-your application, because the build system uses a debug key with a known password so you do not have
-to enter it every time you build. When you are ready to release the application to Google
-Play, you must sign the application in release mode, using your own private key.</p>
-
-<p>If you are using Android development tools, the build system can sign the application for you
-when build your app for debugging. You must obtain a certificate to sign your app when you build
-and app for release. For more information on signing applications, see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-<p>The following diagram depicts the components involved in building and running an application:</p>
-
-<img src="{@docRoot}images/build-simplified.png" />
diff --git a/docs/html/tools/building/manifest-merge.jd b/docs/html/tools/building/manifest-merge.jd
deleted file mode 100644
index 2253584..0000000
--- a/docs/html/tools/building/manifest-merge.jd
+++ /dev/null
@@ -1,515 +0,0 @@
-page.title=Manifest Merging
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#merge-rules">Merge Conflict Rules</a></li>
- <li><a href="#markers-selectors">Merge Conflict Markers and Selectors</a></li>
- <li><a href="#inject-values">Injecting Build Values into a Manifest</a></li>
- <li><a href="#merge-prodflavorsGroups">Manifest Merging Across Product Flavor Groups</a></li>
- <li><a href="#implicit-permissions">Implicit Permissions</a></li>
- <li><a href="#merge-errors">Handling Manifest Merge Build Errors</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a></li>
- <li><a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a> </li>
- </ol>
-
-</div>
-</div>
-
-
-<p>With Android Studio and <a href="http://www.gradle.org">Gradle</a>-based builds, each app can
-contain manifest files in multiple locations, such as the <code>src/main/</code> folder for
-the <code>productFlavor</code>, libraries, Android ARchive (AAR) bundles of Android Library
-projects, and dependencies. During the build process, manifest merging combines the settings from
-the various <code>AndroidManifest.xml</code> files included in your app into a single, generated APK
-manifest file for app packaging and distribution. Manifest settings are merged based on the manifest
-priority, determined by the manifest's file location. Building your app merges the
-manifest elements, attributes, and sub-elements from these manifests for the specified
-<a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">build variant</a>.</p>
-
-
-<h2 id="merge-rules">Merge Conflict Rules</h2>
-<p>Merge conflicts occur when merged manifests contain the same manifest element but with a
-different attribute value that does not resolve based on the default merge conflict rules.
-<a href="#markers-selectors">Conflict markers and selectors</a> can also define custom merge rules,
-such as allowing an imported library to have a <code>minSdkVersion</code> higher than the
-version defined in the other higher priority manifests. </p>
-
-<p>The manifest merge priority determines which manifest settings are retained in merge conflicts,
-with the settings in higher priority manifest overwriting those in lower priority manifests.
-The following list details which manifest settings are are the highest priority during the merge
-process:</p>
-
-<ul>
- <li>Highest priority: <code>buildType</code> manifest settings </li>
- <li>Higher priority: <code>productFlavor</code> manifest settings </li>
- <li>Medium priority: Manifests in the <code>src/main/</code> directory of an app project</li>
- <li>Low priority: Dependency and library manifest settings </li>
-</ul>
-
-<p>Manifest merge conflicts are resolved at the XML node and
-attribute levels based on the following merge rules. </p>
-
-<table>
- <tr>
- <th scope="col">High Priority Element</th>
- <th scope="col">Low Priority Element</th>
- <th scope="col">Manifest Merge Result</th>
- </tr>
- <tr>
- <td rowspan="3">no attribute</td>
- <td>no attribute</td>
- <td>no attribute</td>
- </tr>
- <tr>
-
- <td>attribute set to default</td>
- <td>default attribute</td>
- </tr>
- <tr>
-
- <td>attribute set to non-default </td>
- <td>low priority attribute</td>
- </tr>
- <tr>
- <td>attribute set to default</td>
- <td rowspan="2">no attribute</td>
- <td>default attribute</td>
- </tr>
- <tr>
- <td>attribute set to non-default </td>
-
- <td>high priority attribute</td>
- </tr>
- <tr>
- <td>attribute set to default</td>
- <td>attribute set to default</td>
- <td>default attribute</td>
- </tr>
- <tr>
- <td>attribute set to default</td>
- <td>attribute set to non-default </td>
- <td>low priority attribute</td>
- </tr>
- <tr>
- <td>attribute set to non-default</td>
- <td>attribute set to default</td>
- <td>high priority attribute</td>
- </tr>
- <tr>
- <td>attribute set to non-default</td>
- <td>attribute set to non-default </td>
- <td>Merge if settings match, otherwise causes conflict error.</td>
- </tr>
- </table>
-
-
-
-<p>Exceptions to the manifest merge rules: </p>
-
-<ul>
- <li>The <code>uses-feature android:required;</code> and
- <code>uses-library android:required</code> elements default to <code>true</code> and use
- an <em>OR</em> merge so that any required feature or library is included in the generated APK. </li>
-
- <li>If not declared, the
- <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a>
- elements, <code>minSdkVersion</code> and
- <code>targetSdkVersion</code>, default to a value of 1. When
- merge conflicts occur, the value in the higher priority manifest version is used.</li>
-
- <li>Importing a library with a <code>minSdkVersion</code> value higher than the app's
- <code>src/main/</code> manifest manifest generates an error unless
- the <code>overrideLibrary</code> conflict marker is used.
-
- <p class="note"><strong>Note:</strong> If not explicitly declared, the <code>targetSdkVersion</code>
- defaults to the <code>minSdkVersion</code> value. When no <code><uses-sdk></code> element is
- present in any manifest or the <code>build.gradle</code> file, the
- <code>minSdkVersion</code> defaults to 1.</p> </li>
-
- <li>When importing a library with a <code>targetSdkVersion</code> value lower than the app's
- <code>src/main/</code> manifest, the manifest merge
- process explicitly grants permissions and ensures that the imported library functions properly. </li>
-
- <li>The <code>manifest</code> element only merges with child manifest elements. </li>
-
- <li>The <code>intent-filter</code> element is never changed and is always added to the common
- parent node in the merged manifest. </li>
-</ul>
-
-<p class="caution"><strong>Important:</strong> After the manifests are merged, the build process
-overrides the final manifest settings with any settings that are also in the
-<code>build.gradle</code> file. For more details, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>. </p>
-
-
-
-<h2 id="markers-selectors">Merge Conflict Markers and Selectors</h2>
-<p>Manifest markers and selectors override the default merge rules through
-specific conflict resolutions. For example, use a conflict marker to
-merge a library manifest with a higher <code>minSdkVersion</code> value than the higher priority
-manifest, or to merge manifests with the same activity but different <code>android:theme</code>
-values. </p>
-
-<h3 id="conflict-markers">Merge Conflict Markers</h3>
-<p>A merge conflict marker is a special attribute in the Android tools namespace that defines a
-specific merge conflict resolution. Create a conflict marker to avoid a merge conflict error for
-conflicts not resolved by the default merge rules. Supported merge conflict markers include:</p>
-
-<dl>
- <dt><code>merge</code></dt>
- <dd>Merges attributes when there are no conflicts with the merge rules. The default merge
- action.</dd>
- <dt><code>replace</code></dt>
- <dd>Replaces attributes in the lower priority manifest with those from the higher priority
- manifest.</dd>
- <dt><code>strict</code></dt>
- <dd>Sets the merge policy level so that merged elements with same attributes, but different
- values generate a build failure, unless resolved through the conflict rules.</dd>
- <dt><code>merge-only</code></dt>
- <dd>Allows merge actions for only lower priority attributes.</dd>
- <dt><code>remove</code></dt>
- <dd>Removes the specified lower priority element from the merged manifest.</dd>
- <dt><code>remove-All</code></dt>
- <dd>Removes all lower priority elements of the same node type from the merged manifest.</dd>
-</dl>
-
-
-<p>By default, the manifest merge process applies the <code>merge</code> conflict marker to
-the node level. All declared manifest attributes default to a <code>strict</code>
-merging policy. </p>
-
-<p>To set a merge conflict marker, first declare the namespace in the
-<code>AndroidManifest.xml</code> file. Then, enter the merge conflict marker in the manifest to
-specify a custom merge conflict action. This example inserts the <code>replace</code> marker to
-set a replace action to resolve conflicts between the <code>android:icon</code> and
-<code>android:label</code> manifest elements. </p>
-
-<pre>
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.tests.flavorlib.app"
- xmlns:tools="http://schemas.android.com/tools">
-
- <application
- android:icon="@drawable/icon"
- android:label="@string/app_name"
- tools:replace="icon, label">
- ...
-
-</manifest>
-
-</pre>
-
-
-<h4>Marker attributes</h4>
-<p>Conflict markers use <code>tools:node</code> and <code>tools:attr</code> attributes to
-restrict merge actions at the XML node or attribute level. </p>
-
-<p>The <code>tools:attr</code> markers use only the <code>restrict</code>, <code>remove</code>, and
-<code>replace</code> merge actions. Multiple <code>tools:attr</code> marker values can be applied
-to a specific element. For example, use <code>tools:replace="icon, label, theme"</code> to replace
-lower priority <code>icon</code>, <code>label</code>, and <code>theme</code> attributes. </p>
-
-
-<h4>Merge conflict marker for imported libraries</h4>
-<p>The <code>overrideLibrary</code> conflict marker applies to the <code><uses-sdk></code>
-manifest declaration and is used to import a library even though the library's
-<code><uses-sdk></code> values, such as <code>minSdkVersion</code>
-are set to different values than those in the other higher priority manifests. </p>
-
-<p>Without this marker, library manifest merge conflicts from the
-<code><uses-sdk></code> values cause the merge process to fail.</p>
-
-<p>This example applies the <code>overrideLibrary</code> conflict marker to resolve the merge
-conflict between <code>minSdkVersion</code> values in the <code>src/main/</code> manifest and an
-imported library manifest.
-
-
-<p><code>src/main/</code> manifest: </p>
-<pre>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.example.app"
- xmlns:tools="http://schemas.android.com/tools">
- ...
- <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="2"
- tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
- ...
-</pre>
-
-<p>Library manifest: </p>
-
-<pre>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.lib1">
- ...
- <uses-sdk android:minSdkVersion="4" />
- ...
- </manifest>
-</pre>
-
-<p class="note"><strong>Note:</strong> The default merge process does not allow importing a library
-with a higher <code>minSdkVersion</code> than the app's <code>src/main/</code> manifest unless
-the <code>overrideLibrary</code> conflict marker is used. </p>
-
-
-
-<h3 id="marker-selectors">Marker Selectors</h3>
-<p>Marker selectors limit a merge action to a specific lower priority manifest. For example, a
-marker selector can be used to remove a permission from only one library, while allowing the
-same permission from other libraries.</p>
-
-<p>This example uses the <code>tools:node</code> marker to remove the <code>permisionOne</code>
-attribute, while the <code>tools:selector</code> selector specifies the specific library as
-<em>com.example.lib1</em>. The <code>permisionOne</code> permission is filtered from only the
-<code>lib1</code> library manifests. </p>
-
-<pre>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.example.app"
- xmlns:tools="http://schemas.android.com/tools">
- ...
- <permission
- android:name="permissionOne"
- tools:node="remove"
- tools:selector="com.example.lib1">
- ...
-</pre>
-
-
-
-<h2 id="inject-values">Injecting Build Values into a Manifest</h2>
-<p>Manifest merging can also be configured to use manifest placeholders to inject
-property values from the <code>build.gradle</code> file into the manifest attributes. </p>
-
-<p>Manifest placeholders use the syntax <code>${name}</code> for attribute values, where
-<code>name</code> is the injected <code>build.gradle</code> property. The <code>build.gradle</code>
-file uses the <code>manifestPlaceholders</code> property to define the placeholder values. </p>
-
-<p class="note"><strong>Note:</strong> Unresolved placeholder names in apps cause build failures.
-Unresolved placeholder names in libraries generate warnings and need to be resolved when importing
-the library into an app.</p>
-
-<p>This example shows the manifest placeholder <code>${applicationId}</code> used to inject the
-<code>build.gradle</code> <code>applicationId</code> property value in to <code>android:name</code>
-attribute value. </p>
-
-<p class="note"><strong>Note:</strong> Android Studio provides a default
-<code>${applicationId}</code> placeholder for the <code>build.gradle</code>
-<code>applicationId</code> value that is not shown in the build file.
-When building an AAR (Android ARchive) package for library modules, do not provide an
-automatic <code>@{applicationId}</code> placeholder in the
-<a href="{@docRoot}tools/building/manifest-merge.html">manifest merge</a> settings.
-Instead, use a different placeholder, such as <code>@{libApplicationId}</code> and
-provide a value for it if you want to include application Ids in the archive library. </p>
-
-
-<p>Manifest entry:</p>
-
-<pre>
-
-<activity
-android:name=".Main">
- <intent-filter>
- <action android:name="${applicationId}.foo">
- </action>
-</intent-filter>
-</activity>
-
-</pre>
-
-
-<p>Gradle build file:</p>
-
-<pre>
-android {
- compileSdkVersion 22
- buildToolsVersion "22.0.1"
-
- productFlavors {
- flavor1 {
- applicationId = "com.mycompany.myapplication.productFlavor1"
- }
-}
-
-</pre>
-
-<p>Merged manifest value: </p>
-
-<pre>
-<action android:name="com.mycompany.myapplication.productFlavor1.foo">
-</pre>
-
-
-<p>The manifest placeholder syntax and build file <code>manifestPlaceholders</code>
-property can be used to inject other manifest values. For properties other than the
-<code>applicationId</code>, the <code>manifestPlaceholders</code> property is explicitly declared
-in the <code>build.gradle</code> file. This example shows the manifest placeholder for injecting
-<code>activityLabel</code> values.</p>
-
-<p>Gradle build file: </p>
-
-<pre>
-android {
- defaultConfig {
- manifestPlaceholders = [ activityLabel:"defaultName"]
- }
- productFlavors {
- free {
- }
- pro {
- manifestPlaceholders = [ activityLabel:"proName" ]
- }
- }
-
-</pre>
-
-<p>Placeholder in the manifest file: </p>
-
-<pre>
-<activity android:name=".MainActivity" android:label="${activityLabel}" >
-</pre>
-
-<p class="note"><strong>Note:</strong> The placeholder value supports partial value injection,
-for example <code>android:authority="com.acme.${localApplicationId}.foo"</code>. </p>
-
-
-
-<h2 id="merge-prodflavorsGroups">Manifest Merging Across Product Flavor Groups</h2>
-
-<p>When using the <code>GroupableProductFlavor</code> property, the manifest merge
-priority of any manifests in the product flavor groups follows the order in which the
-product flavor groups are listed in the build file. The manifest merge process creates a single
-merged manifest for the product flavor groups based on the configured build variant. </p>
-
-<p>For example, if a build variant references the product flavors <code>x86</code>,
-<code>mdpi</code>, <code>21</code>, and <code>paid</code> from the respective product flavor
-groups <code>ABI</code>, <code>Density</code>, <code>API</code>, and <code>Prod</code>, listed
-in this order in the <code>build.gradle</code> file, then the manifest merge process merges the
-manifests in this priority order, which follows how the product flavors are listed in the build
-file.</p>
-
-<p>To illustrate this example, the following table shows how the product flavors are listed for
-each product flavor group. This combination of product flavors and groups defines the
-build variant. </p>
-<table>
- <tr>
- <th scope="col">Product Flavor Group</th>
- <th scope="col">Product Flavor</th>
- <tr>
- <td>ABI</td>
- <td>x86</td>
- </tr>
- <tr>
- <td>density</td>
- <td>mdpi</td>
- </tr>
- <tr>
- <td>API</td>
- <td>22</td>
- </tr>
- <tr>
- <td>prod</td>
- <td>paid</td>
- </tr>
-</table>
-
-<p>Manifest merge order:</p>
-
- <ul>
- <li>prod-paid AndroidManifest.xml (lowest priority) merges into API-22 AndroidManifest.xml</li>
- <li>API-22 AndroidManifest.xml merges into density-mpi AndroidManifest.xml</li>
- <li>density-mpi AndroidManifest.xml merges into ABI-x86 AndroidManifest.xml (highest priority)</li>
- </ul>
-
-
-<h2 id="implicit-permissions">Implicit Permissions</h2>
-<p>Importing a library that targets an Android runtime with implicitly
-granted permissions may automatically add the permissions to the resulting merged manifest.
-For example, if an application with a <code>targetSdkVersion</code> of 16 imports a library with a
-<code>targetSdkVersion</code> of 2, Android Studio adds the <code>WRITE_EXTERNAL_STORAGE</code>
-permission to ensure permission compatibility across the SDK versions.
-
-<p class="note"><strong>Note:</strong> More recent Android releases replace implicit
-permissions with permission declarations.</p>
-
-
-This table lists the importing library versions and the declared permissions.
-</p>
-
- <table>
- <tr>
- <th>Importing this library version</th>
- <th>Declares this permission in the manifest </th>
- </tr>
- <tr>
- <td><code>targetSdkVersion</code> < 2 </td>
- <td><code>WRITE_EXTERNAL_STORAGE</code> </td>
- </tr>
- <tr>
- <td><code>targetSdkVersion</code> < 4 </td>
- <td><code>WRITE_EXTERNAL_STORAGE</code>, <code>READ_PHONE_STATE</code> </td>
- </tr>
- <tr>
- <td>Declared <code>WRITE_EXTERNAL_STORAGE</code></td>
- <td><code>READ_EXTERNAL_STORAGE</code></td>
- </tr>
- <tr>
- <td><code>targetSdkVersion</code> < 16 and using the <code>READ_CONTACTS</code>
- permission</td>
- <td><code>READ_CALL_LOG</code></td>
- </tr>
- <tr>
- <td><code>targetSdkVersion</code> < 16 and using the <code>WRITE_CONTACTS</code>
- permission</td>
- <td><code>WRITE_CALL_LOG</code></td>
- </tr>
- </table>
-
-
-
-<h2 id="merge-errors">Handling Manifest Merge Build Errors</h2>
-<p>During the build process, the manifest merge process stores a record of each merge transaction
-in the <code>manifest-merger-<productFlavor>-report.txt</code> file in the module
-<code>build/outputs/logs</code> folder. A different log file is generated for each of the
-module's build variants. </p>
-
-<p>When a manifest merge build error occurs, the merge process records the error message
-describing the merge conflict in the log file. For example, the
-<code>android:screenOrientation</code> merge conflict between the following manifests causes
-a build error. </p>
-
-<p>Higher priority manifest declaration: </p>
-
-<pre>
-<activity
- android:name="com.foo.bar.ActivityOne"
- android:screenOrientation="portrait"
- android:theme="@theme1"/>
-</pre>
-
-<p>Lower priority manifest declaration: </p>
-
-<pre>
-<activity
- android:name="com.foo.bar.ActivityOne"
- android:screenOrientation="landscape"/>
-</pre>
-
-<p>Error log:</p>
-
-<pre>
-/project/app/src/main/AndroidManifest.xml:3:9 Error:
- Attribute activity@screenOrientation value=(portrait) from AndroidManifest.xml:3:9
- is also present at flavorlib:lib1:unspecified:3:18 value=(landscape)
- Suggestion: add 'tools:replace="icon"' to <activity> element at AndroidManifest.xml:1:5 to override
-</pre>
-
-
diff --git a/docs/html/tools/building/multidex.jd b/docs/html/tools/building/multidex.jd
deleted file mode 100644
index 7d05fb9..0000000
--- a/docs/html/tools/building/multidex.jd
+++ /dev/null
@@ -1,488 +0,0 @@
-page.title=Building Apps with Over 64K Methods
-page.tags="65536","references","max","65k","dex","64k","multidex","multi-dex","methods"</p>
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#about">
- About the 64K Reference Limit</a>
- <ol>
- <li><a href="#mdex-pre-l">Multidex support prior to Android 5.0</a></li>
- <li><a href="#mdex-on-l">Multidex support for Android 5.0 and higher</a></li>
- </ol>
- </li>
- <li><a href="#avoid">
- Avoiding the 64K Limit</a></li>
- <li><a href="#mdex-gradle">
- Configuring Your App for Multidex with Gradle</a>
- <ol>
- <li><a href="#limitations">
- Limitations of the multidex support library</a></li>
- </ol>
- </li>
- <li><a href="#dev-build">
- Optimizing Multidex Development Builds</a>
- <ol>
- <li><a href="#variants-studio">
- Using Build Variants in Android Studio</a></li>
- </ol>
- </li>
- <li><a href="#testing">
- Testing Multidex Apps</a></li>
- </ol>
-
- <h2>See Also</h2>
- <ol>
- <li><a href="{@docRoot}tools/help/proguard.html">ProGuard</a>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- As the Android platform has continued to grow, so has the size of Android apps. When your
- application and the libraries it references reach a certain size, you encounter build errors that
- indicate your app has reached a limit of the Android app build architecture. Earlier versions of
- the build system report this error as follows:
-</p>
-
-<pre>
-Conversion to Dalvik format failed:
-Unable to execute dex: method ID not in [0, 0xffff]: 65536
-</pre>
-
-<p>
- More recent versions of the Android build system display a different error, which is an
- indication of the same problem:
-</p>
-
-<pre>
-trouble writing output:
-Too many field references: 131000; max is 65536.
-You may try using --multi-dex option.
-</pre>
-
-<p>
- Both these error conditions display a common number: 65,536. This number is significant in that
- it represents the total number of references that can be invoked by the code within a single
- Dalvik Executable (dex) bytecode file. If you have built an Android app and received this error,
- then congratulations, you have a lot of code! This document explains how to move past this
- limitation and continue building your app.
-</p>
-
-<p class="note">
- <strong>Note:</strong> The guidance provided in this document supersedes the guidance given in
- the Android Developers blog post <a href=
- "http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html">Custom Class
- Loading in Dalvik</a>.
-</p>
-
-
-<h2 id="about">About the 64K Reference Limit</h2>
-
-<p>
- Android application (APK) files contain executable bytecode files in the form
- of <a href="https://source.android.com/devices/tech/dalvik/">Dalvik</a>
- Executable (DEX) files, which contain the compiled code used to run your app.
- The Dalvik Executable specification limits the total number of methods that
- can be referenced within a single DEX file to 65,536—including Android
- framework methods, library methods, and methods in your own code. In the
- context of computer science, the term <a class="external-link" href=
- "https://en.wikipedia.org/wiki/Kilo-"><em>Kilo, K</em></a>, denotes 1024 (or
- 2^10). Because 65,536 is equal to 64 X 1024, this limit is referred to as the
- '64K reference limit'.
-</p>
-
-<p>
- Getting past this limit requires that you configure your app build process to
- generate more than one DEX file, known as a <em>multidex</em> configuration.
-</p>
-
-<h3 id="mdex-pre-l">Multidex support prior to Android 5.0</h3>
-
-<p>
- Versions of the platform prior to Android 5.0 (API level 21) use the Dalvik
- runtime for executing app code. By default, Dalvik limits apps to a single
- classes.dex bytecode file per APK. In order to get around this limitation,
- you can use the <a href=
- "{@docRoot}tools/support-library/features.html#multidex">multidex support
- library</a>, which becomes part of the primary DEX file of your app and then
- manages access to the additional DEX files and the code they contain.
-</p>
-
-<p class="note">
- <strong>Note:</strong> If your project is configured for multidex with
- <code>minSdkVersion 20</code> or lower, and you deploy to target devices
- running Android 4.4 (API level 20) or lower, Android Studio disables <a href=
- "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a>.
-</p>
-
-<h3 id="mdex-on-l">Multidex support for Android 5.0 and higher</h3>
-
-<p>
- Android 5.0 (API level 21) and higher uses a runtime called ART which
- natively supports loading multiple dex files from application APK files. ART
- performs pre-compilation at application install time which scans for
- classes(..N).dex files and compiles them into a single .oat file for
- execution by the Android device. For more information on the Android 5.0
- runtime, see <a href=
- "https://source.android.com/devices/tech/dalvik/art.html">Introducing
- ART</a>.
-</p>
-
-<p class="note">
- <strong>Note:</strong> While using <a href=
- "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a>,
- Android Studio automatically configures your app for multidex when your app's
- <code>minSdkVersion</code> is set to 21 or higher. Because Instant Run only
- works with the debug version of your app, you still need to configure your
- release build for multidex to avoid the 64K limit.
-</p>
-
-<h2 id="avoid">Avoiding the 64K Limit</h2>
-
-<p>
- Before configuring your app to enable use of 64K or more method references, you should take steps
- to reduce the total number of references called by your app code, including methods defined by
- your app code or included libraries. The following strategies can help you avoid hitting the dex
- reference limit:
-</p>
-
-<ul>
- <li>
- <strong>Review your app's direct and transitive dependencies</strong> - Ensure any large library
- dependency you include in your app is used in a manner that outweighs the amount of code
- being added to the application. A common anti-pattern is to include a very large library
- because a few utility methods were useful. Reducing your app code dependencies can often help
- you avoid the dex reference limit.
- </li>
- <li>
- <strong>Remove unused code with ProGuard</strong> - Configure the <a href=
- "{@docRoot}tools/help/proguard.html">ProGuard</a> settings for your app to run ProGuard and
- ensure you have shrinking enabled for release builds. Enabling shrinking ensures you
- are not shipping unused code with your APKs.
- </li>
-</ul>
-
-
-<p>
- Using these techniques can help you avoid the build configuration changes required to enable more
- method references in your app. These steps can also decrease the size of your APKs, which is
- particularly important for markets where bandwidth costs are high.
-</p>
-
-
-<h2 id="mdex-gradle">Configuring Your App for Multidex with Gradle</h2>
-
-<p>
- The Android plugin for Gradle available in Android SDK Build Tools 21.1 and higher supports
- multidex as part of your build configuration. Make sure you update the Android SDK Build Tools
- tools and the Android Support Repository to the latest version using the <a href=
- "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> before attempting to configure your app
- for multidex.
-</p>
-
-<p>
- Setting up your app development project to use a multidex configuration requires that you make a
- few modifications to your app development project. In particular you need to perform the
- following steps:
-</p>
-
-<ul>
- <li>Change your Gradle build configuration to enable multidex</li>
- <li>Modify your manifest to reference the {@link android.support.multidex.MultiDexApplication}
- class</li>
-</ul>
-
-<p>
- Modify the module-level <code>build.gradle</code> file configuration to
- include the support library and enable multidex output, as shown in the
- following code snippet:
-</p>
-
-<pre>
-android {
- compileSdkVersion 21
- buildToolsVersion "21.1.0"
-
- defaultConfig {
- ...
- minSdkVersion 14
- targetSdkVersion 21
- ...
-
- // Enabling multidex support.
- multiDexEnabled true
- }
- ...
-}
-
-dependencies {
- compile 'com.android.support:multidex:1.0.0'
-}
-</pre>
-
-<p>
- In your manifest add the {@link android.support.multidex.MultiDexApplication} class from the
- multidex support library to the application element.
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.android.multidex.myapplication">
- <application
- ...
- android:name="android.support.multidex.MultiDexApplication">
- ...
- </application>
-</manifest>
-</pre>
-
-<p>
- When these configuration settings are added to an app, the Android build tools construct a
- primary dex (classes.dex) and supporting (classes2.dex, classes3.dex) as needed. The build system
- will then package them into an APK file for distribution.
-</p>
-
-<p class="note">
- <strong>Note:</strong> If your app uses extends the {@link android.app.Application} class, you
- can override the attachBaseContext() method and call MultiDex.install(this) to enable multidex.
- For more information, see the {@link android.support.multidex.MultiDexApplication} reference
- documentation.
-</p>
-
-<h3 id="limitations">Limitations of the multidex support library</h3>
-
-<p>
- The multidex support library has some known limitations that you should be aware of and test for
- when you incorporate it into your app build configuration:
-</p>
-
-<ul>
- <li>The installation of .dex files during startup onto a device's data partition is complex and
- can result in Application Not Responding (ANR) errors if the secondary dex files are large. In
- this case, you should apply code shrinking techniques with ProGuard to minimize the size of dex
- files and remove unused portions of code.
- </li>
-
- <li>Applications that use multidex may not start on devices that run versions of the platform
- earlier than Android 4.0 (API level 14) due to a Dalvik linearAlloc bug (Issue <a href=
- "http://b.android.com/22586">22586</a>). If you are targeting API levels earlier than 14, make
- sure to perform testing with these versions of the platform as your application can have issues
- at startup or when particular groups of classes are loaded. Code shrinking can reduce or possibly
- eliminate these potential issues.
- </li>
-
- <li>Applications using a multidex configuration that make very large memory allocation
- requests may crash during run time due to a Dalvik linearAlloc limit (Issue <a href=
- "http://b.android.com/78035">78035</a>). The allocation limit was increased in Android 4.0 (API
- level 14), but apps may still run into this limit on Android versions prior to
- Android 5.0 (API level 21).
- </li>
-
- <li>There are complex requirements regarding what classes are needed in the primary dex file when
- executing in the Dalvik runtime. The Android build tooling updates handle the Android
- requirements, but it is possible that other included libraries have additional dependency
- requirements including the use of introspection or invocation of Java methods from native code.
- Some libraries may not be able to be used until the multidex build tools are updated to allow you
- to specify classes that must be included in the primary dex file.
- </li>
-</ul>
-
-
-<h2 id="dev-build">Optimizing Multidex Development Builds</h2>
-
-<p>
- A multidex configuration requires significantly increased build processing time because the build
- system must make complex decisions about what classes must be included in the primary DEX file
- and what classes can be included in secondary DEX files. This means that routine builds performed
- as part of the development process with multidex typically take longer and can potentially slow
- your development process.
-</p>
-
-<p>
- In order to mitigate the typically longer build times for multidex output, you should create two
- variations on your build output using the Android plugin for Gradle
- <a href="http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-flavors">
- {@code productFlavors}</a>: a development flavor and a production flavor.
-</p>
-
-<p>
- For the development flavor, set a minimum SDK version of 21. This setting generates multidex
- output much faster using the ART-supported format. For the release flavor, set a minimum SDK
- version which matches your actual minimum support level. This setting generates a multidex APK
- that is compatible with more devices, but takes longer to build.
-</p>
-
-<p>
- The following build configuration sample demonstrates the how to set up these flavors in a Gradle
- build file:
-</p>
-
-<pre>
-android {
- productFlavors {
- // Define separate dev and prod product flavors.
- dev {
- // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
- // to pre-dex each module and produce an APK that can be tested on
- // Android Lollipop without time consuming dex merging processes.
- minSdkVersion 21
- }
- prod {
- // The actual minSdkVersion for the application.
- minSdkVersion 14
- }
- }
- ...
- buildTypes {
- release {
- runProguard true
- proguardFiles getDefaultProguardFile('proguard-android.txt'),
- 'proguard-rules.pro'
- }
- }
-}
-dependencies {
- compile 'com.android.support:multidex:1.0.0'
-}
-</pre>
-
-<p>
- After you have completed this configuration change, you can use the <code>devDebug</code> variant
- of your app, which combines the attributes of the <code>dev</code> productFlavor and the
- <code>debug</code> buildType. Using this target creates a debug app with proguard disabled,
- multidex enabled, and minSdkVersion set to Android API level 21. These settings cause the Android
- gradle plugin to do the following:
-</p>
-
-<ol>
- <li>Build each module of the application (including dependencies) as separate dex files. This is
- commonly referred to as pre-dexing.
- </li>
-
- <li>Include each dex file in the APK without modification.
- </li>
-
- <li>Most importantly, the module dex files will not be combined, and so the long-running
- calculation to determine the contents of the primary dex file is avoided.
- </li>
-</ol>
-
-<p>
- These settings result in fast, incremental builds, because only the dex files of modified modules
- are recomputed and repackaged into the APK file. The APK that results from these builds can be
- used to test on Android 5.0 devices only. However, by implementing the configuration as a flavor,
- you preserve the ability to perform normal builds with the release-appropriate minimum SDK level
- and proguard settings.
-</p>
-
-<p>
- You can also build the other variants, including a <code>prodDebug</code> variant
- build, which takes longer to build, but can be used for testing outside of development.
- Within the configuration shown, the <code>prodRelease</code> variant would be the final testing
- and release version. If you are executing gradle tasks from the command line, you can use
- standard commands with <code>DevDebug</code> appended to the end (such as <code>./gradlew
- installDevDebug</code>). For more information about using flavors with Gradle tasks, see the
- <a href="http://tools.android.com/tech-docs/new-build-system/user-guide">Gradle Plugin User
- Guide</a>.
-</p>
-
-<p>
- <strong>Tip:</strong> You can also provide a custom manifest, or a custom application class for each
- flavor, allowing you to use the support library MultiDexApplication class, or calling
- MultiDex.install() only for the variants that need it.
-</p>
-
-
-<h3 id="variants-studio">Using Build Variants in Android Studio</h3>
-
-<p>
- Build variants can be very useful for managing the build process when using multidex. Android
- Studio allows you to select these build variants in the user interface.
-</p>
-
-<p>
- To have Android Studio build the "devDebug" variant of your app:
-</p>
-
-<ol>
- <li>Open the <em>Build Variants</em> window from the left-sidebar. The option is located next to
- <em>Favorites</em>.
- </li>
-
- <li>Click the name of the build variant to select a different variant, as shown in Figure 1.
- </li>
-</ol>
-
-<img src="{@docRoot}images/tools/studio-build-variant.png" alt="" height="XXX" id="figure1">
-<p class="img-caption">
- <strong>Figure 1.</strong> Screen shot of the Android Studio left panel showing a build variant.
-</p>
-
-<p class="note">
- <strong>Note</strong>: The option to open this window is only available after you have
- successfully synchronized Android Studio with your Gradle build file using the <strong>Tools >
- Android > Sync Project with Gradle Files</strong> command.
-</p>
-
-
-<h2 id="testing">Testing Multidex Apps</h2>
-
-<p>
- When using instrumentation tests with multidex apps, additional configuration is required to
- enable the test instrumentation. Because the location of code for classes in multidex apps is not
- within a single DEX file, instrumentation tests do not run properly unless configured for
- multidex.
-</p>
-
-<p>
- To test a multidex app with instrumentation tests, configure the
- <a href="{@docRoot}reference/com/android/test/runner/MultiDexTestRunner.html">
- MultiDexTestRunner</a> from the multidex testing support library. The following sample
- {@code build.gradle} file demonstrates how to configure your build to use this test runner:
-</p>
-
-<pre>
-android {
- defaultConfig {
- ...
- testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
- }
-}
-</pre>
-
-<p class="note">
- <strong>Note:</strong> With Android Plugin for Gradle versions lower than 1.1, you need to add
- the following dependency for <code>multidex-instrumentation</code>:
-<pre>
-dependencies {
- androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
- exclude group: 'com.android.support', module: 'multidex'
- }
-}
-</pre>
-</p>
-
-
-<p>
- You may use the instrumentation test runner class directly or extend it to fit your testing
- needs. Alternatively, you can override onCreate in existing instrumentations like this:
-</p>
-
-<pre>
-public void onCreate(Bundle arguments) {
- MultiDex.install(getTargetContext());
- super.onCreate(arguments);
- ...
-}
-</pre>
-
-<p class="note">
- <strong>Note:</strong> Use of multidex for creating a test APK is not currently supported.
-</p>
diff --git a/docs/html/tools/building/plugin-for-gradle.jd b/docs/html/tools/building/plugin-for-gradle.jd
deleted file mode 100644
index aed1af2..0000000
--- a/docs/html/tools/building/plugin-for-gradle.jd
+++ /dev/null
@@ -1,450 +0,0 @@
-page.title=Android Plugin for Gradle
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
- <li><a href="#buildConf">Build Configuration</a></li>
- <li><a href="#buildConv">Build by Convention</a></li>
- <li><a href="#projectModules">Project and Module Settings</a></li>
- <li><a href="#dependencies">Dependencies</a></li>
- <li><a href="#buildTasks">Build Tasks</a></li>
- <li><a href="#gradleWrapper">Gradle Wrapper</a></li>
- <li><a href="#buildVariants">Build Variants</a></li>
-</ol>
-
-<h2>Reference</h2>
-<ul>
- <li>
- <a class="external-link" href="http://google.github.io/android-gradle-dsl">
- Android Plugin DSL</a>
- </li>
-</ul>
-
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}sdk/installing/studio-build.html">
-Build System Overview</a></li>
-<li><a href="{@docRoot}tools/building/index.html">
-Building and Running</a></li>
-<li><a href="{@docRoot}tools/building/building-studio.html">
-Building and Running from Android Studio</a></li>
-</ul>
-
-</div>
-</div>
-
-<p>The Android build system consists of an Android plugin for <em>Gradle</em>.
-<a href="http://www.gradle.org/">Gradle</a> is an advanced build toolkit that manages
-dependencies and allows you to define custom build logic. Android Studio uses a Gradle wrapper
-to fully integrate the Android plugin for Gradle. The Android plugin for Gradle also runs
-independent of Android Studio. This means that you can build your Android apps from within Android
-Studio and from the command line on your machine or on machines where Android Studio is not installed
-(such as continuous integration servers).</p>
-
-<p>The output of the build is the same whether you are building a project from the command line,
-on a remote machine, or using Android Studio.</p>
-
-<h2 id="buildConf">Build Configuration</h2>
-
-<p>The build configuration for your project is defined inside <code>build.gradle</code> files,
-which are plain text files that use the syntax and options from Gradle and the Android plugin
-to configure the following aspects of your build:</p>
-
-<ul>
- <li><em>Build variants</em>. The build system can generate multiple APKs with different
- product and build configurations for the same module. This is useful when you want to
- build different versions of your application without having to create a separate projects
- or modules for each version.</li>
- <li><em>Dependencies</em>. The build system manages project dependencies and supports
- dependencies from your local filesystem and from remote repositories. This prevents you
- from having to search, download, and copy binary packages for your dependencies into your
- project directory.</li>
- <li><em>Manifest entries</em>. The build system enables you to specify values for some
- elements of the manifest file in the build variant configuration. These build values
- override the existing values in the manifest file. This is useful if you want to generate
- multiple APKs for your modules where each of the <code>apk</code> files has a different
- application name, minimum SDK version, or target SDK version. When multiple manifests are
- present, manifest settings are merged in priority of buildType and productFlavor,
- <code>/main</code> manifest, and the library manifests.</li>
- <li><em>Signing</em>. The build system enables you to specify signing settings in the build
- configuration, and it can sign your APKs during the build process.</li>
- <li><em>ProGuard</em>. The build system enables you to specify a different
- <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> rules
- file for each build variant. The build system can run ProGuard to obfuscate your classes
- during the build process.</li>
- <li><em>Testing</em>. For most templates, the build system creates a test directory,
- <em>androidTest</em> and generates a test APK from the test sources in your project, so
- you do not have to create a separate test project. The build system can also run your tests
- during the build process.</li>
-</ul>
-
-<p>Gradle build files use Domain Specific Language (DSL) to describe and manipulate the build logic
-through <em>Groovy</em> syntax. <a href="http://groovy.codehaus.org/">Groovy</a> is a dynamic
-language that you can use to define custom build logic and to interact with the Android-specific
-elements provided by the Android plugin for Gradle.</p>
-
-<h2 id="buildConv">Build by Convention</h2>
-
-<p>The Android Studio build system assumes <em>sensible defaults</em> for the project structure
-and other build options. If your project adheres to these conventions, your Gradle build files are
-very simple. When some of these conventions do not apply to your project, the flexibility of the
-build system allows you to configure almost every aspect of the build process. For example, if
-you need to replace the default source folders in your module directories, you can configure a new
-directory structure in the module's build file. </p>
-
-<h2 id="projectModules">Project and Module Settings</h2>
-
-<p>A <em>project</em> in Android Studio represents the top-level Android development structure.
-Android Studio projects contain project files and one or more application modules. A
-<em>module</em> is a component of your app that you can build, test, or debug independently.
-Modules contain the source code and resources for your apps. Android Studio projects can contain
-several kinds of modules:</p>
-
-<ul>
- <li><em>Android application modules</em> contain application (mobile, TV, Wear, Glass) code and
- may depend on library modules, although many Android apps consist of only one application
- module. The build system generates APK packages for application modules. </li>
- <li><em>Android library modules</em> contain reusable Android-specific code and resources.
- The build system generates an AAR (Android ARchive) package for library modules.</li>
- <li><em>App Engine modules</em> contain code and resources for App Engine integration.</li>
- <li><em>Java library modules</em> contain reusable code. The build system generates a
- JAR package for Java library modules.</li>
-</ul>
-
-<p>Android Studio projects contain a top-level project Gradle build file that allows you to add the
-configuration options common to all application modules in the project. Each application module
-also has its own build.gradle file for build settings specific to that module.</p>
-
-<h3 id="projectBuildFile">Project Build File</h3>
-<p>By default, the project-level Gradle file uses <em>buildscript</em> to define the Gradle
-<em>repositories</em> and <em>dependencies</em>. This allows different projects to use different
-Gradle versions. Supported repositories include JCenter, Maven Central, or Ivy. This example
-declares that the build script uses the JCenter repository and a classpath dependency artifact
-that contains the Android plugin for Gradle version 1.0.1.
-</p>
-<p>
-<pre>
-buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:1.0.1'
-
- // NOTE: Do not place your application dependencies here: they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- jcenter()
- }
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> The SDK location for the Android Studio project is defined in
-the <em>local.properties</em> file in the <code>sdk.dir<sdk location></code> setting or through an
-<code>ANDROID_HOME</code> environment variable.</p>
-
-<h3 id="moduleBuildFile">Module Build File</h3>
-<p>The application module Gradle build file allows you to configure module build settings,
-including overriding the <code>src/main</code> manifest settings and setting custom packaging
-options. </p>
-
-<ul>
- <li>android settings </li>
- <ul>
- <li>compileSdkVersion</li>
- <li>buildToolsVersion</li>
- </ul>
-
- <li>defaultConfig and productFlavors </li>
- <ul>
- <li>manifest properties such as applicationId, minSdkVersion, targetSdkVersion, and test
- information</li>
- </ul>
-
- <li>buildTypes</li>
- <ul>
- <li>build properties such as debuggable, ProGuard enabling, debug signing, version name
- suffix and testinformation</li>
- </ul>
-
- <li>dependencies</li>
-</ul>
-
-<p>This example applies the Android plugin, uses the default configuration to override several
-manifest properties, creates two build types: release and debug, and declares several dependencies.
-</p>
-
-<pre>
-apply plugin: 'com.android.application'
-
-android {
- compileSdkVersion 20
- buildToolsVersion "20.0.0"
-
- defaultConfig {
- applicationId "com.mycompany.myapplication"
- minSdkVersion 13
- targetSdkVersion 20
- versionCode 1
- versionName "1.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- debug {
- debuggable true
- }
- }
-}
-
-dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:20.0.0'
- compile project(path: ':app2, configuration: 'android-endpoints')
-}
-</pre>
-
-
-<p class="note"><strong>Note:</strong> You can inject custom build logic for property values defined
-by a function that gets called by the property, for example:
-<pre>
-def computeVersionName() {
- ...
-}
-
-android {
- defaultConfig {
- versionName computeVersionName()
- ...
- }
-}
-</pre>
-</p>
-
-
-
-<h2 id="dependencies">Dependencies</h2>
-
-<p>The Android Studio build system manages project dependencies and supports module dependencies,
-local binary dependencies, and remote binary dependencies.</p>
-
-<dl>
- <dt><em>Module Dependencies</em></dt>
- <dd><p>An application module can include in its build file a list of other modules it depends on.
- When you build this module, the build system assembles and includes the required
- modules.</p></dd>
- <dt><em>Local Dependencies</em></dt>
- <dd><p>If you have binary archives in your local filesystem that a module depends on, such as
- JAR files, you can declare these dependencies in the build file for that module.</p></dd>
- <dt><em>Remote Dependencies</em></dt>
- <dd><p>When some of your dependencies are available in a remote repository, you do not have
- to download them and copy them into your project. The Android Studio build system supports
- remote dependencies from repositories, such as <a href="http://maven.apache.org/">Maven</a>,
- and dependency managers, such as <a href="http://ant.apache.org/ivy/">Ivy</a>. </p>
- <p>Many popular software libraries and tools are available in public Maven repositories.
- For these dependencies you only have to specify their Maven coordinates, which uniquely
- identify each element in a remote repository. The format for Maven coordinates used in the
- build system is <code>group:name:version</code>. For example, the Maven coordinates for
- version 16.0.1 of the Google Guava libraries are
- <code>com.google.guava:guava:16.0.1</code>.</p>
- <p>The <a href="http://search.maven.org">Maven Central Repository</a> is widely used to
- distribute many libraries and tools.</p>
- </dd>
-</dl>
-
-<h2 id="buildTasks">Build Tasks</h2>
-
-<p>The Android Studio build system defines a hierarchical set of build tasks: the top-level or
-anchor tasks invoke dependent tasks to produce their collective build outcomes. The top-level build
-tasks are:</p>
-
-<dl>
- <dt>assemble </dt>
- <dd><p>Builds the project output. </p></dd>
- <dt>check </dt>
- <dd><p>Runs checks and tests.</p></dd>
- <dt>build </dt>
- <dd><p>Runs both assemble and check. </p></dd>
- <dt>clean </dt>
- <dd><p>Performs the clean.</p></dd>
-</dl>
-
-<p>The Android plugin provides the <em>connectedCheck</em> and <em>deviceCheck</em> tasks
-for checks run on connected, emulated, and remote devices. Gradle tasks can be viewed by clicking
-the Gradle tab</a> in the right margin.</p>
-
-<p>You can view the list of available tasks and invoke any task from Android Studio and from
-the command line, as described in
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>
-and <a href="{@docRoot}tools/building/building-cmdline.html">Build the project from
-the command line</a>.</p>
-
-<h2 id="gradleWrapper">Gradle Wrapper</h2>
-
-<p>Android Studio projects contain the <em>Gradle wrapper</em>, which consists of:</p>
-
-<ul>
- <li>A JAR file</li>
- <li>A properties file</li>
- <li>A shell script for Windows platforms</li>
- <li>A shell script for Mac and Linux platforms</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> You should submit all of these files to your source
-control system.</p>
-
-<p>Using the Gradle wrapper (instead of the local Gradle installation) ensures that
-you always run the version of Gradle defined in the <em>local.properties</em> file. To configure your
-project to use a newer version of Gradle, edit the properties file and specify the new version there.
-</p>
-
-<p>Android Studio reads the properties file from the Gradle wrapper directory inside your project
-and runs the wrapper from this directory, so you can seamlessly work with multiple projects
-that require different versions of Gradle.</p>
-
-<p class="note"><strong>Note:</strong> Android Studio does not use the shell scripts, so any
-changes you make to them won't work when building from the IDE. You should define your custom
-logic inside Gradle build files instead.</p>
-
-<p>You can run the shell scripts to build your project from the command line on your development
-machine and on other machines where Android Studio is not installed.</p>
-
-<p class="caution"><strong>Caution:</strong> When you create a project, only use the Gradle wrapper
-scripts and JAR from a trusted source, such as those generated by Android Studio. </p>
-
-
-<h2 id="buildVariants">Build Variants</h2>
-
-<p>Each version of your app is represented in the build system by a <em>build variant</em>.
-Build variants are combinations of product flavors and build types. Product flavors represent
-product build versions of an app, such as free and paid. Build types represent the build
-packaging versions generated for each app package, such as debug and release. The build system
-generates APKs for each combination of product flavor and build type.</p>
-
-<p>By default, Android Studio defines default configuration settings, <code>defaultConfig</code> in
-the build.gradle file, and two build types (<em>debug</em> and <em>release</em>). This creates two
-build variants, debug and release, and the build system generates an
-APK for each variant. </p>
-
-<p>Adding two product flavors, <em>demo</em> and <em>full</em> along
-with the default build types <em>debug</em> and <em>release</em> generates four build variants,
-each with its own customized configuration:</p>
-
-<ul>
- <li>demoDebug</li>
- <li>demoRelease</li>
- <li>fullDebug</li>
- <li>fullRelease</li>
-</ul>
-
-Resources are merged across the multiple Android application sources:
-<ul>
- <li>Build variants based on the buildType, and productFlavor build settings</li>
- <li>The main sourceSet, generally located in src/main/res</li>
- <li>Library Project dependencies, which contribute resources through the res entry in their aar
- bundle.</li>
-</ul>
-
-<p>The priority of the merge order from lowest to highest is libraries/dependencies -> main src ->
-productFlavor -> buildType.</p>
-
-
-<p>Some projects have complex combinations of features along more than one dimension, but they
-still represent the same app. For example, in addition to having a demo and a full version of the
-app, some games may contain binaries specific to a particular CPU/ABI. The flexibility of
-the build system makes it possible to generate the following build variants for such a project:</p>
-
-<ul>
- <li>x86-demoDebug</li>
- <li>x86-demoRelease</li>
- <li>x86-fullDebug</li>
- <li>x86-fullRelease</li>
- <li>arm-demoDebug</li>
- <li>arm-demoRelease</li>
- <li>arm-fullDebug</li>
- <li>arm-fullRelease</li>
- <li>mips-demoDebug</li>
- <li>mips-demoRelease</li>
- <li>mips-fullDebug</li>
- <li>mips-fullRelease</li>
-</ul>
-
-<p>This project would consist of two build types (<em>debug</em> and <em>release</em>)
-and two <em>dimensions</em> of product flavors, one for app type (demo or full) and one for
-CPU/ABI (x86, ARM, or MIPS). </p>
-
-
-<h3 id="sourceDirectories">Source directories</h3>
-
-<p>To build each version of your app, the build system combines source code and
-resources from:</p>
-
-<ul>
- <li><code>src/main/</code> - the main source directory (the default configuration common to all
- variants)</li>
- <li><code>src/<buildType>/</code> - the <buildType> source directory</li>
- <li><code>src/<productFlavor>/</code> - the <productFlavor> source directory</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> The build type and product flavor source directories are optional,
-as Android Studio does not create these directories for you. You should create these directories
-as you add build types and product flavors to the build configuration files. The build system does not
-use these directories if they are not present.</p>
-
-<p>For projects that do not define any flavors, the build system uses the <em>defaultConfig</em>
-settings, the main app directory and the default build type directories. For example, to generate
-the default <em>debug</em> and <em>release</em> build variants in projects with no product flavors,
-the build system uses:</p>
-<ul>
- <li><code>src/main/</code> (default configuration)</li>
- <li><code>src/release/</code> (build type)</li>
- <li><code>src/debug/</code> (build type)</li>
-</ul>
-
-<p>For projects that define a set of product flavors, the build system merges the build type, product
-flavor and main source directories. For example, to generate the <em>full-debug</em> build variant,
-the build system merges the build type, product flavor and main directories:</p>
-<ul>
- <li><code>src/main/</code> (default configuration)</li>
- <li><code>src/debug/</code> (build type)</li>
- <li><code>src/full/</code> (flavor)</li>
-</ul>
-
-<p>For projects that use flavor dimensions, the build system merges one flavor source directory per
-dimension. For example, to generate the <em>arm-demo-release</em> build variant, the build system
-merges:</p>
-<ul>
- <li><code>src/main/</code> (default configuration)</li>
- <li><code>src/release/</code> (build type)</li>
- <li><code>src/demo/</code> (flavor - app type dimension)</li>
- <li><code>src/arm/</code> (flavor - ABI dimension)</li>
-</ul>
-
-
-<p>The source code from these directories is used together to generate the output for a build
-variant. You can have classes with the same name in different directories as long as those
-directories are not used together in the same variant. </p>
-
-<p>The build system also merges all the manifests into a single manifest, so each build variant
-can define different components or permissions in the final manifest. The manifest merge priority
-from lowest to highest is libraries/dependencies -> main src -> productFlavor -> buildType. </p>
-
-<p>The build system merges all the resources from the all the source directories. If different
-folders contain resources with the same name for a build variant, the priority order is the
-following: build type resources override those from the product flavor, which override the
-resources in the main source directory, which override those in any libraries.</p>
-
-<p class="note"><strong>Note:</strong> Build variants enable you to reuse common activities,
-application logic, and resources across different versions of your app.</p>
-
-
diff --git a/docs/html/tools/debugging/annotations.jd b/docs/html/tools/debugging/annotations.jd
deleted file mode 100644
index fbdb9e4..0000000
--- a/docs/html/tools/debugging/annotations.jd
+++ /dev/null
@@ -1,377 +0,0 @@
-page.title=Improving Code Inspection with Annotations
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#adding-nullness">Adding Nullness Annotations</a></li>
- <li><a href="#res-annotations">Adding Resource Annotations</a></li>
- <li><a href="#thread-annotations">Adding Thread Annotations</a></li>
- <li><a href="#value-constraint">Adding Value Constraint Annotations</a></li>
- <li><a href="#permissions">Adding Permission Annotations</a></li>
- <li><a href="#check-result">Adding CheckResult Annotations</a></li>
- <li><a href="#call-super">Adding CallSuper Annotations</a></li>
- <li><a href="#enum-annotations">Creating Enumerated Annotations</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/help/lint.html">lint (reference)</a></li>
- <li><a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a></li>
- <li><a href="{@docRoot}tools/studio/index.html#annotations">Annotations in Android Studio</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>Using code inspections tools such as <a href="{@docRoot}tools/help/lint.html">lint</a> can help
-you find problems and improve your code, but inspection tools can only infer so much. Android
-resource ids, for example, use an {@code int} to identify strings, graphics, colors and other
-resource types, so inspection tools cannot tell when you have specified a string resource where
-you should have specified a color. This situation means that your app may render incorrectly or
-fail to run at all, even if you use code inspection. </p>
-
-<p>Annotations allow you to provide hints to code inspections tools like {@code lint}, to help
-detect these, more subtle code problems. They are added as metadata tags that you attach to
-variables, parameters, and return values to inspect method return values, passed parameters, and
-local variables and fields. When used with code inspections tools, annotations can help you detect
-problems, such as null pointer exceptions and resource type
-conflicts. </p>
-
-<p>For more information on enabling <a href="{@docRoot}tools/help/lint.html">lint</a> inspections
-and running <a href="{@docRoot}tools/help/lint.html">lint</a>,
-see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
-
-<p>Android supports a variety of annotations for insertion in the methods, parameters, and return
-values in your code, for example:</p>
-
-<dl>
- <dt>{@link android.support.annotation.Nullable @Nullable}</dt>
- <dd>Can be null.</dd>
-
- <dt>{@link android.support.annotation.NonNull @NonNull}</dt>
- <dd>Cannot be null.</dd>
-
- <dt>{@link android.support.annotation.StringRes @StringRes}</dt>
- <dd>References a <a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a>
- resource.</dd>
-
- <dt>{@link android.support.annotation.DrawableRes @DrawableRes}</dt>
- <dd>References a
- <a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>Drawable</code></a>
- resource. </dd>
-
- <dt>{@link android.support.annotation.ColorRes @ColorRes}</dt>
- <dd>References a <a href="{@docRoot}reference/android/graphics/Color.html"><code>Color</code></a>
- resource. </dd>
-
- <dt>{@link android.support.annotation.InterpolatorRes @InterpolatorRes}</dt>
- <dd>References a
- <a href="{@docRoot}reference/android/view/animation/Interpolator.html"><code>Interpolator</code></a>
- resource. </dd>
-
- <dt>{@link android.support.annotation.AnyRes @AnyRes}</dt>
- <dd>References any type of <a href="{@docRoot}reference/android/R.html"><code>R.</code></a>
- resource. </dd>
-
- <dt><code>@UiThread</code></dt>
- <dd>Calls from a UI
- <a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. </dd>
- </dl>
-
-<p>For a complete list of the supported annotations, either examine the contents of the
-{@link android.support.annotation Support-Annotations} library or use the
-auto-complete feature to display the available options for the <code>import
-android.support.annotation.</code> statement. The
-<a href="{@docRoot}tools/help/sdk-manager.html"> SDK Manager</a> packages the
-{@link android.support.annotation Support-Annotations} library in the Android Support Repository
-for use with Android Studio and in the Android
-<a href="{@docRoot}tools/support-library/index.html">Support Library</a> for use with other Android
-development tools.</p>
-
-
-<p>To add annotations to your code, first add a dependency to the
-{@link android.support.annotation Support-Annotations} library. In Android Studio,
-add the dependency using the <strong>File > Project Structure > Dependencies</strong> menu
-option or your <code>build.gradle</code> file. The following example shows how to add the
-{@link android.support.annotation Support-Annotations} library dependency in the
-<code>build.gradle</code> file: </p>
-
-<pre>
-dependencies {
- compile 'com.android.support:support-annotations:22.2.0'
-}
-</pre>
-
-
-<p>The {@link android.support.annotation Support-Annotations} library is decorated with the
-supported annotations so using this library's methods and resources automatically checks the code
-for potential problems.</p>
-
-<p>If you include annotations in a library and use the
-<a href="{@docRoot}tools/building/plugin-for-gradle.html"><code>Android Plugin for Gradle</code></a>
-to build an Android ARchive (AAR) artifact of that library, the annotations are included as part
-of the artifact in XML format in the <code>annotations.zip</code> file. </p>
-
-<p>To start a code inspection from Android Studio, which includes validating annotations and
-automatic <a href="{@docRoot}tools/help/lint.html">lint</a> checking, select
-<strong>Analyze > Inspect Code</strong> from the menu options. Android Studio displays conflict
-messages throughout the code to indication annotation conflicts and suggest possible
-resolutions.</p>
-
-
-<h2 id="adding-nullness">Adding Nullness Annotations</h2>
-<p>Add {@link android.support.annotation.Nullable @Nullable} and
-{@link android.support.annotation.NonNull @NonNull} annotations to check
-the nullness of a given variable, parameter, or return value. For example, if a local variable
-that contains a null value is passed as a parameter to a method with the
-{@link android.support.annotation.NonNull @NonNull} annotation
-attached to that parameter, building the code generates a warning indicating a non-null conflict. </p>
-
-<p>This example attaches the {@link android.support.annotation.NonNull @NonNull} annotation to
-the <code>context</code> and <code>attrs</code> parameters to check that the passed parameter
-values are not null. </p>
-
-<pre>
-import android.support.annotation.NonNull;
-...
-
- /** Add support for inflating the <fragment> tag. */
- @NonNull
- @Override
- public View onCreateView(String name, @NonNull Context context,
- @NonNull AttributeSet attrs) {
- ...
- }
-...
-</pre>
-
-<p class="note"><strong>Note:</strong> Android Studio supports running a nullability analysis to
-automatically infer and insert nullness annotations in your code. For more information about
-inferring nullability in Android Studio, see
-<a href="{@docRoot}tools/studio/index.html#annotations">Annotations in Android Studio</a>. </p>
-
-
-<h2 id="res-annotations">Adding Resource Annotations</h2>
-<p>Validating resource types can be useful as Android references to resources, such as
-<a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>Drawables</code></a> and
-<a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a> resources, are
-passed as integers. Code that expects a parameter to reference a specific type of resource, for
-example <a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>Drawables</code></a>,
-can be passed the expected reference type of <code>int</code>, but actually reference a different
-type of resource, such as a <code>R.string</code></a> resource. </p>
-
-<p>For example, add {@link android.support.annotation.StringRes @StringRes} annotations to check
-that a resource parameter contains a
-<a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a>
-reference. During code inspection, the annotation generates a warning if a <code>R.string</code>
-reference is not passed in the parameter.</p>
-
-<p>This example attaches the {@link android.support.annotation.StringRes @StringRes}
-annotation to the <code>resId</code> parameter to validate that it is really a string resource. </p>
-
-<pre>
-import android.support.annotation.StringRes;
-...
- public abstract void setTitle(@StringRes int resId);
- ...
-</pre>
-
-
-<p>Annotations for the other resource types, such as
-{@link android.support.annotation.DrawableRes @DrawableRes},
-{@link android.support.annotation.DimenRes @DimenRes},
-{@link android.support.annotation.ColorRes @ColorRes}, and
-{@link android.support.annotation.InterpolatorRes @InterpolatorRes} can be added using
-the same annotation format and run during the code inspection. </p>
-
-
-
-
-<h2 id="thread-annotations">Adding Thread Annotations</h2>
-<p>Thread annotations check if a method is called from a specific type of
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. The following thread
-annotations are supported: </p>
-<ul>
- <li><code>@UiThread</code> </li>
- <li><code>@MainThread</code> </li>
- <li><code>@WorkerThread</code> </li>
- <li><code>@BinderThread</code>
-</ul>
-
-<p class="note"><strong>Note:</strong> The <code>@MainThread</code>
-and the <code>@UiThread</code> annotations are interchangeable so
-methods calls from either thread type are allowed for these annotations. </p>
-
-
-<p>If all methods in a class share the same threading requirement, you can add a single
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>
-annotation to the class to verify that all methods in the class are called from the same type of
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. </p>
-
-<p>A common use of the <a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>
-annotation is to validate method overrides in the
-<a href="{@docRoot}reference/android/os/AsyncTask.html">AsyncTask</a> class as this class performs
-background operations and publishes results only on the UI
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. </p>
-
-
-
-<h2 id="value-constraint">Adding Value Constraint Annotations</h2>
-<p>Use the <code>@IntRange</code>,
-<code>@FloatRange</code>, and
-<code>@Size</code> annotations to validate the values of passed
-parameters. </p>
-
-<p>The <code>@IntRange</code> annotation validates that the parameter
-value is within a specified range. The following example ensures that the <code>alpha</code>
-parameter contains an integer value from 0 to 255: </p>
-
-<pre>
-public void setAlpha(@IntRange(from=0,to=255) int alpha) { … }
-</pre>
-
-<p>The <code>@FloatRange</code> annotation checks that the parameter
-value is within a specified range of floating point values. The following example ensures that the
-<code>alpha</code> parameter contains a float value from 0.0 to 1.0: </p>
-
-<pre>
-public void setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) {...}
-</pre>
-
-<p>The <code>@Size</code> annotation checks the size of a collection or
-array, as well as the length of a string. For example, use the <code>@Size(min=1)</code>
-annotation to check if a collection is not empty, and the <code>@Size(2)</code> annotation to
-validate that an array contains exactly two values. The following example ensures that the
-<code>location</code> array contains at least one element: </p>
-
-<pre>
-int[] location = new int[3];
-button.getLocationOnScreen(@Size(min=1) location);
-</pre>
-
-
-<h2 id="permissions">Adding Permission Annotations</h2>
-<p>Use the <code>@RequiresPermission</code> annotation to
-validate the permissions of the caller of a method. To check for a single permission from a
-list the valid permissions, use the <code>anyOf</code> attribute. To check for a set of
-permissions, use the <code>allOf</code> attribute. The following example annotates the
-<code>setWallpaper</code> method to ensure that the caller of the method has the
-<code>permission.SET_WALLPAPERS</code> permission. </p>
-
-<pre>
-@RequiresPermission(Manifest.permission.SET_WALLPAPER)
-public abstract void setWallpaper(Bitmap bitmap) throws IOException;
-</pre>
-
-<p>This example requires the caller of the {@code copyFile()} method to have both read and write
-permissions to external storage:</p>
-<pre>
-@RequiresPermission(allOf = {
- Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.WRITE_EXTERNAL_STORAGE})
-public static final void copyFile(String dest, String source) {
- ...
-}
-</pre>
-
-<h2 id="check-result">Adding CheckResults Annotations</h2>
-<p>Use the <code>@CheckResults</code> annotation to
-validate that a method's result or return value is actually used. The following example annotates
-the <code>checkPermissions</code> method to ensure the return value of the method is actually
-referenced. It also names the
-<a href="{@docRoot}reference/android/content/ContextWrapper.html#enforcePermission">enforcePermission</a>
-method as a method to be suggested to the developer as a replacement. </p>
-
-
-
-<pre>
-@CheckResult(suggest="#enforcePermission(String,int,int,String)")
-public abstract int checkPermission(@NonNull String permission, int pid, int uid);
-</pre>
-
-{@link android.support.annotation.StringDef @StringDef}
-
-
-<h2 id="call-super">Adding CallSuper Annotations</h2>
-<p>Use the <code>@CallSuper</code> annotation to validate that an
-overriding method calls the super implementation of the method. The following example annotates
-the <code>onCreate</code> method to ensure that any overriding method implementations call
-<code>super.onCreate()</code>. </p>
-
-<pre>
-@CallSuper
-protected void onCreate(Bundle savedInstanceState) {
-}
-</pre>
-
-
-
-<h2 id="enum-annotations">Creating Enumerated Annotations</h2>
-<p>Use the {@link android.support.annotation.IntDef @IntDef} and
-{@link android.support.annotation.StringDef @StringDef} annotations
-so you can create enumerated annotations of integer and string sets to validate other types of code
-references, such as passing references to a set of constants. </p>
-
-<p>The following example illustrates the steps to create an enumerated annotation that ensures
-a value passed as a method parameter references one of the defined constants.</p>
-
-<pre>
-import android.support.annotation.IntDef;
-...
-public abstract class ActionBar {
- ...
- //Define the list of accepted constants
- @IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
-
- //Tell the compiler not to store annotation data in the <code>.class</code> file
- @Retention(RetentionPolicy.SOURCE)
-
- //Declare the <code>NavigationMode</code> annotation
- public @interface NavigationMode {}
-
- //Declare the constants
- public static final int NAVIGATION_MODE_STANDARD = 0;
- public static final int NAVIGATION_MODE_LIST = 1;
- public static final int NAVIGATION_MODE_TABS = 2;
-
- //Decorate the target methods with the annotation
- @NavigationMode
- public abstract int getNavigationMode();
-
- //Attach the annotation
- public abstract void setNavigationMode(@NavigationMode int mode);
-
-</pre>
-
-<p>When you build this code, a warning is generated if the <code>mode</code> parameter does
-not reference one of the defined constants (<code>NAVIGATION_MODE_STANDARD</code>,
-<code>NAVIGATION_MODE_LIST</code>, or <code>NAVIGATION_MODE_TABS</code>).</p>
-
-<p>You can also define an annotation with a <code>flag</code> to check if a parameter
-or return value references a valid pattern. This example creates the
-<code>DisplayOptions</code> annotation with a list of valid <code>DISPLAY_</code> constants. </p>
-
-<pre>
-import android.support.annotation.IntDef;
-...
-
-@IntDef(flag=true, value={
- DISPLAY_USE_LOGO,
- DISPLAY_SHOW_HOME,
- DISPLAY_HOME_AS_UP,
- DISPLAY_SHOW_TITLE,
- DISPLAY_SHOW_CUSTOM
-})
-@Retention(RetentionPolicy.SOURCE)
-public @interface DisplayOptions {}
-
-...
-</pre>
-
-<p>When you build code with an annotation flag, a warning is generated if the decorated parameter
-or return value does not reference a valid pattern.</p>
-
-
diff --git a/docs/html/tools/debugging/ddms.jd b/docs/html/tools/debugging/ddms.jd
deleted file mode 100644
index 9ff7122..0000000
--- a/docs/html/tools/debugging/ddms.jd
+++ /dev/null
@@ -1,312 +0,0 @@
-page.title=Using DDMS
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#running">Running DDMS</a></li>
- <li><a href="#how-ddms-works">How DDMS Interacts with a Debugger</a></li>
-
- <li><a href="#using-ddms">Using DDMS</a>
- <ol>
- <li><a href="#heap">Viewing heap usage for a process</a></li>
- <li><a href="#alloc">Tracking memory allocation of objects</a></li>
- <li><a href="#emulator">Working with an emulator or device's file system</a></li>
- <li><a href="#thread">Examining thread information</a></li>
- <li><a href="#profiling">Starting method profiling</a></li>
- <li><a href="#network">Using the Network Traffic tool</a></li>
- <li><a href="#logcat">Using LogCat</a></li>
- <li><a href="#ops-location">Emulating phone operations and location</a></li>
- </ol>
-
- </li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
- <li><a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a></li>
- </ol>
-
- </div>
- </div>
-
- <p>Android Studio includes a debugging tool called the Dalvik Debug Monitor Server (DDMS), which
- provides port-forwarding services, screen capture on the device, thread and heap information on
- the device, logcat, process, and radio state information, incoming call and SMS spoofing,
- location data spoofing, and more. This page provides a modest discussion of DDMS features; it is
- not an exhaustive exploration of all the features and capabilities.</p>
-
- <h2 id="running">Running DDMS</h2>
- <p>DDMS is integrated into Android Studio. To use it, launch the
- <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>, and click the
- <strong>DDMS</strong> menu button. DDMS works with both the emulator and a
- connected device. If both are connected and running simultaneously, DDMS defaults to the emulator.</p>
-
-
- <h2 id="how-ddms-works">How DDMS Interacts with a Debugger</h2>
-
- <p>On Android, every application runs in its own process, each of which runs in its own virtual machine
- (VM). Each VM exposes a unique port that a debugger can attach to.</p>
-
- <p>When DDMS starts, it connects to <a href="{@docRoot}tools/help/adb.html">adb</a>.
- When a device is connected, a VM monitoring service is created between
- <code>adb</code> and DDMS, which notifies DDMS when a VM on the device is started or terminated. Once a VM
- is running, DDMS retrieves the VM's process ID (pid), via <code>adb</code>, and opens a connection to the
- VM's debugger, through the adb daemon (adbd) on the device. DDMS can now talk to the VM using a
- custom wire protocol.</p>
-
- <p>DDMS assigns a debugging port to each VM on the device. Typically,
- DDMS assigns port 8600 for the first debuggable VM, the next on 8601, and so on. When a debugger
- connects to one of these ports, all traffic is forwarded to the debugger from the associated
- VM. You can only attach a single debugger to a single port, but DDMS can handle multiple, attached
- debuggers.</p>
-
- <p>By default, DDMS also listens on another debugging port, the DDMS "base port" (8700, by default).
- The base port is a port forwarder, which can accept VM traffic from any debugging port and forward
- it to the debugger on port 8700. This allows you to attach one debugger to port 8700, and debug
- all the VMs on a device. The traffic that is forwarded is determined by the currently selected process
- in the DDMS Devices view.</p>
-
- <p>The following screenshot shows a typical DDMS screen. If you are starting DDMS from
- the command line, the screen is slightly different, but much of the functionality is identical.
- Notice that the highlighted process, <code>com.android.email</code>, that is running in the emulator
- has the debugging port 8700 assigned to it as well as 8606. This signifies that DDMS is currently
- forwarding port 8606 to the static debugging port of 8700.</p>
-
- <img src="{@docRoot}images/debug-ddms.png"
- width="1024" />
- <p class="img-caption"><strong>Figure 1.</strong>
- Screenshot of DDMS</p>
-
- <p>If you are using the command line, read <a href=
- "{@docRoot}tools/debugging/debugging-projects-cmdline.html#debuggingPort">Configuring
- your IDE to attach to the debugging port</a>, for more information on attaching your
- debugger.</p>
-
- <p class="note"><strong>Tip:</strong> You can set a number of DDMS preferences in
- <strong>File</strong> > <strong>Preferences</strong>. Preferences are saved to
- <code>$HOME/.android/ddms.cfg</code>.</p>
-
- <p class="warning"><strong>Known debugging issues with Dalvik</strong><br />
- Debugging an application in the Dalvik VM should work the same as it does in other VMs. However,
- when single-stepping out of synchronized code, the "current line" cursor may jump to the last
- line in the method for one step.</p>
-
- <h2 id="using-ddms">Using DDMS</h2>
- The following sections describe how to use DDMS and the various tabs and panes that are part of the
- DDMS GUI. The Android Studio version and the command line version have minor UI differences, but
- the same functionality. For information on running DDMS, see the previous section in this document,
- <a href="#running">Running DDMS</a>.
-
-
- <h3 id="heap">Viewing heap usage for a process</h3>
-
- <p>DDMS allows you to view how much heap memory a process is using. This information is useful in
- tracking heap usage at a certain point of time during the execution of your application.</p>
- <p>To view heap usage for a process:</p>
- <ol>
- <li>In the Devices tab, select the process that you want to see the heap information for.</li>
-
- <li>Click the <strong>Update Heap</strong> button to enable heap information for the
- process.</li>
-
- <li>In the Heap tab, click <strong>Cause GC</strong> to invoke garbage collection, which
- enables the collection of heap data. When the operation completes, you will see a group of
- object types and the memory that has been allocated for each type. You can click <strong>Cause
- GC</strong> again to refresh the data.</li>
-
- <li>Click on an object type in the list to see a bar graph that shows the number of objects
- allocated for a particular memory size in bytes.</li>
- </ol>
-
- <h3 id="alloc">Tracking memory allocation of objects</h3>
-
- <p>DDMS provides a feature to track objects that are being allocated to memory and to see which
- classes and threads are allocating the objects. This allows you to track, in real time, where
- objects are being allocated when you perform certain actions in your application. This
- information is valuable for assessing memory usage that can affect application performance.
- </p>
-
- <p>To track memory allocation of objects:</p>
- <ol>
- <li>In the Devices tab, select the process that you want to enable allocation tracking
- for.</li>
-
- <li>In the Allocation Tracker tab, click the <strong>Start Tracking</strong> button to begin
- allocation tracking. At this point, anything you do in your application will be tracked.</li>
-
- <li>Click <strong>Get Allocations</strong> to see a list of objects that have been allocated
- since you clicked on the <strong>Start Tracking</strong> button. You can click on <strong>Get
- Allocations</strong> again to append to the list new objects that have been
- allocated.</li>
-
- <li>To stop tracking or to clear the data and start over, click the <strong>Stop Tracking
- button</strong>.</li>
-
- <li>Click on a specific row in the list to see more detailed information such as the method and
- line number of the code that allocated the object.</li>
- </ol>
-
- <h3 id="emulator">Working with an emulator or device's file system</h3>
-
- <p>DDMS provides a File Explorer tab that allows you to view, copy, and delete files on the
- device. This feature is useful in examining files that are created by your application or if you
- want to transfer files to and from the device.</p>
-
- <p>To work with an emulator or device's file system:</p>
- <ol>
- <li>In the Devices tab, select the emulator that you want to view the file system for.</li>
-
- <li>To copy a file from the device, locate the file in the File Explorer and click the
- <strong>Pull file</strong> button.</li>
-
- <li>To copy a file to the device, click the <strong>Push file</strong> button on the File
- Explorer tab.</li>
- </ol>
-
- <!-- Need to elaborate more on where things are stored in the file system,
- databases, apks, user info, files that are important to look at -->
-
- <h3 id="thread">Examining thread information</h3>
-
- <p>The Threads tab in DDMS shows you the currently running threads for a selected process.</p>
-
- <ol>
- <li>In the Devices tab, select the process that you want to examine the threads for.</li>
-
- <li>Click the <strong>Update Threads</strong> button.</li>
-
- <li>In the Threads tab, you can view the thread information for the selected process.</li>
- </ol>
-
- <h3 id="profiling">Starting method profiling</h3>
-
- <p>Method profiling is a means to track certain metrics about a method, such as number of calls,
- execution time, and time spent executing the method. If you want more granular control over
- where profiling data is collected, use the {@link android.os.Debug#startMethodTracing()} and
- {@link android.os.Debug#stopMethodTracing()} methods. For more information about generating trace logs, see
- <a href="debugging-tracing.html">Profiling and Debugging UIs</a>.</p>
-
- <p>Before you start method profiling in DDMS, be aware of the following restrictions:</p>
- <ul>
- <li>Android 2.1 and earlier devices must
- have an SD card present and your application must have permission to write to the SD card.
- <li>Android 2.2 and later devices do not need an SD card. The trace log files are
- streamed directly to your development machine.</li>
- </ul>
-
- <p>To start method profiling:</p>
- <ol>
- <li>On the Devices tab, select the process that you want to enable method profiling for.</li>
-
- <li>Click the <strong>Start Method Profiling</strong> button.</li>
-
- <li>In Android 4.4 and later, choose either trace-based profiling or sample-based profiling
- with a specified sampling interval. For earlier versions of Android, only trace-based profiling
- is available.</li>
-
- <li>Interact with your application to start the methods that you want to profile.</li>
-
- <li>Click the <strong>Stop Method Profiling</strong> button. DDMS stops profiling your
- application and opens <a href="{@docRoot}tools/debugging/debugging-ui.html">Traceview</a>
- with the method profiling information that was collected
- between the time you clicked on <strong>Start Method Profiling</strong> and <strong>Stop Method
- Profiling</strong>.</li>
- </ol>
-
- <h3 id="network">Using the Network Traffic tool</h3>
-
- <p>In Android 4.0, the DDMS (Dalvik Debug Monitor Server) includes a Detailed
-Network Usage tab that makes it possible to track when your application is
-making network requests. Using this tool, you can monitor how and when your app
-transfers data and optimize the underlying code appropriately. You can also
-distinguish between different traffic types by applying a “tag” to network
-sockets before use.</p>
-
-<p>These tags are shown in a stack area chart in DDMS, as shown in figure 2:</p>
-
-<img src="{@docRoot}images/developing/ddms-network.png" />
-<p class="img-caption"><strong>Figure 2.</strong> Network Usage tab.</p>
-
-<p>By monitoring the frequency of your data transfers, and the amount of data
-transferred during each connection, you can identify areas of your application
-that can be made more battery-efficient. Generally, you should look for
-short spikes that can be delayed, or that should cause a later transfer to be
-pre-empted. </p>
-
-<p>To better identify the cause of transfer spikes, the
-{@link android.net.TrafficStats} API allows you
-to tag the data transfers occurring within a thread using {@link
-android.net.TrafficStats#setThreadStatsTag setThreadStatsTag()}, followed
-by manually tagging (and untagging) individual sockets using {@link
-android.net.TrafficStats#tagSocket tagSocket()} and {@link
-android.net.TrafficStats#untagSocket untagSocket()}. For example:</p>
-
-<pre>TrafficStats.setThreadStatsTag(0xF00D);
-TrafficStats.tagSocket(outputSocket);
-// Transfer data using socket
-TrafficStats.untagSocket(outputSocket);</pre>
-
-<p>Alternatively, the {@link java.net.URLConnection} APIs included in the platform
-automatically tag sockets internally based on the active tag (as identified by
-{@link android.net.TrafficStats#getThreadStatsTag getThreadStatsTag()}).
-These APIs correctly tag/untag sockets when recycled through
-keep-alive pools. In the following example,
-{@link android.net.TrafficStats#setThreadStatsTag setThreadStatsTag()}
-sets the active tag to be {@code 0xF00D}.
-There can only be one active tag per thread.
-That is the value that will
-be returned by {@link android.net.TrafficStats#getThreadStatsTag getThreadStatsTag()}
-and thus used by the HTTP client to tag sockets. The {@code finally} statement
-invokes
-{@link android.net.TrafficStats#clearThreadStatsTag clearThreadStatsTag()}
-to clear the tag.</p>
-
-<pre>TrafficStats.setThreadStatsTag(0xF00D);
- try {
- // Make network request using your http client.
- } finally {
- TrafficStats.clearThreadStatsTag();
-}</pre>
-
-<p>Socket tagging is supported in Android 4.0, but real-time stats will only be
-displayed on devices running Android 4.0.3 or higher.</p>
-
- <h3 id="logcat">Using LogCat</h3>
-
- <p>LogCat is integrated into DDMS, and outputs the messages that you print out using the {@link android.util.Log}
- class along with other system messages such as stack traces when exceptions are thrown. View the
- <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and
- Writing Log Messages.</a> topic for more information on how to log messages to the LogCat.</p>
-
- <p>When you have set up your logging, you can use the LogCat feature of DDMS to filter certain
- messages with the following buttons:</p>
-
- <ul>
- <li>Verbose</li>
-
- <li>Debug</li>
-
- <li>Info</li>
-
- <li>Warn</li>
-
- <li>Error</li>
- </ul>
-
- <p>You can also setup your own custom filter to specify more details such as filtering messages
- with the log tags or with the process id that generated the log message. The add filter,
- edit filter, and delete filter buttons let you manage your custom filters.</p>
-
- <h3 id="ops-location">Emulating phone operations and location</h3>
- <p>The <strong>Emulator Control</strong> tab, shown in Figure 1, is no longer
- supported. Use the
- <a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a>
- for these features.</p>
-
-
diff --git a/docs/html/tools/debugging/debugging-log.jd b/docs/html/tools/debugging/debugging-log.jd
deleted file mode 100644
index f17c4aa..0000000
--- a/docs/html/tools/debugging/debugging-log.jd
+++ /dev/null
@@ -1,293 +0,0 @@
-page.title=Reading and Writing Logs
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#startingLogcat">Starting LogCat</a></li>
-
- <li><a href="#filteringOutput">Filtering Log Output</a></li>
-
- <li><a href="#outputFormat">Controlling Log Output Format</a></li>
-
- <li><a href="#alternativeBuffers">Viewing Alternative Log Output Buffers</a></li>
-
- <li><a href="#viewingStd">Viewing stdout and stderr</a></li>
-
- <li><a href="#logClass">Logging from Code</a></li>
- </ol>
- </div>
- </div>
-
- <p>The Android logging system provides a mechanism for collecting and viewing system debug
- output. Logcat dumps a log of system messages, which include things such as stack traces when the
- emulator throws an error and messages that you have written from your application by using the
- {@link android.util.Log} class. You can run LogCat through ADB or from DDMS, which allows you to
- read the messages in real time.</p>
-
- <h2 id="startingLogcat">Using LogCat</h2>
-
- <p>You can use LogCat from within DDMS or call it on an ADB shell. For more information on how to
- use LogCat within DDMS, see <a href="{@docRoot}tools/debugging/ddms.html#logcat">Using
- DDMS</a>. To run LogCat, through the ADB shell, the general usage is:</p>
- <pre>
-[adb] logcat [<option>] ... [<filter-spec>] ...
-</pre>
-
- <p>You can use the <code>logcat</code> command from your development computer or from a remote
- adb shell in an emulator/device instance. To view log output in your development computer, you
- use</p>
- <pre>
-$ adb logcat
-</pre>
-
- <p>and from a remote adb shell you use</p>
- <pre>
-# logcat
-</pre>
-
- <p>The following table describes the <code>logcat</code> command line options:</p>
-
- <table>
- <tr>
- <td><code>-c</code></td>
-
- <td>Clears (flushes) the entire log and exits.</td>
- </tr>
-
- <tr>
- <td><code>-d</code></td>
-
- <td>Dumps the log to the screen and exits.</td>
- </tr>
-
- <tr>
- <td><code>-f <filename></code></td>
-
- <td>Writes log message output to <code><filename></code>. The default is
- <code>stdout</code>.</td>
- </tr>
-
- <tr>
- <td><code>-g</code></td>
- <td>Prints the size of the specified log buffer and exits.</td>
- </tr>
-
- <tr>
- <td><code>-n <count></code></td>
-
- <td>Sets the maximum number of rotated logs to <code><count></code>. The default value
- is 4. Requires the <code>-r</code> option.</td>
- </tr>
-
- <tr>
- <td><code>-r <kbytes></code></td>
-
- <td>Rotates the log file every <code><kbytes></code> of output. The default value is
- 16. Requires the <code>-f</code> option.</td>
- </tr>
-
- <tr>
- <td><code>-s</code></td>
-
- <td>Sets the default filter spec to silent.</td>
- </tr>
-
- <tr>
- <td><code>-v <format></code></td>
-
- <td>Sets the output format for log messages. The default is <code>brief</code> format. For a
- list of supported formats, see <a href="#outputFormat">Controlling Log Output
- Format</a>.</td>
- </tr>
- </table>
-
- <h3 id="filteringOutput">Filtering Log Output</h3>
-
- <p>Every Android log message has a <em>tag</em> and a <em>priority</em> associated with it.</p>
-
- <ul>
- <li>The tag of a log message is a short string indicating the system component from which the
- message originates (for example, "View" for the view system).</li>
-
- <li>The priority is one of the following character values, ordered from lowest to highest
- priority:</li>
-
- <li style="list-style: none; display: inline">
- <ul>
- <li><code>V</code> — Verbose (lowest priority)</li>
-
- <li><code>D</code> — Debug</li>
-
- <li><code>I</code> — Info</li>
-
- <li><code>W</code> — Warning</li>
-
- <li><code>E</code> — Error</li>
-
- <li><code>F</code> — Fatal</li>
-
- <li><code>S</code> — Silent (highest priority, on which nothing is ever printed)</li>
- </ul>
- </li>
- </ul>
-
- <p>You can obtain a list of tags used in the system, together with priorities, by running
- LogCat and observing the first two columns of each message, given as
- <code><priority>/<tag></code>.</p>
-
- <p>Here's an example of logcat output that shows that the message relates to priority level "I"
- and tag "ActivityManager":</p>
- <pre>
-I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
-</pre>
-
- <p>To reduce the log output to a manageable level, you can restrict log output using <em>filter
- expressions</em>. Filter expressions let you indicate to the system the tags-priority
- combinations that you are interested in — the system suppresses other messages for the
- specified tags.</p>
-
- <p>A filter expression follows this format <code>tag:priority ...</code>, where <code>tag</code>
- indicates the tag of interest and <code>priority</code> indicates the <em>minimum</em> level of
- priority to report for that tag. Messages for that tag at or above the specified priority are
- written to the log. You can supply any number of <code>tag:priority</code> specifications in a
- single filter expression. The series of specifications is whitespace-delimited.</p>
-
- <p>Here's an example of a filter expression that suppresses all log messages except those with
- the tag "ActivityManager", at priority "Info" or above, and all log messages with tag "MyApp",
- with priority "Debug" or above:</p>
- <pre>
-adb logcat ActivityManager:I MyApp:D *:S
-</pre>
-
- <p>The final element in the above expression, <code>*:S</code>, sets the priority level for all
- tags to "silent", thus ensuring only log messages with "ActivityManager" and "MyApp" are displayed. Using
- <code>*:S</code> is an excellent way to ensure that log output is restricted to the filters that
- you have explicitly specified — it lets your filters serve as a "whitelist" for log
- output.</p>
-
- <p>The following filter expression displays all log messages with priority level "warning" and higher, on all tags:</p>
- <pre>
-adb logcat *:W
-</pre>
-
- <p>If you're running LogCat from your development computer (versus running it on a
- remote adb shell), you can also set a default filter expression by exporting a value for the
- environment variable <code>ANDROID_LOG_TAGS</code>:</p>
- <pre>
-export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
-</pre>
-
- <p>Note that <code>ANDROID_LOG_TAGS</code> filter is not exported to the emulator/device
- instance, if you are running LogCat from a remote shell or using <code>adb shell
- logcat</code>.</p>
-
- <h3 id="outputFormat">Controlling Log Output Format</h3>
-
- <p>Log messages contain a number of metadata fields, in addition to the tag and priority. You can
- modify the output format for messages so that they display a specific metadata field. To do so,
- you use the <code>-v</code> option and specify one of the supported output formats listed
- below.</p>
-
- <ul>
- <li><code>brief</code> — Display priority/tag and PID of the process issuing the
- message (the default format).</li>
-
- <li><code>process</code> — Display PID only.</li>
-
- <li><code>tag</code> — Display the priority/tag only.</li>
-
- <li><code>raw</code> — Display the raw log message, with no other metadata fields.</li>
-
- <li><code>time</code> — Display the date, invocation time, priority/tag, and PID of the
- process issuing the message.</li>
-
- <li><code>threadtime</code> — Display the date, invocation time, priority, tag, and
- the PID and TID of the thread issuing the message.</li>
-
- <li><code>long</code> — Display all metadata fields and separate messages with blank
- lines.</li>
- </ul>
-
- <p>When starting LogCat, you can specify the output format you want by using the
- <code>-v</code> option:</p>
- <pre>
-[adb] logcat [-v <format>]
-</pre>
-
- <p>Here's an example that shows how to generate messages in <code>thread</code> output
- format:</p>
- <pre>
-adb logcat -v thread
-</pre>
-
- <p>Note that you can only specify one output format with the <code>-v</code> option.</p>
-
- <h3 id="alternativeBuffers">Viewing Alternative Log Buffers</h3>
-
- <p>The Android logging system keeps multiple circular buffers for log messages, and not all of
- the log messages are sent to the default circular buffer. To see additional log messages, you can
- run the <code>logcat</code> command with the <code>-b</code> option, to request viewing of an alternate
- circular buffer. You can view any of these alternate buffers:</p>
-
- <ul>
- <li><code>radio</code> — View the buffer that contains radio/telephony related
- messages.</li>
-
- <li><code>events</code> — View the buffer containing events-related messages.</li>
-
- <li><code>main</code> — View the main log buffer (default)</li>
- </ul>
-
- <p>The usage of the <code>-b</code> option is:</p>
- <pre>
-[adb] logcat [-b <buffer>]
-</pre>
-
- <p>Here's an example of how to view a log buffer containing radio and telephony messages:</p>
- <pre>
-adb logcat -b radio
-</pre><a name="stdout"
- id="stdout"></a>
-
- <h2 id="viewingStd">Viewing stdout and stderr</h2>
-
- <p>By default, the Android system sends <code>stdout</code> and <code>stderr</code>
- output to <code>/dev/null</code>. (The Java <code>System.out</code> and <code>System.err</code>
- streams go to the log.)
-
- <h2 id="logClass">Logging from Code</h2>
-
- <p>The {@link android.util.Log} class allows you to create log entries in your code that display
- in the LogCat tool. Common logging methods include:</p>
-
- <ul>
- <li>{@link android.util.Log#v(java.lang.String, java.lang.String)
- Log.v(String, String)} (verbose)</li>
-
- <li>{@link android.util.Log#d(java.lang.String, java.lang.String)
- Log.d(String, String)} (debug)</li>
-
- <li>{@link android.util.Log#i(java.lang.String, java.lang.String)
- Log.i(String, String)} (information)</li>
-
- <li>{@link android.util.Log#w(java.lang.String, java.lang.String)
- Log.w(String, String)} (warning)</li>
-
- <li>{@link android.util.Log#e(java.lang.String, java.lang.String)
- Log.e(String, String)} (error)</li>
- </ul>
-
- <p>For example, using the following call:</p>
-
- <pre class="no-pretty-print">
-Log.i("MyActivity", "MyClass.getView() — get item number " + position);
-</pre>
-
- <p>The LogCat outputs something like:</p>
- <pre class="no-pretty-print">
-I/MyActivity( 1557): MyClass.getView() — get item number 1
-</pre>
diff --git a/docs/html/tools/debugging/debugging-memory.jd b/docs/html/tools/debugging/debugging-memory.jd
deleted file mode 100755
index 4e2e519..0000000
--- a/docs/html/tools/debugging/debugging-memory.jd
+++ /dev/null
@@ -1,708 +0,0 @@
-page.title=Investigating Your RAM Usage
-page.tags=memory,OutOfMemoryError
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#LogMessages">Interpreting Log Messages</a></li>
- <li><a href="#ViewHeap">Viewing Heap Updates</a></li>
- <li><a href="#TrackAllocations">Tracking Allocations</a></li>
- <li><a href="#ViewingAllocations">Viewing Overall Memory Allocations</a></li>
- <li><a href="#HeapDump">Capturing a Heap Dump</a></li>
- <li><a href="#TriggerLeaks">Triggering Memory Leaks</a></li>
-</ol>
- <h2>See Also</h2>
- <ul>
- <li><a href="{@docRoot}training/articles/memory.html">Managing Your App's Memory</a></li>
- </ul>
- </div>
- </div>
-
-
-
-
-<p>Because Android is designed for mobile devices, you should always be careful about how much
-random-access memory (RAM) your app uses. Although Dalvik and ART perform
-routine garbage collection (GC), this doesn’t mean you can ignore when and where your app allocates and
-releases memory. In order to provide a stable user experience that allows the system to quickly
-switch between apps, it is important that your app does not needlessly consume memory when the user
-is not interacting with it.</p>
-
-<p>Even if you follow all the best practices for <a href="{@docRoot}training/articles/memory.html"
->Managing Your App Memory</a> during
-development (which you should), you still might leak objects or introduce other memory bugs. The
-only way to be certain your app is using as little memory as possible is to analyze your app’s
-memory usage with tools. This guide shows you how to do that.</p>
-
-
-<h2 id="LogMessages">Interpreting Log Messages</h2>
-
-<p>The simplest place to begin investigating your app’s memory usage is the runtime log messages.
-Sometimes when a GC occurs, a message is printed to
-<a href="{@docRoot}tools/help/logcat.html">logcat</a>. The logcat output is also available in the
-Device Monitor or directly in an IDE such as Android Studio.</p>
-
-<h3 id="DalvikLogMessages">Dalvik Log Messages</h3>
-
-<p>In Dalvik (but not ART), every GC prints the following information to logcat:</p>
-
-<pre class="no-pretty-print">
-D/dalvikvm: <GC_Reason> <Amount_freed>, <Heap_stats>, <External_memory_stats>, <Pause_time>
-</pre>
-
-<p>Example:</p>
-
-<pre class="no-pretty-print">
-D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms
-</pre>
-
-<dl>
-<dt>GC Reason</dt>
-<dd>
-What triggered the GC and what kind of collection it is. Reasons that may appear
-include:
-<dl>
-<dt><code>GC_CONCURRENT</code></dt>
-<dd>A concurrent GC that frees up memory as your heap begins to fill up.</dd>
-
-<dt><code>GC_FOR_MALLOC</code></dt>
-<dd>A GC caused because your app attempted to allocate memory when your heap was
-already full, so the system had to stop your app and reclaim memory.</dd>
-
-<dt><code>GC_HPROF_DUMP_HEAP</code></dt>
-<dd>A GC that occurs when you request to create an HPROF file to analyze your heap.</dd>
-
-<dt><code>GC_EXPLICIT</code>
-<dd>An explicit GC, such as when you call {@link java.lang.System#gc()} (which you
-should avoid calling and instead trust the GC to run when needed).</dd>
-
-<dt><code>GC_EXTERNAL_ALLOC</code></dt>
-<dd>This happens only on API level 10 and lower (newer versions allocate everything in the Dalvik
-heap). A GC for externally allocated memory (such as the pixel data stored in
-native memory or NIO byte buffers).</dd>
-</dl>
-</dd>
-
-<dt>Amount freed</dt>
-<dd>The amount of memory reclaimed from this GC.</dd>
-
-<dt>Heap stats</dt>
-<dd>Percentage free of the heap and (number of live objects)/(total heap size).</dd>
-
-<dt>External memory stats</dt>
-<dd>Externally allocated memory on API level 10 and lower (amount of allocated memory) / (limit at
-which collection will occur).</dd>
-
-<dt>Pause time</dt>
-<dd>Larger heaps will have larger pause times. Concurrent pause times show two pauses: one at the
-beginning of the collection and another near the end.</dd>
-</dl>
-
-<p>As these log messages accumulate, look out for increases in the heap stats (the
-{@code 3571K/9991K} value in the above example). If this value continues to increase, you may have
-a memory leak.</p>
-
-
-<h3 id="ARTLogMessages">ART Log Messages</h3>
-
-<p>Unlike Dalvik, ART doesn't log messages for GCs that were not explicitly requested. GCs are only
-printed when they are they are deemed slow. More precisely, if the GC pause exceeds than 5ms or
-the GC duration exceeds 100ms. If the app is not in a pause perceptible process state,
-then none of its GCs are deemed slow. Explicit GCs are always logged.</p>
-
-<p>ART includes the following information in its garbage collection log messages:</p>
-
-<pre class="no-pretty-print">
-I/art: <GC_Reason> <GC_Name> <Objects_freed>(<Size_freed>) AllocSpace Objects, <Large_objects_freed>(<Large_object_size_freed>) <Heap_stats> LOS objects, <Pause_time(s)>
-</pre>
-
-<p>Example:</p>
-
-<pre class="no-pretty-print">
-I/art : Explicit concurrent mark sweep GC freed 104710(7MB) AllocSpace objects, 21(416KB) LOS objects, 33% free, 25MB/38MB, paused 1.230ms total 67.216ms
-</pre>
-
-<dl>
-<dt>GC Reason</dt>
-<dd>
-What triggered the GC and what kind of collection it is. Reasons that may appear
-include:
-<dl>
-<dt><code>Concurrent</code></dt>
-<dd>A concurrent GC which does not suspend app threads. This GC runs in a background thread
-and does not prevent allocations.</dd>
-
-<dt><code>Alloc</code></dt>
-<dd>The GC was initiated because your app attempted to allocate memory when your heap
-was already full. In this case, the garbage collection occurred in the allocating thread.</dd>
-
-<dt><code>Explicit</code>
-<dd>The garbage collection was explicitly requested by an app, for instance, by
-calling {@link java.lang.System#gc()} or {@link java.lang.Runtime#gc()}. As with Dalvik, in ART it is
-recommended that you trust the GC and avoid requesting explicit GCs if possible. Explicit GCs are
-discouraged since they block the allocating thread and unnecessarily was CPU cycles. Explicit GCs
-could also cause jank if they cause other threads to get preempted.</dd>
-
-<dt><code>NativeAlloc</code></dt>
-<dd>The collection was caused by native memory pressure from native allocations such as Bitmaps or
-RenderScript allocation objects.</dd>
-
-<dt><code>CollectorTransition</code></dt>
-<dd>The collection was caused by a heap transition; this is caused by switching the GC at run time.
-Collector transitions consist of copying all the objects from a free-list backed
-space to a bump pointer space (or visa versa). Currently collector transitions only occur when an
-app changes process states from a pause perceptible state to a non pause perceptible state
-(or visa versa) on low RAM devices.
-</dd>
-
-<dt><code>HomogeneousSpaceCompact</code></dt>
-<dd>Homogeneous space compaction is free-list space to free-list space compaction which usually
-occurs when an app is moved to a pause imperceptible process state. The main reasons for doing
-this are reducing RAM usage and defragmenting the heap.
-</dd>
-
-<dt><code>DisableMovingGc</code></dt>
-<dd>This is not a real GC reason, but a note that collection was blocked due to use of
-GetPrimitiveArrayCritical. while concurrent heap compaction is occuring. In general, the use of
-GetPrimitiveArrayCritical is strongly discouraged due to its restrictions on moving collectors.
-</dd>
-
-<dt><code>HeapTrim</code></dt>
-<dd>This is not a GC reason, but a note that collection was blocked until a heap trim finished.
-</dd>
-
-</dl>
-</dd>
-
-
-<dl>
-<dt>GC Name</dt>
-<dd>
-ART has various different GCs which can get run.
-<dl>
-<dt><code>Concurrent mark sweep (CMS)</code></dt>
-<dd>A whole heap collector which frees collects all spaces other than the image space.</dd>
-
-<dt><code>Concurrent partial mark sweep</code></dt>
-<dd>A mostly whole heap collector which collects all spaces other than the image and zygote spaces.
-</dd>
-
-<dt><code>Concurrent sticky mark sweep</code></dt>
-<dd>A generational collector which can only free objects allocated since the last GC. This garbage
-collection is run more often than a full or partial mark sweep since it is faster and has lower pauses.
-</dd>
-
-<dt><code>Marksweep + semispace</code></dt>
-<dd>A non concurrent, copying GC used for heap transitions as well as homogeneous space
-compaction (to defragement the heap).</dd>
-
-</dl>
-</dd>
-
-<dt>Objects freed</dt>
-<dd>The number of objects which were reclaimed from this GC from the non large
-object space.</dd>
-
-<dt>Size freed</dt>
-<dd>The number of bytes which were reclaimed from this GC from the non large object
-space.</dd>
-
-<dt>Large objects freed</dt>
-<dd>The number of object in the large object space which were reclaimed from this garbage
-collection.</dd>
-
-<dt>Large object size freed</dt>
-<dd>The number of bytes in the large object space which were reclaimed from this garbage
-collection.</dd>
-
-<dt>Heap stats</dt>
-<dd>Percentage free and (number of live objects)/(total heap size).</dd>
-
-<dt>Pause times</dt>
-<dd>In general pause times are proportional to the number of object references which were modified
-while the GC was running. Currently, the ART CMS GCs only has one pause, near the end of the GC.
-The moving GCs have a long pause which lasts for the majority of the GC duration.</dd>
-</dl>
-
-<p>If you are seeing a large amount of GCs in logcat, look for increases in the heap stats (the
-{@code 25MB/38MB} value in the above example). If this value continues to increase and doesn't
-ever seem to get smaller, you could have a memory leak. Alternatively, if you are seeing GC which
-are for the reason "Alloc", then you are already operating near your heap capacity and can expect
-OOM exceptions in the near future. </p>
-
-<h2 id="ViewHeap">Viewing Heap Updates</h2>
-
-<p>To get a little information about what kind of memory your app is using and when, you
-can view real-time updates to your app's heap in Android Studio's
-<a href="{@docRoot}tools/studio/index.html#heap-dump">HPROF viewer</a> or in the Device Monitor:</p>
-
-<h3>Memory Monitor in Android Studio</h3>
-<p>Use Android Studio to view your app's memory use: </p>
-<ol>
- <li>Start your app on a connected device or emulator.</li>
- <li>Open the Android run-time window, and view the free and allocated memory in the Memory
- Monitor. </li>
- <li>Click the Dump Java Heap icon
- (<img src="{@docRoot}images/tools/studio-dump-heap-icon.png" style="vertical-align:bottom;margin:0;height:21px"/>)
- in the Memory Monitor toolbar.
- <p>Android Studio creates the heap snapshot file with the filename
- <code>Snapshot-yyyy.mm.dd-hh.mm.ss.hprof</code> in the <em>Captures</em> tab. </p>
- </li>
- <li>Double-click the heap snapshot file to open the HPROF viewer.
- <p class="note"><strong>Note:</strong> To convert a heap dump to standard HPROF format in
- Android Studio, right-click a heap snapshot in the <em>Captures</em> view and select
- <strong>Export to standard .hprof</strong>.</p> </li>
- <li>Interact with your app and click the
- (<img src="{@docRoot}images/tools/studio-garbage-collect.png" style="vertical-align:bottom;margin:0;height:17px"/>)
- icon to cause heap allocation.
- </li>
- <li>Identify which actions in your app are likely causing too much allocation and determine where
- in your app you should try to reduce allocations and release resources.
-</ol>
-
-<h3>Device Monitor </h3>
-<ol>
-<li>Open the Device Monitor.
-<p>From your <code><sdk>/tools/</code> directory, launch the <code>monitor</code> tool.</p>
-</li>
-<li>In the Debug Monitor window, select your app's process from the list on the left.</li>
-<li>Click <strong>Update Heap</strong> above the process list.</li>
-<li>In the right-side panel, select the <strong>Heap</strong> tab.</li>
-</ol>
-
-<p>The Heap view shows some basic stats about your heap memory usage, updated after every
-GC. To see the first update, click the <strong>Cause GC</strong> button.</p>
-
-<img src="{@docRoot}images/tools/monitor-vmheap@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The Device Monitor tool,
-showing the <strong>[1] Update Heap</strong> and <strong>[2] Cause GC</strong> buttons.
-The Heap tab on the right shows the heap results.</p>
-
-
-<p>Continue interacting with your app to watch your heap allocation update with each garbage
-collection. This can help you identify which actions in your app are likely causing too much
-allocation and where you should try to reduce allocations and release
-resources.</p>
-
-
-
-<h2 id="TrackAllocations">Tracking Allocations</h2>
-
-<p>As you start narrowing down memory issues, you should also use the Allocation Tracker to
-get a better understanding of where your memory-hogging objects are allocated. The Allocation
-Tracker can be useful not only for looking at specific uses of memory, but also to analyze critical
-code paths in an app such as scrolling.</p>
-
-<p>For example, tracking allocations when flinging a list in your app allows you to see all the
-allocations that need to be done for that behavior, what thread they are on, and where they came
-from. This is extremely valuable for tightening up these paths to reduce the work they need and
-improve the overall smoothness of the UI.</p>
-
-<p>To use the Allocation Tracker, open the Memory Monitor in Android Studio and click the
-<a href="{@docRoot}tools/studio/index.html#alloc-tracker" style="vertical-align:bottom;margin:0;height:21px">
-Allocation Tracker</a> icon. You can also track allocations in the Android Device Monitor:</p>
-
-
-<h3>Android Studio </h3>
-<p>To use the <a href="{@docRoot}tools/studio/index.html#alloc-tracker">Allocation Tracker</a> in
-Android Studio: </p>
-
-<ol>
- <li>Start your app on a connected device or emulator</li>
- <li>Open the Android run-tme window, and view the free and allocated memory in the Memory
- Monitor. </li>
- <li>Click the Allocation Tracker icon
- (<img src="{@docRoot}images/tools/studio-allocation-tracker-icon.png" style="vertical-align:bottom;margin:0;height:21px"/>) in the Memory Monitor tool bar to start and stop memory
- allocations.
- <p>Android Studio creates the allocation file with the filename
- <code>Allocations-yyyy.mm.dd-hh.mm.ss.alloc</code> in the <em>Captures</em> tab. </p>
- </li>
- <li>Double-click the allocation file to open the Allocation viewer. </li>
- <li>Identify which actions in your app are likely causing too much allocation and determine where
- in your app you should try to reduce allocations and release resources.
-</ol>
-
-
-
-<h3>Device Monitor</h3>
-<ol>
-<li>Open the Device Monitor.
-<p>From your <code><sdk>/tools/</code> directory, launch the <code>monitor</code> tool.</p>
-</li>
-<li>In the DDMS window, select your app's process in the left-side panel.</li>
-<li>In the right-side panel, select the <strong>Allocation Tracker</strong> tab.</li>
-<li>Click <strong>Start Tracking</strong>.</li>
-<li>Interact with your app to execute the code paths you want to analyze.</li>
-<li>Click <strong>Get Allocations</strong> every time you want to update the
-list of allocations.</li>
- </ol>
-
-<p>The list shows all recent allocations,
-currently limited by a 512-entry ring buffer. Click on a line to see the stack trace that led to
-the allocation. The trace shows you not only what type of object was allocated, but also in which
-thread, in which class, in which file and at which line.</p>
-
-<img src="{@docRoot}images/tools/monitor-tracker@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> The Device Monitor tool,
-showing recent app allocations and stack traces in the Allocation Tracker.</p>
-
-
-<p class="note"><strong>Note:</strong> You will always see some allocations from {@code
-DdmVmInternal} and elsewhere that come from the allocation tracker itself.</p>
-
-<p>Although it's not necessary (nor possible) to remove all allocations from your performance
-critical code paths, the allocation tracker can help you identify important issues in your code.
-For instance, some apps might create a new {@link android.graphics.Paint} object on every draw.
-Moving that object into a global member is a simple fix that helps improve performance.</p>
-
-
-
-
-
-
-<h2 id="ViewingAllocations">Viewing Overall Memory Allocations</h2>
-
-<p>For further analysis, you may want to observe how your app's memory is
-divided between different types of RAM allocation with the
-following <a href="{@docRoot}tools/help/adb.html">adb</a> command:</p>
-
-<pre class="no-pretty-print">
-adb shell dumpsys meminfo <package_name|pid> [-d]
-</pre>
-
-<p>The -d flag prints more info related to Dalvik and ART memory usage.</p>
-
-<p>The output lists all of your app's current allocations, measured in kilobytes.</p>
-
-<p>When inspecting this information, you should be familiar with the
-following types of allocation:</p>
-
-<dl>
-<dt>Private (Clean and Dirty) RAM</dt>
-<dd>This is memory that is being used by only your process. This is the bulk of the RAM that the system
-can reclaim when your app’s process is destroyed. Generally, the most important portion of this is
-“private dirty” RAM, which is the most expensive because it is used by only your process and its
-contents exist only in RAM so can’t be paged to storage (because Android does not use swap). All
-Dalvik and native heap allocations you make will be private dirty RAM; Dalvik and native
-allocations you share with the Zygote process are shared dirty RAM.</dd>
-
-<dt>Proportional Set Size (PSS)</dt>
-<dd>This is a measurement of your app’s RAM use that takes into account sharing pages across processes.
-Any RAM pages that are unique to your process directly contribute to its PSS value, while pages
-that are shared with other processes contribute to the PSS value only in proportion to the amount
-of sharing. For example, a page that is shared between two processes will contribute half of its
-size to the PSS of each process.</dd>
-</dl>
-
-
-<p>A nice characteristic of the PSS measurement is that you can add up the PSS across all processes to
-determine the actual memory being used by all processes. This means PSS is a good measure for the
-actual RAM weight of a process and for comparison against the RAM use of other processes and the
-total available RAM.</p>
-
-
-<p>For example, below is the the output for Map’s process on a Nexus 5 device. There is a lot of
-information here, but key points for discussion are listed below.</p>
-<code>adb shell dumpsys meminfo com.google.android.apps.maps -d</code>
-
-<p class="note"><strong>Note:</strong> The information you see may vary slightly from what is shown
-here, as some details of the output differ across platform versions.</p>
-
-<pre class="no-pretty-print">
-** MEMINFO in pid 18227 [com.google.android.apps.maps] **
- Pss Private Private Swapped Heap Heap Heap
- Total Dirty Clean Dirty Size Alloc Free
- ------ ------ ------ ------ ------ ------ ------
- Native Heap 10468 10408 0 0 20480 14462 6017
- Dalvik Heap 34340 33816 0 0 62436 53883 8553
- Dalvik Other 972 972 0 0
- Stack 1144 1144 0 0
- Gfx dev 35300 35300 0 0
- Other dev 5 0 4 0
- .so mmap 1943 504 188 0
- .apk mmap 598 0 136 0
- .ttf mmap 134 0 68 0
- .dex mmap 3908 0 3904 0
- .oat mmap 1344 0 56 0
- .art mmap 2037 1784 28 0
- Other mmap 30 4 0 0
- EGL mtrack 73072 73072 0 0
- GL mtrack 51044 51044 0 0
- Unknown 185 184 0 0
- TOTAL 216524 208232 4384 0 82916 68345 14570
-
- Dalvik Details
- .Heap 6568 6568 0 0
- .LOS 24771 24404 0 0
- .GC 500 500 0 0
- .JITCache 428 428 0 0
- .Zygote 1093 936 0 0
- .NonMoving 1908 1908 0 0
- .IndirectRef 44 44 0 0
-
- Objects
- Views: 90 ViewRootImpl: 1
- AppContexts: 4 Activities: 1
- Assets: 2 AssetManagers: 2
- Local Binders: 21 Proxy Binders: 28
- Parcel memory: 18 Parcel count: 74
- Death Recipients: 2 OpenSSL Sockets: 2
-</pre>
-
-<p>Here is an older dumpsys on Dalvik of the gmail app:</p>
-
-<pre class="no-pretty-print">
-** MEMINFO in pid 9953 [com.google.android.gm] **
- Pss Pss Shared Private Shared Private Heap Heap Heap
- Total Clean Dirty Dirty Clean Clean Size Alloc Free
- ------ ------ ------ ------ ------ ------ ------ ------ ------
- Native Heap 0 0 0 0 0 0 7800 7637(6) 126
- Dalvik Heap 5110(3) 0 4136 4988(3) 0 0 9168 8958(6) 210
- Dalvik Other 2850 0 2684 2772 0 0
- Stack 36 0 8 36 0 0
- Cursor 136 0 0 136 0 0
- Ashmem 12 0 28 0 0 0
- Other dev 380 0 24 376 0 4
- .so mmap 5443(5) 1996 2584 2664(5) 5788 1996(5)
- .apk mmap 235 32 0 0 1252 32
- .ttf mmap 36 12 0 0 88 12
- .dex mmap 3019(5) 2148 0 0 8936 2148(5)
- Other mmap 107 0 8 8 324 68
- Unknown 6994(4) 0 252 6992(4) 0 0
- TOTAL 24358(1) 4188 9724 17972(2)16388 4260(2)16968 16595 336
-
- Objects
- Views: 426 ViewRootImpl: 3(8)
- AppContexts: 6(7) Activities: 2(7)
- Assets: 2 AssetManagers: 2
- Local Binders: 64 Proxy Binders: 34
- Death Recipients: 0
- OpenSSL Sockets: 1
-
- SQL
- MEMORY_USED: 1739
- PAGECACHE_OVERFLOW: 1164 MALLOC_SIZE: 62
-</pre>
-
-<p>Generally, you should be concerned with only the <code>Pss Total</code> and <code>Private Dirty</code>
-columns. In some cases, the <code>Private Clean</code> and <code>Heap Alloc</code> columns also offer
-interesting data. Here is some more information about the different memory allocations (the rows)
-you should observe:
-
-<dl>
-<dt><code>Dalvik Heap</code></dt>
-<dd>The RAM used by Dalvik allocations in your app. The <code>Pss Total</code> includes all Zygote
-allocations (weighted by their sharing across processes, as described in the PSS definition above).
-The <code>Private Dirty</code> number is the actual RAM committed to only your app’s heap, composed of
-your own allocations and any Zygote allocation pages that have been modified since forking your
-app’s process from Zygote.
-
-<p class="note"><strong>Note:</strong> On newer platform versions that have the <code>Dalvik
-Other</code> section, the <code>Pss Total</code> and <code>Private Dirty</code> numbers for Dalvik Heap do
-not include Dalvik overhead such as the just-in-time compilation (JIT) and GC
-bookkeeping, whereas older versions list it all combined under <code>Dalvik</code>.</p>
-
-<p>The <code>Heap Alloc</code> is the amount of memory that the Dalvik and native heap allocators keep
-track of for your app. This value is larger than <code>Pss Total</code> and <code>Private Dirty</code>
-because your process was forked from Zygote and it includes allocations that your process shares
-with all the others.</p>
-</dd>
-
-<dt><code>.so mmap</code> and <code>.dex mmap</code></dt>
-<dd>The RAM being used for mapped <code>.so</code> (native) and <code>.dex</code> (Dalvik or ART)
-code. The <code>Pss Total</code> number includes platform code shared across apps; the
-<code>Private Clean</code> is your app’s own code. Generally, the actual mapped size will be much
-larger—the RAM here is only what currently needs to be in RAM for code that has been executed by
-the app. However, the .so mmap has a large private dirty, which is due to fix-ups to the native
-code when it was loaded into its final address.
-</dd>
-
-<dt><code>.oat mmap</code></dt>
-<dd>This is the amount of RAM used by the code image which is based off of the preloaded classes
-which are commonly used by multiple apps. This image is shared across all apps and is unaffected
-by particular apps.
-</dd>
-
-<dt><code>.art mmap</code></dt>
-<dd>This is the amount of RAM used by the heap image which is based off of the preloaded classes
-which are commonly used by multiple apps. This image is shared across all apps and is unaffected
-by particular apps. Even though the ART image contains {@link java.lang.Object} instances, it does not
-count towards your heap size.
-</dd>
-
-<dt><code>.Heap</code> (only with -d flag)</dt>
-<dd>This is the amount of heap memory for your app. This excludes objects in the image and large
-object spaces, but includes the zygote space and non-moving space.
-</dd>
-
-<dt><code>.LOS</code> (only with -d flag)</dt>
-<dd>This is the amount of RAM used by the ART large object space. This includes zygote large
-objects. Large objects are all primitive array allocations larger than 12KB.
-</dd>
-
-<dt><code>.GC</code> (only with -d flag)</dt>
-<dd>This is the amount of internal GC accounting overhead for your app. There is not really any way
-to reduce this overhead.
-</dd>
-
-<dt><code>.JITCache</code> (only with -d flag)</dt>
-<dd>This is the amount of memory used by the JIT data and code caches. Typically, this is zero
-since all of the apps will be compiled at installed time.
-</dd>
-
-<dt><code>.Zygote</code> (only with -d flag)</dt>
-<dd>This is the amount of memory used by the zygote space. The zygote space is created during
-device startup and is never allocated into.
-</dd>
-
-<dt><code>.NonMoving</code> (only with -d flag)</dt>
-<dd>This is the amount of RAM used by the ART non-moving space. The non-moving space contains
-special non-movable objects such as fields and methods. You can reduce this section by using fewer
-fields and methods in your app.
-</dd>
-
-<dt><code>.IndirectRef</code> (only with -d flag)</dt>
-<dd>This is the amount of RAM used by the ART indirect reference tables. Usually this amount is
-small, but if it is too high, it may be possible to reduce it by reducing the number of local and
-global JNI references used.
-</dd>
-
-<dt><code>Unknown</code></dt>
-<dd>Any RAM pages that the system could not classify into one of the other more specific items.
-Currently, this contains mostly native allocations, which cannot be identified by the tool when
-collecting this data due to Address Space Layout Randomization (ASLR). As with the Dalvik heap, the
-<code>Pss Total</code> for Unknown takes into account sharing with Zygote, and <code>Private Dirty</code>
-is unknown RAM dedicated to only your app.
-</dd>
-
-<dt><code>TOTAL</code></dt>
-<dd>The total Proportional Set Size (PSS) RAM used by your process. This is the sum of all PSS fields
-above it. It indicates the overall memory weight of your process, which can be directly compared
-with other processes and the total available RAM.
-
-<p>The <code>Private Dirty</code> and <code>Private Clean</code> are the total allocations within your
-process, which are not shared with other processes. Together (especially <code>Private Dirty</code>),
-this is the amount of RAM that will be released back to the system when your process is destroyed.
-Dirty RAM is pages that have been modified and so must stay committed to RAM (because there is no
-swap); clean RAM is pages that have been mapped from a persistent file (such as code being
-executed) and so can be paged out if not used for a while.</p>
-
-</dd>
-
-<dt><code>ViewRootImpl</code></dt>
-<dd>The number of root views that are active in your process. Each root view is associated with a
-window, so this can help you identify memory leaks involving dialogs or other windows.
-</dd>
-
-<dt><code>AppContexts</code> and <code>Activities</code></dt>
-<dd>The number of app {@link android.content.Context} and {@link android.app.Activity} objects that
-currently live in your process. This can be useful to quickly identify leaked {@link
-android.app.Activity} objects that can’t be garbage collected due to static references on them,
-which is common. These objects often have a lot of other allocations associated with them and so
-are a good way to track large memory leaks.</dd>
-
-<p class="note"><strong>Note:</strong> A {@link android.view.View} or {@link
-android.graphics.drawable.Drawable} object also holds a reference to the {@link
-android.app.Activity} that it's from, so holding a {@link android.view.View} or {@link
-android.graphics.drawable.Drawable} object can also lead to your app leaking an {@link
-android.app.Activity}.</p>
-
-</dd>
-</dl>
-
-
-
-
-
-
-
-
-
-<h2 id="HeapDump">Capturing a Heap Dump</h2>
-
-<p>A heap dump is a snapshot of all the objects in your app's heap, stored in a binary format called
-HPROF. Your app's heap dump provides information about the overall state of your app's heap so you
-can track down problems you might have identified while viewing heap updates.</p>
-
-
-<p>To retrieve your heap dump from within Android Studio, use the
-<a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> and
-<a href="{@docRoot}tools/studio/index.html#heap-dump">HPROF viewer</a>.
-
-<p>You can also still perform these procedures in the Android monitor:</p>
-<ol>
-<li>Open the Device Monitor.
-<p>From your <code><sdk>/tools/</code> directory, launch the <code>monitor</code> tool.</p>
-</li>
-<li>In the DDMS window, select your app's process in the left-side panel.</li>
-<li>Click <strong>Dump HPROF file</strong>, shown in figure 3.</li>
-<li>In the window that appears, name your HPROF file, select the save location,
-then click <strong>Save</strong>.</li>
-</ol>
-
-<img src="{@docRoot}images/tools/monitor-hprof@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 3.</strong> The Device Monitor tool,
-showing the <strong>[1] Dump HPROF file</strong> button.</p>
-
-<p>If you need to be more precise about when the dump is created, you can also create a heap dump
-at the critical point in your app code by calling {@link android.os.Debug#dumpHprofData
-dumpHprofData()}.</p>
-
-<p>The heap dump is provided in a format that's similar to, but not identical to one from the Java
-HPROF tool. The major difference in an Android heap dump is due to the fact that there are a large
-number of allocations in the Zygote process. But because the Zygote allocations are shared across
-all app processes, they don’t matter very much to your own heap analysis.</p>
-
-<p>To analyze your heap dump, you can use <a href=
-"{@docRoot}tools/help/am-memory.html">Memory Monitor</a> in Android Studio.
-You can also use a standard tool like jhat. However, first
-you'll need to convert the HPROF file from Android's format to the J2SE HPROF format. You can do
-this using the <code>hprof-conv</code> tool provided in the
-<code><sdk>/platform-tools/</code>
-directory. Simply run the <code>hprof-conv</code> command with two arguments: the original HPROF
-file and the location to write the converted HPROF file. For example:</p>
-
-<pre class="no-pretty-print">
-hprof-conv heap-original.hprof heap-converted.hprof
-</pre>
-
-
-
-<p>You can now load the converted file into a heap analysis tool that understands
-the J2SE HPROF format.</p>
-
-<p>When analyzing your heap, you should look for memory leaks caused by:</p>
-<ul>
-<li>Long-lived references to an Activity, Context, View, Drawable, and other objects that may hold a
-reference to the container Activity or Context.</li>
-<li>Non-static inner classes (such as a Runnable, which can hold the Activity instance).</li>
-<li>Caches that hold objects longer than necessary.</li>
-</ul>
-
-
-
-
-<h2 id="TriggerLeaks">Triggering Memory Leaks</h2>
-
-<p>While using the tools described above, you should aggressively stress your app code and try
-forcing memory leaks. One way to provoke memory leaks in your app is to let it
-run for a while before inspecting the heap. Leaks will trickle up to the top of the allocations in
-the heap. However, the smaller the leak, the longer you need to run the app in order to see it.</p>
-
-<p>You can also trigger a memory leak in one of the following ways:</p>
-<ol>
-<li>Rotate the device from portrait to landscape and back again multiple times while in different
-activity states. Rotating the device can often cause an app to leak an {@link android.app.Activity},
-{@link android.content.Context}, or {@link android.view.View} object because the system
-recreates the {@link android.app.Activity} and if your app holds a reference
-to one of those objects somewhere else, the system can't garbage collect it.</li>
-<li>Switch between your app and another app while in different activity states (navigate to
-the Home screen, then return to your app).</li>
-</ol>
-
-<p class="note"><strong>Tip:</strong> You can also perform the above steps by using the "monkey"
-test framework. For more information on running the monkey test framework, read the <a href=
-"{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a>
-documentation.</p>
diff --git a/docs/html/tools/debugging/debugging-studio.jd b/docs/html/tools/debugging/debugging-studio.jd
deleted file mode 100644
index 7e54634..0000000
--- a/docs/html/tools/debugging/debugging-studio.jd
+++ /dev/null
@@ -1,421 +0,0 @@
-page.title=Debugging with Android Studio
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
- <li><a href="#runDebug">Run your App in Debug Mode</a>
- <ol>
- <li><a href="#attachDebug">Attach the debugger to a running process</a></li>
- </ol>
- <li><a href="#systemLog">Use the System Log</a>
- <ol>
- <li><a href="#systemLogWrite">Write log messages in your code</a></li>
- <li><a href="#systemLogView">View the system log</a></li>
- </ol>
- </li>
- <li><a href="#breakPoints">Work with Breakpoints</a>
- <ol>
- <li><a href="#breakPointsView">View and configure breakpoints</a></li>
- <li><a href="#breakPointsDebug">Debug your app with breakpoints</a></li>
- </ol>
- </li>
- <li><a href="#allocTracker">Track Object Allocation</a></li>
- <li><a href="#deviceMonitor">Analyze Runtime Metrics to Optimize your App</a></li>
- <li><a href="#screenCap">Capture Screenshots and Videos</a></li>
-</ol>
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}sdk/installing/studio-tips.html">
-Android Studio Tips and Tricks</a></li>
-<li><a href="{@docRoot}tools/debugging/index.html">Debugging</a></li>
-<li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
-<li><a href="{@docRoot}tools/help/monitor.html">Device Monitor</a></li>
-<li><a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a></li>
-</div>
-</div>
-
-<p>Android Studio enables you to debug apps running on the emulator or on an Android device.
-With Android Studio, you can:</p>
-
-<ul>
- <li>Select a device to debug your app on.</li>
- <li>View the system log.</li>
- <li>Set breakpoints in your code.</li>
- <li>Examine variables and evaluate expressions at run time.</li>
- <li>Run the debugging tools from the Android SDK.</li>
- <li>Capture screenshots and videos of your app.</li>
-</ul>
-
-<p>To debug your app, Android Studio builds a debuggable version of your app, connects
-to a device or to the emulator, installs the app and runs it. The IDE shows the system log
-while your app is running and provides debugging tools to filter log messages, work with
-breakpoints, and control the execution flow.</p>
-
-
-<h2 id="runDebug">Run your App in Debug Mode</h2>
-
-<div class="figure" style="width:419px">
- <img src="{@docRoot}images/tools/as-debugdevices.png" alt=""/>
- <p class="img-caption"><strong>Figure 1.</strong> The Choose Device window enables you to
- select a physical Android device or a virtual device to debug your app.</p>
-</div>
-
-<p>To run your app in debug mode, you build an APK signed with a debug key and install it on a
-physical Android device or on the Android emulator.
-To set up an Android device for development, see <a href="{@docRoot}tools/device.html">Using
-Hardware Devices</a>. For more information about the emulator provided by the Android SDK, see
-<a href="{@docRoot}tools/devices/emulator.html">Using the Emulator.</a></p>
-
-<p>To debug your app in Android Studio:</p>
-
-<ol>
- <li>Open your project in Android Studio.</li>
- <li>Click <strong>Debug</strong> <img src="{@docRoot}images/tools/as-debugbutton.png"
- style="vertical-align:bottom;margin:0;height:22px" alt=""/> in the toolbar.</li>
- <li>On the <em>Choose Device</em> window, select a hardware device from the list or
- choose a virtual device.</li>
- <li>Click <strong>OK</strong>. Your app starts on the selected device.</li>
-</ol>
-
-<p>Figure 1 shows the <em>Choose Device</em> window. The list shows all the Android devices
-connected to your computer. Select <strong>Launch Emulator</strong> to use an Android virtual device
-instead. Click the ellipsis <img src="{@docRoot}images/tools/as-launchavdm.png"
-style="vertical-align:bottom;margin:0;height:19px" alt=""/> to open the
-<a href="{@docRoot}tools/devices/managing-avds.html">Android Virtual Device Manager</a>.</p>
-
-<p>Android Studio opens the <em>Debug</em> tool window when you debug your app. To open the
-<em>Debug</em> window manually, click <strong>Debug</strong>
-<img src="{@docRoot}images/tools/as-debugwindowbutton.png"
-alt="" style="vertical-align:bottom;margin:0;height:20px"/>.
-This window shows threads and variables in the <em>Debugger</em> tab, the device status in the
-<em>Console</em> tab, and the system log in the <em>Logcat</em> tab. The <em>Debug</em> tool
-window also provides other debugging tools covered in the following sections.</p>
-
-<img src="{@docRoot}images/tools/as-debugview.png" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> The Debug tool window in Android Studio showing
-the current thread and the object tree for a variable.</p>
-
-<h3 id="attachDebug">Attach the debugger to a running process</h3>
-
-<p>You don't always have to restart your app to debug it. To debug an app that
-you're already running:</p>
-
-<ol>
-<li>Click <strong>Attach debugger to Android process</strong>
-<img src="{@docRoot}images/tools/as-attach.png"
-alt="Attach debugger to Android process icon"
-style="vertical-align:bottom;margin:0;height:20px"/>.</li>
-<li>In the <em>Choose Process</em> dialog, select the process you want to
-attach the debugger to.</li>
-<p>By default, the debugger shows the device and app process for the current
-project, as well as any connected hardware devices or virtual devices on your
-computer. Select <strong>Show all processes</strong> to show all processes on
-all devices; the display includes any services that your app created as well as
-system processes, for example.</p>
-<p>From the <strong>Debugger</strong> menu, you can select <strong>Java</strong>,
-<strong>Native</strong>, or <strong>Hybrid</strong>. The latter two options are
-available only if your project contains some native C or C++ source code.</p>
-<li>Click <strong>OK</strong>.</li>
-<p>The <em>Debug</em> window appears. In this case, notice the two tabs to the
-right of the Debug window title: one tab is for debugging native code and the
-other for Java code, as indicated by <strong>-java</strong>. </p>
-<img src="{@docRoot}images/tools/db-attachprocess.png" width="587"
-alt="" />
-<p>Separate debugging sessions have separate tabs and different port numbers,
-which are displayed in parentheses in the tab.</p>
-</ol>
-
-<h2 id="systemLog">Use the System Log</h2>
-
-<p>The system log shows system messages while you debug your app. These messages include
-information from apps running on the device. If you want to use the
-system log to debug your app, make sure your code writes log messages and prints the stack
-trace for exceptions while your app is in the development phase.</p>
-
-<h3 id="systemLogWrite">Write log messages in your code</h3>
-
-<p>To write log messages in your code, use the {@link android.util.Log} class. Log messages
-help you understand the execution flow by collecting the system debug output while you interact
-with your app. Log messages can tell you what part of your application failed. For more
-information about logging, see <a href="{@docRoot}tools/debugging/debugging-log.html">
-Reading and Writing Logs</a>.</p>
-
-<p>The following example shows how you might add log messages to determine if previous state
-information is available when your activity starts:</p>
-
-<pre>
-import android.util.Log;
-...
-public class MyActivity extends Activity {
- private static final String TAG = MyActivity.class.getSimpleName();
- ...
- @Override
- public void onCreate(Bundle savedInstanceState) {
- if (savedInstanceState != null) {
- Log.d(TAG, "onCreate() Restoring previous state");
- /* restore state */
- } else {
- Log.d(TAG, "onCreate() No saved state available");
- /* initialize app */
- }
- }
-}
-</pre>
-
-<p>During development, your code can also catch exceptions and write the stack trace to the system
-log:</p>
-
-<pre>
-void someOtherMethod() {
- try {
- ...
- } catch (SomeException e) {
- Log.d(TAG, "someOtherMethod()", e);
- }
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> Remove debug log messages and stack trace print calls from
-your code when you are ready to publish your app. You could do this by setting a <code>DEBUG</code>
-flag and placing debug log messages inside conditional statements.</p>
-
-
-<h3 id="systemLogView">View the system log</h3>
-
-<p>Both the <em>Android DDMS</em> (Dalvik Debug Monitor Server) and the <em>Debug</em> tool windows
-show the system log; however, the <em>Android DDMS</em> tool window lets you view only log messages
-for a particular process. To view the system log on the <em>Android DDMS</em> tool window:</p>
-
-<ol>
- <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
- <li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
- tool window.</li>
- <li>If the system log is empty in the <em>Logcat view</em>, click <strong>Restart</strong>
- <img src="{@docRoot}images/tools/as-restart.png" alt=""
- style="vertical-align:bottom;margin:0;height:22px"/>.</li>
-</ol>
-
-<img src="{@docRoot}images/tools/as-ddmslog.png" alt="" />
-<p class="img-caption"><strong>Figure 4.</strong> The system log in the Android DDMS tool
-window.</p>
-
-<p>The <em>Android DDMS</em> tool window gives you access to some DDMS features from Android Studio.
-For more information about DDMS, see <a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>.
-</p>
-
-<p>The system log shows messages from Android services and other Android apps. To filter the log
-messages to view only the ones you are interested in, use the tools in the <em>Android DDMS</em>
-window:</p>
-
-<ul>
- <li>To show only log messages for a particular process, select the process in the
- <em>Devices</em> view and then click <strong>Only Show Logcat from Selected
- Process</strong> <img src="{@docRoot}images/tools/as-currentproc.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/>. If the <em>Devices</em> view
- is not available, click <strong>Restore Devices View</strong>
- <img src="{@docRoot}images/tools/as-showdevview.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/> on the right of the <em>Android
- DDMS</em> tool window. This button is only visible when you hide the <em>Devices</em>
- window.</li>
- <li>To filter log messages by log level, select a level under <em>Log Level</em> on the top
- of the <em>Android DDMS</em> window.</li>
- <li>To show only log messages that contain a particular string, enter the string in the search
- box and press <strong>Enter</strong>.</li>
-</ul>
-
-
-<h2 id="breakPoints">Work with Breakpoints</h2>
-
-<p>Breakpoints enable you to pause the execution of your app at a particular line of code, examine
-variables, evaluate expressions, and continue the execution line by line. Use breakpoints to
-determine the causes of run-time errors that you can't fix by looking at your code only. To debug
-your app using breakpoints:</p>
-
-<ol>
- <li>Open the source file in which you want to set a breakpoint.</li>
- <li>Locate the line where you want to set a breakpoint and click on it.</li>
- <li>Click on the yellow portion of the side bar to the left of this line, as shown in figure 5.</li>
- <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
-</ol>
-
-<p>Android Studio pauses the execution of your app when it reaches the breakpoint. You can then
-use the tools in the <em>Debug</em> tool window to identify the cause of the error.</p>
-
-<img src="{@docRoot}images/tools/as-breakpointline.png" alt="" />
-<p class="img-caption"><strong>Figure 5.</strong> A red dot appears next to the line when you set
-a breakpoint.</p>
-
-<h3 id="breakPointsView">View and configure breakpoints</h3>
-
-<p>To view all the breakpoints and configure breakpoint settings, click <strong>View
-Breakpoints</strong> <img src="{@docRoot}images/tools/as-viewbreakbutton.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> on the left side of the <em>Debug</em> tool
-window. The <em>Breakpoints</em> window appears, as shown in figure 6.</p>
-
-<img src="{@docRoot}images/tools/as-breakpointswindow.png" alt="" />
-<p class="img-caption"><strong>Figure 6.</strong> The Breakpoints window lists all the current
-breakpoints and includes behavior settings for each.</p>
-
-<p>The <em>Breakpoints</em> window lets you enable or disable each breakpoint from the
-list on the left. If a breakpoint is disabled, Android Studio does not pause your app when
-it hits that breakpoint. Select a breakpoint from the list to configure its settings.
-You can configure a breakpoint to be disabled at first and have the system enable it after a
-different breakpoint is hit. You can also configure whether a breakpoint should be disabled after
-it is hit. To set a breakpoint for any exception, select <strong>Exception Breakpoints</strong>
-in the list of breakpoints.</p>
-
-<h3 id="breakPointsDebug">Debug your app with breakpoints</h3>
-
-<p>After you set breakpoints in your code, click <strong>Rerun</strong>
-<img src="{@docRoot}images/tools/as-restart.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> to start the app again. When a breakpoint is
-hit, Android Studio pauses the app and highlights the breakpoint in the source code. The
-<em>Debug</em> tool window lets you examine variables and control the execution step by
-step:</p>
-
-<ul>
- <li>
- <p>To examine the object tree for a variable, expand it in the <em>Variables</em> view. If
- the <em>Variables</em> view is not visible, click <strong>Restore Variables View</strong>
- <img src="{@docRoot}images/tools/as-varviewbutton.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/>.</p>
- </li>
- <li>
- <p>To evaluate an expression at the current execution point, click <strong>Evaluate
- Expression</strong> <img src="{@docRoot}images/tools/as-evalexpbutton.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/>.</p>
- </li>
- <li>
- <p>To advance to the next line in the code (without entering a method), click <strong>Step
- Over</strong> <img src="{@docRoot}images/tools/as-stepoverbutton.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/>.</p>
- </li>
- <li>
- <p>To advance to the first line inside a method call, click <strong>Step
- Into</strong> <img src="{@docRoot}images/tools/as-stepintobutton.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/>.</p>
- </li>
- <li>
- <p>To advance to the next line outside the current method, click <strong>Step
- Out</strong> <img src="{@docRoot}images/tools/as-stepoutbutton.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/>.</p>
- </li>
- <li>
- <p>To continue running the app normally, click <strong>Resume Program</strong>
- <img src="{@docRoot}images/tools/as-resumeprogrambutton.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/>.</p>
- </li>
-</ul>
-
-<img src="{@docRoot}images/tools/as-variablesview.png" alt="" />
-<p class="img-caption"><strong>Figure 7.</strong> The Variables view in the Debug tool window.</p>
-
-
-<h2 id="allocTracker">Track Object Allocation</h2>
-
-<p>Android Studio lets you track objects that are being allocated on the Java heap and see which
-classes and threads are allocating these objects. This allows you to see the list of objects
-allocated during a period of interest. This information is valuable for assessing memory usage
-that can affect application performance.</p>
-
-<p>To track memory allocation of objects:</p>
-
-<ol>
-<li>Start your app as described in <a href="#runDebug">Run Your App in Debug Mode</a>.</li>
-<li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
-tool window.</li>
-<li>On the <em>Android DDMS</em> tool window, select the <strong>Devices | logcat tab</strong>.</li>
-<li>Select your device from the dropdown list.</li>
-<li>Select your app by its package name from the list of running apps.</li>
-<li>Click <strong>Start Allocation Tracking</strong>
-<img src="{@docRoot}images/tools/as-allocstart.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/></li>
-<li>Interact with your app on the device.</li>
-<li>Click <strong>Stop Allocation Tracking</strong>
-<img src="{@docRoot}images/tools/as-allocstop.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/></li>
-</ol>
-
-<p>Android Studio shows the objects that the system allocated with the following information:</p>
-
-<ul>
-<li>Allocation order</li>
-<li>Allocated class</li>
-<li>Allocation size</li>
-<li>Thread ID</li>
-<li>Allocation method, class, and line number</li>
-<li>Stack trace at the point of allocation</li>
-</ul>
-
-<img src="{@docRoot}images/tools/as-alloctrack.png" alt="" width="750" height="252" />
-<p class="img-caption"><strong>Figure 8.</strong> Object allocation tracking in Android Studio.</p>
-
-
-<h2 id="deviceMonitor">Analyze Runtime Metrics to Optimize your App</h2>
-
-<p>Even if your application does not generate runtime errors, this does not mean it is free of
-problems. You should also consider the following issues:</p>
-
-<ul>
- <li>Does your app use memory efficiently?</li>
- <li>Does your app generate unnecessary network traffic?</li>
- <li>What methods should you focus your attention on to improve the performance of your app?</li>
- <li>Does your app behave properly when the user receives a phone call or a message?</li>
-</ul>
-
-<p>The Android Device Monitor is a stand-alone tool with a graphical user interface for serveral
-Android application debugging and analysis tools, including the Dalvik Debug Monitor Server (DDMS).
-You can use the Android Device Monitor to analyze memory usage, profile methods,
-monitor network traffic and simulate incoming calls and messages.</p>
-
-<p>To open the Android Device Monitor from Android Studio, click
-<strong>Monitor</strong> <img src="{@docRoot}images/tools/as-monitorbutton.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> on the toolbar. The Android Device Monitor
-opens in a new window.</p>
-
-<p>For more information about the Android Device Monitor and DDMS, see
-<a href="{@docRoot}tools/help/monitor.html">Device Monitor</a> and
-<a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>.</p>
-
-
-<h2 id="screenCap">Capture Screenshots and Videos</h2>
-
-<p>Android Studio enables you to capture a screenshot or a short video of the device screen
-while your app is running. Screenshots and videos are useful as promotional materials for your
-app, and you can also attach them to bug reports that you send to your development team.</p>
-
-<p>To take a screenshot of your app:</p>
-
-<ol>
- <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
- <li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
- tool window.</li>
- <li>Click <strong>Screen Capture</strong> <img src="{@docRoot}images/tools/as-capture.png"
- style="vertical-align:bottom;margin:0;height:22px" alt=""/> on the left side of the
- <em>Android DDMS</em> tool window.</li>
- <li>Optional: To add a device frame around your screenshot, enable the <em>Frame screenshot</em>
- option.</li>
- <li>Click <strong>Save</strong>.</li>
-</ol>
-
-<p>To take a video recording of your app:</p>
-
-<ol>
- <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
- <li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
- style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
- tool window.</li>
- <li>Click <strong>Screen Record</strong> <img src="{@docRoot}images/tools/as-record.png"
- style="vertical-align:bottom;margin:0;height:22px" alt=""/> on the left side of the
- <em>Android DDMS</em> tool window.</li>
- <li>Click <strong>Start Recording</strong>.</li>
- <li>Interact with your app.</li>
- <li>Click <strong>Stop Recording</strong>.</li>
- <li>Enter a file name for the recording and click <strong>OK</strong>.</li>
-</ol>
diff --git a/docs/html/tools/debugging/debugging-tracing.jd b/docs/html/tools/debugging/debugging-tracing.jd
deleted file mode 100644
index 70869da..0000000
--- a/docs/html/tools/debugging/debugging-tracing.jd
+++ /dev/null
@@ -1,298 +0,0 @@
-page.title=Profiling with Traceview and dmtracedump
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li>
- <a href="#traceviewLayout">Traceview Layout</a>
-
- <ol>
- <li><a href="#timelinepanel">Timeline Panel</a></li>
-
- <li><a href="#profilepanel">Profile Panel</a></li>
- </ol>
- </li>
-
- <li><a href="#creatingtracefiles">Creating Trace Files</a></li>
-
- <li><a href="#copyingfiles">Copying Trace Files to a Host Machine</a></li>
-
- <li><a href="#runningtraceview">Viewing Trace Files in Traceview</a></li>
-
- <li><a href="#dmtracedump">Using dmtracedump</a></li>
-
- <li><a href="#knownissues">Traceview Known Issues</a></li>
- </ol>
- </div>
- </div>
-
- <p>Traceview is a graphical viewer for execution logs that you create by using the {@link
- android.os.Debug} class to log tracing information in your code. Traceview can help you debug
- your application and profile its performance.</p>
-
- <h2 id="traceviewLayout">Traceview Layout</h2>
-
- <p>When you have a trace log file (generated by adding tracing code to your application or by DDMS),
- you can load the log files in Traceview, which displays the log data in two panels:</p>
-
- <ul>
- <li>A <a href="#timelinepanel">timeline panel</a> -- describes when each thread and method
- started and stopped</li>
-
- <li>A <a href="#timelinepanel">profile panel</a> -- provides a summary of what happened inside
- a method</li>
- </ul>
-
- <p>The sections below provide addition information about the traceview output panes.</p>
-
- <h3 id="timelinepanel">Timeline Panel</h3>
-
- <p>Figure 1 shows a close up of the timeline panel. Each thread’s execution is shown
- in its own row, with time increasing to the right. Each method is shown in another color (colors
- are reused in a round-robin fashion starting with the methods that have the most inclusive time).
- The thin lines underneath the first row show the extent (entry to exit) of all the calls to the
- selected method.</p>
-
- <img src="{@docRoot}images/traceview_timeline.png"
- alt="Traceview timeline panel"
- width="893"
- height="284" />
- <p class="img-caption"><strong>Figure 1.</strong> The Traceview Timeline Panel</p>
-
- <h3 id="profilepanel">Profile Panel</h3>
-
- <p>Figure 2 shows the profile pane, a summary of all the time spent
- in a method. The table shows both the inclusive and exclusive times (as well as the percentage of
- the total time). Exclusive time is the time spent in the method. Inclusive time is the time spent
- in the method plus the time spent in any called functions. We refer to calling methods as
- "parents" and called methods as "children." When a method is selected (by clicking on it), it
- expands to show the parents and children. Parents are shown with a purple background and children
- with a yellow background. The last column in the table shows the number of calls to this method
- plus the number of recursive calls. The last column shows the number of calls out of the total
- number of calls made to that method. In this view, we can see that there were 14 calls to
- <code>LoadListener.nativeFinished();</code> looking at the timeline panel shows that one of those calls took
- an unusually long time.</p>
-
- <img src="{@docRoot}images/traceview_profile.png"
- alt="Traceview profile panel."
- width="892"
- height="630" />
- <p class="img-caption"><strong>Figure 2.</strong> The Traceview Profile Panel</p>
-
- <h2 id="creatingtracefiles">Creating Trace Files</h2>
-
- <p>To use Traceview, you need to generate log files containing the trace information you want to
- analyze.</p>
-
- <p>There are two ways to generate trace logs:</p>
- <ul>
- <li>Include the {@link android.os.Debug} class in your code and call its
- methods such as {@link android.os.Debug#startMethodTracing()} and {@link
- android.os.Debug#stopMethodTracing()}, to start and stop logging of trace information to disk.
- This option is very precise because
- you can specify exactly where to start and stop logging trace data in your code.</li>
- <li>Use the method profiling feature of DDMS to generate trace logs. This option is less
- precise because you do not modify code, but rather specify when to start and stop logging with
- DDMS. Although you have less control on exactly where logging starts and stops,
- this option is useful if you don't have access to the application's code, or if you do
- not need precise log timing.
- </li>
- </ul>
-
- <p>Before you start generating trace logs, be aware of the following restrictions:</p>
- <ul>
- <li>If you are using the {@link android.os.Debug} class,
- your application must have permission to write to external storage
- ({@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE}). </li>
- <li>If you are using DDMS:
- <ul>
- <li>Android 2.1 and earlier devices must
- have an SD card present and your application must have permission to write to the SD card.
- <li>Android 2.2 and later devices do not need an SD card. The trace log files are
- streamed directly to your development machine.</li>
- </ul>
- </li>
- </ul>
-
- <p>This document focuses on using the {@link android.os.Debug} class to generate trace data. For more information on using DDMS
- to generate trace data, see <a href="ddms.html#profiling">Using the Dalvik Debug Monitor Server.</a>
- </p>
-
- <p>To create the trace files, include the {@link android.os.Debug} class and call one of the
- {@link android.os.Debug#startMethodTracing() startMethodTracing()} methods. In the call, you
- specify a base name for the trace files that the system generates. To stop tracing, call {@link
- android.os.Debug#stopMethodTracing() stopMethodTracing()}. These methods start and stop method
- tracing across the entire virtual machine. For example, you could call
- {@link android.os.Debug#startMethodTracing() startMethodTracing()} in
- your activity's {@link android.app.Activity#onCreate onCreate()} method, and call
- {@link android.os.Debug#stopMethodTracing() stopMethodTracing()} in that activity's
- {@link android.app.Activity#onDestroy()} method.</p>
- <pre>
- // start tracing to "/sdcard/calc.trace"
- Debug.startMethodTracing("calc");
- // ...
- // stop tracing
- Debug.stopMethodTracing();
-</pre>
-
- <p>When your application calls {@link android.os.Debug#startMethodTracing() startMethodTracing()},
- the system creates a file called
- <code><trace-base-name>.trace</code>. This contains the binary method trace data and a
- mapping table with thread and method names.</p>
-
- <p>The system then begins buffering the generated trace data, until your application calls
- {@link android.os.Debug#stopMethodTracing() stopMethodTracing()}, at which time it writes
- the buffered data to the output file. If the system
- reaches the maximum buffer size before you call {@link android.os.Debug#stopMethodTracing()
- stopMethodTracing()}, the system stops tracing
- and sends a notification to the console.</p>
-
- <p>Interpreted code runs more slowly when profiling is enabled. Don't try to generate
- absolute timings from the profiler results (such as, "function X takes 2.5 seconds to run"). The
- times are only useful in relation to other profile output, so you can see if changes have made
- the code faster or slower relative to a previous profiling run.</p>
-
- <p>In Android 4.4 and later, you can use sample-based profiling to profile with less runtime
- performance impact. To enable sample profiling, call {@link
- android.os.Debug#startMethodTracingSampling(java.lang.String, int, int)
- startMethodTracingSampling()} with a specified sampling interval. The system will then gather
- samples periodically until tracing is stopped via {@link android.os.Debug#stopMethodTracing()
- stopMethodTracing()}.</p>
-
- <h2 id="copyingfiles">Copying Trace Files to a Host Machine</h2>
-
- <p>After your application has run and the system has created your trace files
- <code><trace-base-name>.trace</code> on a device or emulator, you must copy those files to
- your development computer. You can use <code>adb pull</code> to copy the files. Here's an example
- that shows how to copy an example file, calc.trace, from the default location on the emulator to
- the /tmp directory on the emulator host machine:</p>
- <pre>
-adb pull /sdcard/calc.trace /tmp
-</pre>
-
- <h2 id="runningtraceview">Viewing Trace Files in Traceview</h2>
-
- <p>To run Traceview and view the trace files:</p>
- <ul>
- <li>start the
- <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>. </li>
- <li>In the Android Device Monitor tool bar, click <strong>DDMS</strong> and select a process. </li>
- <li>Click the <strong>Start Method Profiling</strong> icon to start method profiling. </li>
- <li>After the profiling is complete, click the <strong>Stop Method Profiling</strong> icon to
- display the traceview. </li>
- </ul>
-
- <p class="note"><strong>Note:</strong> If you are trying to view the trace logs of an application
- that is built with ProGuard enabled (release mode build), some method and member names might be obfuscated.
- You can use the Proguard <code>mapping.txt</code> file to figure out the original unobfuscated names. For more information
- on this file, see the <a href="{@docRoot}tools/help/proguard.html">Proguard</a> documentation.</p>
-
- <h2 id="dmtracedump">Using dmtracedump</h2>
-
- <p><code>dmtracedump</code> is a tool that gives you an alternate way of generating
- graphical call-stack diagrams from trace log files. The tool uses the Graphviz Dot utility to
- create the graphical output, so you need to install Graphviz before running dmtracedump.</p>
-
- <p>The dmtracedump tool generates the call stack data as a tree diagram, with each call
- represented as a node. It shows call flow (from parent node to child nodes) using arrows. The
- diagram below shows an example of dmtracedump output.</p>
- <img src=
- "{@docRoot}images/tracedump.png"
- width="485"
- height="401" />
- <p class="img-caption"><strong>Figure 3.</strong> Screenshot of dmtracedump</p>
-
- <p>For each node, dmtracedump shows <code><ref>
- <em>callname</em> (<inc-ms>, <exc-ms>,<numcalls>)</code>, where</p>
-
- <ul>
- <li><code><ref></code> -- Call reference number, as used in trace logs</li>
-
- <li><code><inc-ms></code> -- Inclusive elapsed time (milliseconds spent in method,
- including all child methods)</li>
-
- <li><code><exc-ms></code> -- Exclusive elapsed time (milliseconds spent in method,
- not including any child methods)</li>
-
- <li><code><numcalls></code> -- Number of calls</li>
- </ul>
-
- <p>The usage for dmtracedump is:</p>
- <pre>
-dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] <trace-base-name>
-</pre>
-
- <p>The tool then loads trace log data from <code><trace-base-name>.data</code> and
- <code><trace-base-name>.key</code>. The table below lists the options for dmtracedump.</p>
-
- <table>
- <tr>
- <th>Option</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><code>-d <trace-base-name></code></td>
-
- <td>Diff with this trace name</td>
- </tr>
-
- <tr>
- <td><code>-g <outfile></code></td>
-
- <td>Generate output to <outfile></td>
- </tr>
-
- <tr>
- <td><code>-h</code></td>
-
- <td>Turn on HTML output</td>
- </tr>
-
- <tr>
- <td><code>-o</code></td>
-
- <td>Dump the trace file instead of profiling</td>
- </tr>
-
- <tr>
- <td><code>-d <trace-base-name></code></td>
-
- <td>URL base to the location of the sortable javascript file</td>
- </tr>
-
- <tr>
- <td><code>-t <percent></code></td>
-
- <td>Minimum threshold for including child nodes in the graph (child's inclusive time as a
- percentage of parent inclusive time). If this option is not used, the default threshold
- is 20%.</td>
- </tr>
- </table>
-
-
-
- <h2 id="knownissues">Traceview Known Issues</h2>
-
- <dl>
- <dt>Threads</dt>
-
- <dd>
- Traceview logging does not handle threads well, resulting in these two problems:
-
- <ol>
- <li>If a thread exits during profiling, the thread name is not emitted (fixed in Android 5.1
- and later);</li>
-
- <li>The VM reuses thread IDs. If a thread stops and another starts, they may get the same
- ID.</li>
- </ol>
- </dd>
-
- </dl>
diff --git a/docs/html/tools/debugging/debugging-ui.jd b/docs/html/tools/debugging/debugging-ui.jd
deleted file mode 100644
index cf7e3ba..0000000
--- a/docs/html/tools/debugging/debugging-ui.jd
+++ /dev/null
@@ -1,503 +0,0 @@
-page.title=Optimizing Your UI
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li>
- <a href="#HierarchyViewer">
- Using Hierarchy Viewer
- </a>
- <ol>
- <li><a href="#runhv">Running Hierarchy Viewer and choosing a window</a></li>
- <li><a href="#viewhierarchy">About the View Hierarchy window</a></li>
- <li><a href="#indiView">Working with an individual View in Tree View</a></li>
- <li><a href="#hvdebugging">Debugging with View Hierarchy</a></li>
- <li><a href="#hvoptimize">Optimizing with View Hierarchy</a></li>
- </ol>
- </li>
- <li>
- <a href="#pixelperfect">
- Using Pixel Perfect
- </a>
- <ol>
- <li><a href="#aboutpixelperfect">About the Pixel Perfect window</a></li>
- <li><a href="#overlays">Working with Pixel Perfect overlays</a></li>
- </ol>
- </li>
- <li><a href="#lint">Using lint to optimize your UI</a></li>
- </ol>
- <h2>Related videos</h2>
- <ol>
- <li>
-<iframe title="Hierarchyviewer"
- width="210" height="160"
- src="//www.youtube.com/embed/PAgE7saQUUY?rel=0&hd=1"
- frameborder="0" allowfullscreen>
-</iframe>
- </li>
- <li>
-<iframe title="Pixel Perfect"
- width="210" height="160"
- src="//www.youtube.com/embed/C45bMZGdN7Y?rel=0&hd=1"
- frameborder="0"
- allowfullscreen>
-</iframe>
- </li>
- </ol>
- </div>
- </div>
-
-
-<p>Sometimes your application's layout can slow down your application.
-To help debug issues in your layout, the Android SDK provides the Hierarchy Viewer and
-<code><a href="{@docRoot}tools/help/lint.html">lint</a></code> tools. </p>
-
- <p>The Hierarchy Viewer application allows you to debug and optimize your user interface. It
- provides a visual representation of the layout's View hierarchy (the View Hierarchy window)
- with performance information for each node in the layout,
- and a magnified view of the display (the Pixel Perfect window) to closely examine the pixels
- in your layout.</p>
-
- <p>Android <code><a href="{@docRoot}tools/help/lint.html">lint</a></code> is a static code
- scanning tool that helps you optimize the layouts and layout
- hierarchies of your applications, as well as detect other common coding problems. You can run it
- against your layout files or resource
- directories to quickly check for inefficiencies or other types of problems that could be
- affecting the performance of your application.</p>
-
-<h2 id="HierarchyViewer">Using Hierarchy Viewer</h2>
-
-<h3 id="runhv">Running Hierarchy Viewer and choosing a window</h3>
-<p>
- To run Hierarchy Viewer, follow these steps:</p>
-<ol>
- <li>
- Connect your device or launch an emulator.
- <p>
- To preserve security, Hierarchy Viewer can only connect to devices running a
- developer version of the Android system.
- </p>
- </li>
- <li>
- If you have not done so already, install the application you want to work with.
- </li>
- <li>
- Run the application, and ensure that its UI is visible.
- </li>
- <li>
- From a terminal, launch <code>hierarchyviewer</code> from the
- <code><sdk>/tools/</code>
- directory.
- </li>
- <li>
- The first window you see displays a list of devices and emulators. To expand the list
- of Activity objects for a device or emulator, click the arrow on the left. This displays a
- list of the Activity objects whose UI is currently visible on the device or emulator. The
- objects are listed by their Android component name. The list includes both your application
- Activity and system Activity objects. A screenshot of this window appears in
- figure 1.
- </li>
- <li>
- Select the name of your Activity from the list. You can now look at its view
- hierarchy using the View Hierarchy window, or look at a magnified image of the UI using
- the Pixel Perfect window.
- </li>
-</ol>
-<p>
- To learn how to use the View Hierarchy window, go to
- <a href="#viewhierarchy">About the View Hierarchy window</a>. To learn how to use the
- Pixel Perfect window, go to <a href="#pixelperfect">About the Pixel Perfect window</a>.
-</p>
-<img id="Fig1" src="{@docRoot}images/developing/hv_device_window.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 1.</strong> Hierarchy Viewer device window</p>
-<h3 id="viewhierarchy">About the View Hierarchy window</h3>
-<p>
- The View Hierarchy window displays the View objects that form the UI of the
- Activity that is running on your device or emulator. You use it to look at individual
- View objects within the context of the entire View tree. For each View object, the View
- Hierarchy window also displays rendering performance data.
-</p>
-<p>
- To see the View Hierarchy window, run Hierarchy Viewer as described in
- the section <a href="#runhv">Running Hierarchy Viewer and choosing a window</a>. Next, click
- <strong>View Hierarchy</strong> at the top of the device window.
-</p>
-<p>
- You should see four panes:
-</p>
-<ul>
- <li>
- <strong>Tree View</strong>: The left-hand pane displays the Tree View,
- a diagram of the Activity object's hierarchy of views. Use Tree View to examine individual
- View objects and see the relationships between View objects in your UI.
- <p>
- To zoom in on the pane, use the slider at the bottom of the pane, or use your mouse
- scroll wheel. To move around in the pane or reveal View objects that are not currently
- visible, click and drag the pane.
- </p>
- <p>
- To highlight the nodes in the tree whose class or ID match a search string, enter the
- string in the <strong>Filter by class or id:</strong> edit box at the bottom of the
- window. The background of nodes that match the search string will change from gray to
- bright blue.
- </p>
- <p>
- To save a screenshot of Tree View to a PNG file, click <strong>Save As PNG</strong> at
- the top of the View Hierarchy window. This displays a dialog in which you can choose
- a directory and file name.
- </p>
- <p>
- To save a layered screenshot of your device or emulator to an Adobe Photoshop (PSD)
- file, click <strong>Capture Layers</strong> at the top of the View Hierarchy window.
- This displays a dialog in which you can choose a directory or file name.
- Each View in the UI is saved as a separate Photoshop layer.
- </p>
- <p>
- In Photoshop (or similar program that accepts .psd files), you can hide, show or edit a
- layer independently of others. When you save a layered screenshot, you can examine and
- modify the image of an individual View object. This helps you experiment with design
- changes.
- </p>
- </li>
- <li>
- The upper right-hand pane displays the <strong>Tree Overview</strong>, a smaller map
- representation of the entire Tree View window. Use Tree Overview to identify the part of the
- view tree that is being displayed in Tree View.
- <p>
- You can also use Tree Overview to move around in the Tree View pane. Click and drag
- the shaded rectangle over an area to reveal it in Tree View.
- </p>
- </li>
- <li>
- The middle right-hand pane displays the <strong>Properties View</strong>,
- a list of the properties for a selected View object. With Properties View, you can
- examine all the properties without having to look at your application source.
- <p>
- The properties are organized by category. To find an individual property, expand
- a category name by clicking the arrow on its left. This reveals all the properties
- in that category.
- </p>
- </li>
- <li>
- The lower right-hand pane displays the <strong>Layout View</strong>,
- a block representation of the UI. Layout View is another way to navigate through your UI.
- When you click on a View object in Tree View, its position in the UI is highlighted.
- Conversely, when you click in an area of Layout View, the View object for that area is
- highlighted in Tree View.
- <p>
- The outline colors of blocks in Layout View provide additional information:
- </p>
- <ul>
- <li>
- Bold red: The block represents the the View that is currently selected in
- Tree View.
- </li>
- <li>
- Light red: The block represents the parent of the block outlined in bold red.
- </li>
- <li>
- White: The block represents a visible View that is not a parent or child of the
- View that is currently selected in Tree View.
- </li>
- </ul>
- </li>
-</ul>
-<p>
- When the UI of the current Activity changes, the View Hierarchy window is not automatically
- updated. To update it, click <strong>Load View Hierarchy</strong> at the top of the window.
-</p>
-<p>
- Also, the window is not updated if you switch to a new Activity. To update it, start by
- clicking the window selection icon in the bottom left-hand corner of the window. This
- navigates back to the Window Selection window. From this window, click the Android
- component name of the new Activity and then click <strong>Load View Hierarchy</strong>
- at the top of the window.
-</p>
-<p>
- A screenshot of the View Hierarchy window appears in figure 2.
-</p>
-<img id="Fig2" src="{@docRoot}images/developing/hv_view_hierarchy_window.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 2.</strong> The View Hierarchy window</p>
-<h3 id="indiView">Working with an individual View in Tree View</h3>
-<p>
- Each node in Tree View represents a single View. Some information is always visible. Starting
- at the top of the node, you see the following:
-</p>
-<ol>
- <li>
- View class: The View object's class.
- </li>
- <li>
- View object address: A pointer to View object.
- </li>
- <li>
- View object ID: The value of the
- <code><a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">android:id</a>
- </code> attribute.
- </li>
- <li>
- Performance indicators: A set of three colored dots that indicate the rendering
- speed of this View relative to other View objects in the tree. The three dots
- represent (from left to right) the measure, layout, and draw times of the rendering.
- <p>
- The colors indicate the following relative performance:
- </p>
- <ul>
- <li>
- Green: For this part of the render time, this View is in the faster 50% of all
- the View objects in the tree. For example, a green dot for the measure time means
- that this View has a faster measure time than 50% of the View objects in the tree.
- </li>
- <li>
- Yellow: For this part of the render time, this View is in the slower 50% of all
- the View objects in the tree. For example, a yellow dot for the layout time means
- that this View has a slower layout time than 50% of the View objects in the tree.
- </li>
- <li>
- Red: For this part of the render time, this View is the slowest one in the tree.
- For example, a red dot for the draw time means that this View takes the most
- time to draw of all the View objects in the tree.
- </li>
- </ul>
- </li>
- <li>
- View index: The zero-based index of the View in its parent View. If it is the only child,
- this is 0.
- </li>
-</ol>
-<p>
- When you select a node, additional information for the View appears in a small window above
- the node. When you click one of the nodes, you see the following:
-</p>
-<ul>
- <li>
- Image: The actual image of the View, as it would appear in the emulator. If the View has
- children, these are also displayed.
- </li>
- <li>
- View count: The number of View objects represented by this node. This includes the View
- itself and a count of its children. For example, this value is 4 for a View that has 3
- children.
- </li>
- <li>
- Render times: The actual measure, layout, and draw times for the View rendering, in
- milliseconds. These represent the same values as the performance indicators mentioned in
- the preceding section.
- </li>
-</ul>
-<p>
- An annotated screenshot of an individual node in the Tree View window appears in figure 3.
-</p>
-<img id="Fig3" src="{@docRoot}images/developing/hv_treeview_screenshot.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 3.</strong> An annotated node in Tree View</p>
-<h3 id="hvdebugging">Debugging with View Hierarchy</h3>
-<p>
- The View Hierarchy window helps you debug an application by providing a static display
- of the UI. The display starts with your application's opening screen. As you step through
- your application, the display remains unchanged until you redraw it by invalidating and
- then requesting layout for a View.
-</p>
-<p>
- To redraw a View in the display:
-</p>
- <ul>
- <li>
- Select a View in Tree View. As you move up towards the root of the tree (to the
- left in the Tree View), you see the highest-level View objects. Redrawing a high-level
- object usually forces the lower-level objects to redraw as well.
- </li>
- <li>
- Click <strong>Invalidate</strong> at the top of the window. This marks the View as
- invalid, and schedules it for a redraw at the next point that a layout is requested.
- </li>
- <li>
- Click <strong>Request Layout</strong> to request a layout. The View and its children
- are redrawn, as well as any other View objects that need to be redrawn.
- </li>
- </ul>
-<p>
- Manually redrawing a View allows you to watch the View object tree and examine the properties of
- individual View objects one step at a time as you go through breakpoints in your code.
-</p>
-<h3 id="hvoptimize">Optimizing with View Hierarchy</h3>
-<p>
- View Hierarchy also helps you identify slow render performance. You start by looking at the
- View nodes with red or yellow performance indicators to identify the slower View objects. As you
- step through your application, you can judge if a View is consistently slow or slow only in
- certain circumstances.
-</p>
-<p>
- Remember that slow performance is not necessarily evidence of a problem, especially for
- ViewGroup objects. View objects that have more children and more complex View objects render
- more slowly.
-</p>
-<p>
- The View Hierarchy window also helps you find performance issues. Just by looking at the
- performance indicators (the dots) for each View node, you can see which View objects are the
- slowest to measure, layout, and draw. From that, you can quickly identify the problems you
- should look at first.
-</p>
-<h2 id="pixelperfect">Using Pixel Perfect</h2>
-<p>
- Pixel Perfect is a tool for examining pixel properties and laying out UIs from a design drawing.
-</p>
-<h3 id="aboutpixelperfect">About the Pixel Perfect window</h3>
-<p>
- The Pixel Perfect window displays a magnified image of the screen that is currently
- visible on the emulator or device. In it, you can examine the properties
- of individual pixels in the screen image. You can also use the Pixel Perfect window
- to help you lay out your application UI based on a bitmap design.
-</p>
-<p>
- To see the Pixel Perfect window, run Hierarchy Viewer, as described in
- the section <a href="#runhv">Running Hierarchy Viewer and choosing a window</a>. Next, click
- <strong>Inspect Screenshot</strong> at the top of the device window. The Pixel Perfect window
- appears.
-</p>
-<p>
- In it, you see three panes:
-</p>
-<ul>
- <li>
- View Object pane: This is a hierarchical list of the View objects that are currently
- visible on the device or emulator screen, including both the ones in your application and
- the ones generated by the system. The objects are listed by their View class.
- To see the class names of a View object's children, expand the View by clicking the
- arrow to its left. When you click a View, its position is highlighted in the Pixel Perfect
- pane on the right.
- </li>
- <li>
- Pixel Perfect Loupe pane: This is the magnified screen image. It is overlaid by a grid in
- which each square represents one pixel. To look at the information for a pixel, click in its
- square. Its color and X,Y coordinates appear at the bottom of the pane.
- <p>
- The magenta crosshair in the pane corresponds to the positioning
- crosshair in the next pane. It only moves when you move the crosshair in the next pane.
- </p>
- <p>
- To zoom in or out on the image, use the <strong>Zoom</strong> slider at the bottom of
- the pane, or use your mouse's scroll wheel.
- </p>
- <p>
- When you select a pixel in the Loupe pane, you see the following information at the
- bottom of the pane:
- </p>
- <ul>
- <li>
- Pixel swatch: A rectangle filled with the same color as the pixel.
- </li>
- <li>
- HTML color code: The hexadecimal RGB code corresponding to the pixel color
- </li>
- <li>
- RGB color values: A list of the (R), green (G), and blue (B) color values of the
- pixel color. Each value is in the range 0-255.
- </li>
- <li>
- X and Y coordinates: The pixel's coordinates, in device-specific pixel units.
- The values are 0-based, with X=0 at the left of the screen and Y=0 at the top.
- </li>
- </ul>
- </li>
- <li>
- Pixel Perfect pane: This displays the currently visible screen as it would appear in the
- emulator.
- <p>
- You use the cyan crosshair to do coarse positioning. Drag the crosshair in the image,
- and the Loupe crosshair will move accordingly. You can also click on a point in the
- Pixel Perfect pane, and the crosshair will move to that point.
- </p>
- <p>
- The image corresponding to the View object selected in the View Object pane is
- outlined in a box that indicates the View object's position on the screen. For the
- selected object, the box is bold red. Sibling and parent View objects have a light
- red box. View objects that are neither parents nor siblings are in white.
- </p>
- <p>
- The layout box may have other rectangles either inside or outside it, each of which
- indicates part of the View. A purple or green rectangle indicates the View bounding box.
- A white or black box inside the layout box represents the <strong>padding</strong>, the
- defined distance between the View object's content and its bounding box. An outer white
- or black rectangle represents the <strong>margins</strong>, the distance between the
- View bounding box and adjacent View objects. The padding and margin boxes are white if
- the layout background is black, and vice versa.
- </p>
- <p>
- You can save the screen image being displayed in the Pixel Perfect pane as a PNG file.
- This produces a screenshot of the current screen. To do this, click
- <strong>Save as PNG</strong> at the top of the window. This displays a dialog,
- in which you can choose a directory and filename for the file.
- </p>
- </li>
-</ul>
-<p>
- The panes are not automatically refreshed when you change one of the View objects or go to
- another Activity. To refresh the Pixel Perfect pane and the Loupe pane, click
- <strong>Refresh Screenshot</strong> at the top of the window. This will change the panes
- to reflect the current screen image. You still may need to refresh the View Object pane;
- to do this, click <strong>Refresh Tree</strong> at the top of the window.
-</p>
-<p>
- To automatically refresh the panes while you are debugging, set
- <strong>Auto Refresh</strong> at the top of the window, and then set a refresh rate
- with the <strong>Refresh Rate</strong> slider at the bottom of the Loupe pane.
-</p>
-<h3 id="overlays">Working with Pixel Perfect overlays</h3>
-<p>
- You often construct a UI based on a design done as a bitmap image. The Pixel Perfect window
- helps you match up your View layout to a bitmap image by allowing you to load the bitmap as an
- <strong>overlay</strong> on the screen image.
-</p>
-<p>
- To use a bitmap image as an overlay:
-</p>
-<ul>
- <li>
- Start your application in a device or emulator and navigate to the Activity whose UI you
- want to work with.
- </li>
- <li>
- Start Hierarchy Viewer and navigate to the Pixel Perfect window.
- </li>
- <li>
- At the top of the window, click <strong>Load Overlay</strong>. A dialog opens, prompting
- for the image file to load. Load the image file.
- </li>
- <li>
- Pixel Perfect displays the overlay over the screen image in the Pixel Perfect pane. The
- lower left corner of the bitmap image (X=0, Y=<em>max value</em>) is anchored on the lower
- leftmost pixel (X=0, Y=<em>max screen</em>) of the screen.
- <p>
- By default, the overlay has a 50% transparency, which allows you to see the screen
- image underneath. You can adjust this with the <strong>Overlay:</strong> slider at the
- bottom of the Loupe pane.
- </p>
- <p>
- Also by default, the overlay is not displayed in the Loupe pane. To display it,
- set <strong>Show in Loupe</strong> at the top of the window.
- </p>
- </li>
-</ul>
-<p>
- The overlay is not saved as part of the screenshot when you save the screen image as a PNG
- file.
-</p>
-<p>
- A screenshot of the Pixel Perfect window appears in figure 4.
-</p>
-<img id="Fig4" src="{@docRoot}images/developing/hv_pixelperfect.png"
- alt=""
- height="600"/>
-<p class="img-caption"><strong>Figure 4.</strong> The Pixel Perfect window</p>
-
-
-<h2 id="lint">Using lint to Optimize Your UI</h2>
-<p>The Android <a href="{@docRoot}tools/help/lint.html">lint</a> tool lets you analyze the XML
-files that define your application's UI to find inefficiencies in the view hierarchy.</p>
-<p class="note"><strong>Note: </strong>The Android <code>layoutopt</code> tool has been replaced by the {@code lint} tool beginning in SDK Tools revision 16. The {@code lint} tool reports UI layout performance issues in a similar way as <code>layoutopt</code>, and detects additional problems.</p>
-<p>For more information about using {@code lint}, see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a> and the <a href="{@docRoot}tools/help/lint.html">lint tools help</a>.</p>
diff --git a/docs/html/tools/debugging/improving-w-lint.jd b/docs/html/tools/debugging/improving-w-lint.jd
deleted file mode 100644
index 2f5e50d..0000000
--- a/docs/html/tools/debugging/improving-w-lint.jd
+++ /dev/null
@@ -1,343 +0,0 @@
-page.title=Improving Your Code with lint
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In This Document</h2>
-
- <ol>
- <li><a href="#overview">Overview</a></li>
- <li><a href="#studio">Running lint from Android Studio</a></li>
- <li><a href="#commandline">Running lint from the command-line</a></li>
- <li><a href="#config">Configuring lint</a>
- <ol>
- <LI><a href="#studio_config">Configuring Lint in Android Studio</a></LI>
- <LI><a href="#pref">Configuring the lint file</a></LI>
- <LI><a href="#src">Configuring lint checking in Java and XML source files</a></LI>
- </ol>
- </li>
- </ol>
- <h2>See Also</h2>
- <ol>
- <li><a href="{@docRoot}tools/help/lint.html">lint (reference)</a></li>
- <li><a href="{@docRoot}tools/degugging/annotations.html">Using Android Annotations</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
-In addition to testing that your Android application meets its functional requirements, it's
-important to ensure that your code has no structural problems. Poorly structured code can impact the
-reliability and efficiency of your Android apps and make your code harder to maintain. For example,
-if your XML resource files contain unused namespaces, this takes up space and incurs unnecessary
-processing. Other structural issues, such as use of deprecated elements or API calls that are not
-supported by the target API versions, might lead to code failing to run correctly.</p>
-
-<h2 id="overview">Overview</h2>
-<p>The Android SDK provides a code scanning tool called <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a>
-that can help you to easily identify and correct problems with the structural quality of your code,
-without having to execute the app or write any test cases. Each problem detected by the tool is
-reported with a description message and a severity level, so that you can quickly prioritize the
-critical improvements that need to be made. You can also configure a problem's severity level to
-ignore issues that are not relevant for your project, or raise the severity level. The tool has a
-command-line interface, so you can easily integrate it into your automated testing process.</p>
-<p>The {@code lint} tool checks your Android project source files for potential bugs and
-optimization improvements for correctness, security, performance, usability, accessibility, and
-internationalization. You can run {@code lint} from the command-line or from Android Studio.</p>
-
-<p class="note"><strong>Note:</strong> In Android Studio, additional
-<a href="https://www.jetbrains.com/idea/help/inspection-basics.html?search=inspection" class="external-link"
-target="_blank">IntelliJ code inspections</a> run when your code is compiled in Android Studio to
-streamline code review.</p>
-
-<p>Figure 1 shows how the {@code lint} tool processes the application source files.</p>
-<img id="Fig1" src="{@docRoot}images/tools/lint.png" alt="">
-<p class="img-caption"><strong>Figure 1.</strong> Code scanning workflow with the {@code lint} tool</p>
-<dl>
-<dt><b>Application source files</b></dt>
-<dd>The source files consist of files that make up your Android project, including Java and XML
-files, icons, and ProGuard configuration files. </dd>
-<dt><b>The <code>lint.xml</code> file</b></dt>
-<dd>A configuration file that you can use to specify any {@code lint} checks that you want to
-exclude and to customize problem severity levels.</dd>
-<dt><b>The {@code lint} tool</b></dt>
-<dd>A static code scanning tool that you can run on your Android project from the command-line or
-Android Studio. The {@code lint} tool checks for structural code problems that could affect the
-quality and performance of your Android application. It is strongly recommended that you correct any
-errors that {@code lint} detects before publishing your application.</dd>
-<dt><b>Results of {@code lint} checking</b></dt>
-<dd>You can view the results from {@code lint} in the console or in the <strong>Event Log</strong>
-in Android Studio. Each issue is identified by the location in the source files where it occurred
-and a description of the issue.</dd>
-</dl>
-<p>The {@code lint} tool is automatically installed as part of the Android SDK Tools revision 16 or
-higher.</p>
-
-
-<h2 id="studio">Running lint in Android Studio</h2>
-<p>In Android Studio, the configured <code>lint</code> and
-IDE inspections run automatically whenever you build your app. The IDE inspections are
-configured along with the {@code lint} checks to run
-<a href="https://www.jetbrains.com/idea/help/inspection-basics.html?search=inspection" class="external-link"
-target="_blank">IntelliJ code inspections</a> to streamline code review.</p>
-
-<p class="note"><strong>Note:</strong> To view and modify inspection severity
-levels, use the <strong>File > Settings > Project Settings</strong> menu to open the
-<em>Inspection Configuration</em> page with a list of the supported inspections.</p>
-
-
-<p>With Android Studio, you can also run {@code lint} inspections for a specific build variant,
-or for all build variants from the <code>build.gradle</code> file. Add the
-<code>lintOptions</code> property to the <code>android</code> settings in the build file.
-This code snippet from a Gradle build file shows how to set the <code>quiet</code> option to
-<code>true</code> and the <code>abortOnError</code> option to <code>false</code>. </p>
-
-<pre>
-android {
- lintOptions {
- // set to true to turn off analysis progress reporting by lint
- quiet true
- // if true, stop the gradle build if errors are found
- abortOnError false
- // if true, only report errors
- ignoreWarnings true
- }
- ...
- }
-</pre>
-
-
-<p>To manually run inspections in Android Studio, from the application or right-click menu,
-choose <strong>Analyze > Inspect Code</strong>. The <em>Specify Inspections Scope</em> dialog
-appears so you can specify the desired inspection scope and profile.</p>
-
-
-
-
-<h2 id="commandline">Running lint from the Command-Line</h2>
-<p>
-To run {@code lint} against a list of files in a project directory:
-<pre>lint [flags] <project directory></pre>
-<p>For example, you can issue the following command to scan the files under the {@code myproject}
-directory and its subdirectories. The issue ID <code>MissingPrefix</code> tells {@code lint} to
-only scan for XML attributes that are missing the Android namespace prefix.</p>
-<pre>lint --check MissingPrefix myproject </pre>
-<p>To see the full list of flags and command-line arguments supported by the tool:</p>
-<pre>lint --help</pre>
-</p>
-
-<h3>Example lint output</h3>
-<p>The following example shows the console output when the {@code lint} command is run against a
-project called Earthquake. </p>
-<pre>
-$ lint Earthquake
-
-Scanning Earthquake: ...............................................................................................................................
-Scanning Earthquake (Phase 2): .......
-AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder]
- <uses-sdk android:minSdkVersion="7" />
- ^
-AndroidManifest.xml:23: Warning: <uses-sdk> tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
- <uses-sdk android:minSdkVersion="7" />
- ^
-res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
-res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
-0 errors, 4 warnings
-</pre>
-<p>The output above lists four warnings and no errors in this project. Three warnings
-({@code ManifestOrder}, {@code UsesMinSdkAttributes}, and {@code UnusedResources}) were found in
-the project's <code>AndroidManifest.xml</code> file. The remaining warning
-({@code IconMissingDensityFolder}) was found in the <code>Preferences.xml</code> layout file.</p>
-
-<h2 id="config">Configuring lint</h2>
-<p>By default, when you run a {@code lint} scan, the tool checks for all issues that are supported
-by {@code lint}. You can also restrict the issues for {@code lint} to check and assign the severity
-level for those issues. For example, you can disable {@code lint} checking for specific issues that
-are not relevant to your project and configure {@code lint} to report non-critical issues at a lower
-severity level.</p>
-<p>You can configure {@code lint} checking at different levels:</p>
-<ul>
-<LI>Globally, for the entire project</LI>
-<li>Per project module</li>
-<li>Per production module</li>
-<li>Per test module</li>
-<li>Per open files</li>
-<li>Per class hierarchy</li>
-<li>Per Version Control System (VCS) scopes</li>
-</ul>
-
-<h3 id="studio_config">Configuring Lint in Android Studio</h3>
-
-<p>The built-in Lint tool checks your code while you're using
-Android Studio. You can view warnings and errors in two ways: </p>
-<ul>
-<li>As pop-up text in the Code Editor. When Lint finds a problem, it highlights
-the problematic code in yellow, or underlines the code in red for more serious
-issues.</li>
-<li>In the Lint <em>Inspection Results</em> window after you select
-<strong>Analyze</strong> > <strong>Inspect Code</strong>.</li>
-</ul>
-
-
-
-<p>To set default Lint checks:</p>
-<ol>
-<li>In Android Studio, open your project.
-</li>
-<li>Select <strong>File</strong> > <strong>Other Settings</strong> >
- <strong>Default Settings</strong>.</li>
-<li>In the <em>Default Preferences</em> dialog, select <strong>Editor</strong>
-> <strong>Inspections</strong>. </li>
-<li>In the <strong>Profile</strong> field, select <strong>Default</strong> or
- <strong>Project Default</strong> to set the
- <a href="https://www.jetbrains.com/help/idea/2016.1/specify-inspection-scope-dialog.html?origin=old_help"
- class="external-link">scope</a> for Android Studio or just for this project,
- respectively. </li>
-<li>Expand a category and change the Lint settings as needed.</li>
-<p>You can select individual checks, or entire categories.</p>
-
-<li>Click <strong>OK</strong>.</li>
-</ol>
-
-
-
-<p>To produce a list of Lint checks displayed in the <em>Inspection Results</em>
-window:</p>
-<ol>
-<li>In Android Studio, open your project
- and select a portion of your project that you want to test.</li>
-<li>Select <strong>Analyze</strong> > <strong>Inspect Code</strong>.</li>
-<li>In the <em>Specify Inspection Scope </em>dialog, select the inspection
-<a href="https://www.jetbrains.com/help/idea/2016.1/specify-inspection-scope-dialog.html?origin=old_help"
- class="external-link">scope</a> and profile. </li>
-
-<p>The scope specifies the files you want to analyze, and the profile specifies
-the Lint checks you’d like to perform.</p>
-<li>If you want to change the Lint settings, click <strong>…</strong>. In the
-<em>Inspections</em> dialog, optionally click <strong>Manage</strong> to define
-a new profile, specify the Lint settings you want, and then click
-<strong>OK</strong>.</li>
-<p>In the <em>Inspections</em> dialog, you can search for a string
-to find Lint checks. Note that changing Lint settings for a
-profile in the <em>Inspections</em> dialog doesn’t change the default settings,
-as described in the previous procedure. It does change the settings for profiles
-displayed in the <em>Inspections</em> dialog, however.</p>
-<li>Click <strong>OK</strong>.</li>
-<p>The results appear in the <em>Inspection Results</em> window, organized by
-category.</p>
-
-</ol>
-
-
-
-<h3 id="pref">Configuring the lint file</h3>
-<p>You can specify your {@code lint} checking preferences in the <code>lint.xml</code> file. If you
-are creating this file manually, place it in the root directory of your Android project. If you are
-configuring {@code lint} preferences in Android Studio, the <code>lint.xml</code> file is
-automatically created and added to your Android project for you.</p>
-<p>The <code>lint.xml</code> file consists of an enclosing <code><lint></code> parent tag that
-contains one or more children <code><issue></code> elements. Each <code><issue></code>
-is identified by a unique <code>id</code> attribute value, which is defined by {@code lint}.</p>
-<pre>
-<?xml version="1.0" encoding="UTF-8"?>
- <lint>
- <!-- list of issues to configure -->
-</lint>
-</pre>
-<p>By setting the severity attribute value in the <code><issue></code> tag, you can disable
-{@code lint} checking for an issue or change the severity level for an issue. </p>
-<p class="note"><strong>Tip: </strong>To see the full list of issues supported by the {@code lint}
-tool and their corresponding issue IDs, run the <code>lint --list</code> command.</p>
-
-<h4>Sample lint.xml file</h4>
-<p>The following example shows the contents of a <code>lint.xml</code> file.</p>
-<pre>
-<?xml version="1.0" encoding="UTF-8"?>
-<lint>
- <!-- Disable the given check in this project -->
- <issue id="IconMissingDensityFolder" severity="ignore" />
-
- <!-- Ignore the ObsoleteLayoutParam issue in the specified files -->
- <issue id="ObsoleteLayoutParam">
- <ignore path="res/layout/activation.xml" />
- <ignore path="res/layout-xlarge/activation.xml" />
- </issue>
-
- <!-- Ignore the UselessLeaf issue in the specified file -->
- <issue id="UselessLeaf">
- <ignore path="res/layout/main.xml" />
- </issue>
-
- <!-- Change the severity of hardcoded strings to "error" -->
- <issue id="HardcodedText" severity="error" />
-</lint>
-</pre>
-
-<h3 id="src">Configuring lint checking in Java and XML source files</h3>
-<p>You can disable {@code lint} checking from your Java and XML source files.</p>
-
-<p class="note"><strong>Tip: </strong>If you are using Android Studio, you can use the
-<strong>File > Settings > Project Settings > Inspections</strong> feature to manage the
-{@code lint} checking to your Java or XML source files.
-</p>
-
-<h4>Configuring lint checking in Java</h4>
-<p>To disable {@code lint} checking specifically for a Java class or method in your Android project,
-add the <code>@SuppressLint</code> annotation to that Java code. </p>
-<p>The following example shows how you can turn off {@code lint} checking for the {@code NewApi}
-issue in the <code>onCreate</code> method. The {@code lint} tool continues to check for the
-{@code NewApi} issue in other methods of this class.</p>
-<pre>
-@SuppressLint("NewApi")
-@Override
-public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-</pre>
-<p>The following example shows how to turn off {@code lint} checking for the {@code ParserError}
-issue in the <code>FeedProvider</code> class:</p>
-<pre>
-@SuppressLint("ParserError")
-public class FeedProvider extends ContentProvider {
-</pre>
-<p>To suppress checking for all {@code lint} issues in the Java file, use the {@code all} keyword,
-like this:</p>
-<pre>
-@SuppressLint("all")
-</pre>
-
-<h4>Configuring lint checking in XML</h4>
-<p>You can use the <code>tools:ignore</code> attribute to disable {@code lint} checking for specific
-sections of your XML files. In order for this attribute to be recognized by the {@code lint} tool,
-the following namespace value must be included in your XML file:</p>
-<pre>
-namespace xmlns:tools="http://schemas.android.com/tools"
-</pre>
-<p>The following example shows how you can turn off {@code lint} checking for the
-{@code UnusedResources} issue for the <code><LinearLayout></code> element of an XML layout
-file. The <code>ignore</code> attribute is inherited by the children elements of the parent element
-in which the attribute is declared. In this example, the {@code lint} check is also disabled for the
-child <code><TextView></code> element. </p>
-<pre>
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- tools:ignore="UnusedResources" >
-
- <TextView
- android:text="@string/auto_update_prompt" />
-</LinearLayout>
-</pre>
-<p>To disable more than one issue, list the issues to disable in a comma-separated string. For
-example:</p>
-<pre>
-tools:ignore="NewApi,StringFormatInvalid"
-</pre>
-<p>To suppress checking for all {@code lint} issues in the XML element, use the {@code all} keyword,
-like this:</p>
-<pre>
-tools:ignore="all"
-</pre>
diff --git a/docs/html/tools/debugging/index.jd b/docs/html/tools/debugging/index.jd
deleted file mode 100644
index 9717916..0000000
--- a/docs/html/tools/debugging/index.jd
+++ /dev/null
@@ -1,185 +0,0 @@
-page.title=Debugging
-@jd:body
-
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#stack">Debugging Environment</a></li>
-
- <li><a href="#addltools">Additional Debugging Tools</a></li>
-
- <li><a href="#tips">Debugging Tips</a></li>
- </ol>
- </div>
- </div>
-
- <p>The Android SDK provides most of the tools that you need to debug your applications. You need
- a JDWP-compliant debugger if you want to be able to do things such as step through code,
- view variable values, and pause execution of an application. If you are using Android Studio, a
- JDWP-compliant debugger is already included and there is no setup required. If you are using
- another IDE, you can use the debugger that comes with it and attach the debugger to a special
- port so it can communicate with the application VMs on your devices. The main components that
- comprise a typical Android debugging environment are:</p>
-
- <dl>
- <dt><a href="{@docRoot}tools/help/adb.html"><strong>adb</strong></a></dt>
-
- <dd><code>adb</code> acts as a middleman between a device and your development system. It
- provides various
- device management capabilities, including moving and syncing files to the emulator, running a
- UNIX shell on the device or emulator, and providing a general means to communicate with
- connected emulators and devices.</dd>
-
- <dt><a href="{@docRoot}tools/debugging/ddms.html"><strong>Dalvik Debug Monitor
- Server</strong></a></dt>
-
- <dd>DDMS is a graphical program that communicates with your devices through <code>adb</code>. DDMS can
- capture screenshots, gather thread and stack information, spoof incoming calls and SMS
- messages, and has many other features.</dd>
-
- <dt><strong><a href="{@docRoot}tools/device.html">Device</a> or
- <a href="{@docRoot}tools/devices/index.html">Android Virtual Device</a></strong></dt>
-
- <dd>Your application must run in a device or in an AVD so that it can be debugged. An
- <code>adb</code> device daemon runs on the device or emulator and provides a means for the
- <code>adb</code> host daemon to communicate with the device or emulator.</dd>
-
- <dt><strong>JDWP debugger</strong></dt>
-
- <dd>The Dalvik VM (Virtual Machine) supports the JDWP protocol to allow debuggers to attach to
- a VM. Each application runs in a VM and exposes a unique port that you can attach a debugger to
- via DDMS. If you want to debug multiple applications, attaching to each port might become
- tedious, so DDMS provides a port forwarding feature that can forward a specific VM's debugging
- port to port 8700. You can switch freely from application to application by highlighting it in the
- Devices tab of DDMS. DDMS forwards the appropriate port to port 8700. Most modern Java IDEs include a JDWP debugger,
- or you can use a command line debugger such as <a href="http://download.oracle.com/javase/6/docs/technotes/tools/">
- <code>jdb</code></a>.</dd>
- </dl>
-
- <h2>Debugging Environment</h2>
-
- <p>Figure 1 shows how the various debugging tools work together in a typical
- debugging environment.</p>
- <img src="{@docRoot}images/debugging.png"
- alt="Debugging workflow" />
- <p class="img-caption><strong>Figure 1. </strong> Debugging Workflow</p>
-
- <p>On your emulator or device, each application runs in its own instance of a Dalvik VM. The
- <code>adb</code> device daemon allows communication with the VMs from an outside party.</p>
-
- <p>On your development machine, the <code>adb</code> host daemon communicates with the
- <code>adb</code> device daemon and allows tools such as DDMS to communicate with the device or emulator.
- The <code>adb</code> host daemon also allows you to access shell commands on the device as well as
- providing capabilities such as application installation and file transferring.</p>
-
- <p>Each application VM on the device or emulator exposes a debugging port that you can attach to
- via DDMS. DDMS can forward any of these ports to a static debugging port (typically port 8700) by
- selecting the application that you want to debug in the DDMS user interface. A JDWP debugger can
- attach to this static debugging port and debug all the applications that are running on the
- device or emulator without having to attach to multiple ports.</p>
-
- <p>If you are using Android Studio, much of these interconnections are hidden from you. DDMS,
- <code>adb</code>, and a
- JDWP debugger are all setup for you and you can access them through the Debug and DDMS view. If
- you are developing with another IDE environment, you may have to invoke these tools manually.</p>
-
- <h2 id="addltools">Additional Debugging Tools</h2>
-
- <p>In addition to the main debugging tools, the Android SDK provides additional tools to help you
- debug and profile your applications:</p>
-
- <dl>
- <dt><strong><a href="{@docRoot}tools/debugging/debugging-ui.html">Heirarchy Viewer
- and layoutopt</a></strong></dt>
-
- <dd>Graphical programs that let you debug and profile user interfaces.</dd>
-
- <dt><strong><a href=
- "{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a></strong></dt>
-
- <dd>A graphical viewer that displays trace file data for method calls and times saved by your
- application, which can help you profile the performance of your application.</dd>
-
- <dt><strong><a href="{@docRoot}tools/debugging/debugging-devtools.html">Dev Tools
- Android application</a></strong></dt>
-
- <dd>The Dev Tools application included in the emulator system image exposes several settings
- that provide useful information such as CPU usage and frame rate. You can also transfer the
- application to a hardware device.</dd>
- </dl>
-
-
- <h2 id="tips">Debugging Tips</h2>
-
-<p>While debugging, keep these helpful tips in mind to help you figure out common problems with your
-applications:</p>
-
-<dl>
-<dt><strong>Dump the stack trace</strong></dt>
-<dd>To obtain a stack dump from emulator, you can log
-in with <code>adb shell</code>, use <code>ps</code> to find the process you
-want, and then <code>kill -3</code>. The stack trace appears in the log file.
-</dd>
-
-<dt><strong>Display useful info on the emulator screen</strong></dt>
-<dd>The device can display useful information such as CPU usage or highlights
-around redrawn areas. Turn these features on and off in the developer settings
-window as described in <a href="{@docRoot}tools/debugging/debugging-devtools.html">
-Debugging with the Dev Tools App</a>.
-</dd>
-
-<dt><strong>Get application and system state information from the emulator</strong></dt>
-<dd>You can access dumpstate information from the <code>adb shell</code> commands. See
-<a href="{@docRoot}tools/help/adb.html#dumpsys">dumpsys and
-dumpstate</a> on the adb topic page.</dd>
-
-<dt><strong>Get wireless connectivity information</strong></dt>
-<dd>You can get information about wireless connectivity using DDMS.
-From the <strong>Device</strong> menu, select <strong>Dump
-radio state</strong>.</dd>
-
-<dt><strong>Log trace data</strong></dt>
-<dd>You can log method calls and other tracing data in an activity by calling
-{@link android.os.Debug#startMethodTracing(String) startMethodTracing()}. See <a
-href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with Traceview and
-dmtracedump</a> for details. </dd>
-
-<dt><strong>Log radio data</strong></dt>
-<dd>By default, radio information is not logged to the system (it is a lot of
-data). However, you can enable radio logging using the following commands:
-
-<pre class="no-pretty-print">
-adb shell
-logcat -b radio
-</pre>
-</dd>
-
-<dt><strong>Capture screenshots</strong></dt>
-<dd>The Dalvik Debug Monitor Server (DDMS) can capture screenshots from the emulator. Select
-<strong>Device > Screen capture</strong>.</dd>
-
-<dt><strong>Use debugging helper classes</strong></dt>
-<dd>Android provides debug helper classes such as {@link android.util.Log
- util.Log} and {@link android.os.Debug} for your convenience. </dd>
-
-<dt><strong>Garbage collection</strong></dt>
-<dd>
-The debugger and garbage collector are currently loosely integrated. The VM guarantees that any
-object the debugger is aware of is not garbage collected until after the debugger disconnects.
-This can result in a buildup of objects over time while the debugger is connected. For example,
-if the debugger sees a running thread, the associated {@link java.lang.Thread} object is not
-garbage collected even after the thread terminates.
-</dd>
-
-</dl>
-
-
-
-
-
-
-
-
diff --git a/docs/html/tools/debugging/systrace.jd b/docs/html/tools/debugging/systrace.jd
deleted file mode 100644
index bdeff12..0000000
--- a/docs/html/tools/debugging/systrace.jd
+++ /dev/null
@@ -1,287 +0,0 @@
-page.title=Analyzing UI Performance with Systrace
-page.tags=systrace,speed
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#overview">Overview</a></li>
- <li><a href="#generate">Generating a Trace</a></li>
- <li><a href="#analysis">Analyzing a Trace</a>
- <ol>
- <li><a href="#frames">Inspecting Frames</a></li>
- <li><a href="#alerts">Investigating Alerts</a></li>
- </ol>
- </li>
- <li><a href="#app-trace">Tracing Application Code</a></li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/help/systrace.html">Systrace</a></li>
- </ol>
- </div>
-</div>
-
-<p>While developing your application, you should check that user interactions are buttery smooth,
-running at a consistent 60 frames per second. If something goes wrong, and a frame gets dropped, the
-first step in fixing the problem is understanding what the system is doing.</p>
-
-<p>The Systrace tool allows you to collect and inspect timing information across an entire Android
-device, which is called a <em>trace</em>. It shows where time and CPU cycles are being spent,
-displaying what each thread and process is doing at any given time. It also inpects the captured
-tracing information to highlight problems that it observes, from list item recycling to rendering
-content, and provide recommendations about how to fix them. This document explains how to navigate
-the trace files produced by the tool, and use them to analyze the performance of an application's
-user interface (UI).</p>
-
-<h2 id="overview">Overview</h2>
-
-<p>Systrace helps you analyze how the execution of your application fits into the many running
-systems on an Android device. It puts together system and application thread execution on a common
-timeline. In order to analyze your app with Systrace, you first collect a trace log of your app, and
-the system activity. The generated trace allows you to view highly detailed, interactive reports
-showing everything happening in the system for the traced duration.</p>
-
-<img src="{@docRoot}images/systrace/overview.png" alt="Systrace example overview" id="figure1" />
-<p class="img-caption">
- <strong>Figure 1.</strong> An example Systrace, showing 5 seconds of scrolling an app when it
- is not performing well.
-</p>
-
-<p>Figure 1. shows a trace captured while scrolling an app that is not rendering smoothly. By
-default, a zoomed out view of the traced duration is shown. The horizontal axis is time, and trace
-events are grouped by process, and then by thread on the vertical axis.</p>
-
-<p>The groupings are in the order Kernel, SurfaceFlinger (the android compositor process), followed
-by apps, each labeled by package name. Each app process contains all of the tracing signals from
-each thread it contains, including a hierarchy of high level tracing events based on the enabled
-tracing categories.</p>
-
-
-<h2 id="generate">Generating a Trace</h2>
-
-<p>In order to create a trace of your application, you must perform a few setup steps. First, you
-must have a device running Android 4.1 (API 16) or higher. Set up the device
-for <a href="{@docRoot}tools/device.html#setting-up">debugging</a>, connect it to your development
-system, and install your application. Some types of trace information, specifically disk activity
-and kernel work queues, require that you have root access to the device. However, most Systrace log
-data only requires that the device be enabled for developer debugging.</p>
-
-<p>Systrace traces can be run either from
-a <a href="{@docRoot}tools/help/systrace.html#options">command line</a> or from a
-<a href="{@docRoot}tools/help/systrace.html#gui">graphical user interface</a>. This guide focuses on
-using the command line options.</p>
-
-<h3 id="running-4.3">Tracing on Android 4.3 and higher</h3>
-
-<p>To run a trace on Android 4.3 and higher devices:</p>
-
-<ol>
- <li>Make sure the device is connected through a USB cable and is
- <a href="{@docRoot}tools/device.html#setting-up">enabled for debugging</a>.</li>
- <li>Run the trace with the options you want, for example:
-<pre>
-$ cd android-sdk/platform-tools/systrace
-$ python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
-</pre>
- </li>
- <li>On the device, execute any user actions you want be included in the trace.</li>
-</ol>
-
-<p>For more information on the available options for running Systrace, see the
-<a href="#options-4.3">Systrace</a> help page.</p>
-
-
-<h3 id="running-4.2">Tracing on Android 4.2 and lower</h3>
-
-<p>To use Systrace effectively with devices running Android 4.2 and lower,
- you must configure the types of processes you want to trace before running a trace.
- The tool can gather the following types of process information:</p>
-
-<ul>
- <li>General system processes such as graphics, audio and input processes (selected using trace
- <a href="#tags">category tags</a>).</li>
- <li>Low level system information such as CPU, kernel and disk activity (selected using
- <a href="#options">options</a>).</li>
-</ul>
-
-<p>To set trace tags for Systrace using the command-line:</p>
-
-<ol>
- <li>Use the {@code --set-tags} option:
-<pre>
-$ cd android-sdk/platform-tools/systrace
-$ python systrace.py --set-tags=gfx,view,wm
-</pre>
- </li>
- <li>Stop and restart the {@code adb} shell to enable tracing of these processes.
-<pre>
-$ adb shell stop
-$ adb shell start
-</pre></li>
-</ol>
-
-<p>To set trace tags for Systrace using the device user interface:</p>
-
-<ol>
- <li>On the device connected for tracing, navigate to: <strong>Settings >
- Developer options > Monitoring > Enable traces</strong>.</li>
- <li>Select the categories of processes to be traced and click <strong>OK</strong>.</li>
-</ol>
-
-<p class="note">
- <strong>Note:</strong> The {@code adb} shell does not have to be stopped and restarted when
- selecting trace tags using this method.
-</p>
-
-<p>After you have configured the category tags for your trace, you can start collecting
- information for analysis.</p>
-
-<p>To run a trace using the current trace tag settings:</p>
-
-<ol>
- <li>Make sure the device is connected through a USB cable and is
- <a href="{@docRoot}tools/device.html#setting-up">enabled for debugging</a>.</li>
- <li>Run the trace with the low-level system trace options and limits you want, for example:
-<pre>
-$ python systrace.py --cpu-freq --cpu-load --time=10 -o mytracefile.html
-</pre>
- </li>
- <li>On the device, execute any user actions you want be included in the trace.</li>
-</ol>
-
-<p>For more information on the available options for running Systrace, see the
-<a href="#options-pre-4.3">Systrace</a> help page.</p>
-
-
-<h2 id="analysis">Analyzing a Trace</h2>
-
-<p>After you have generated a trace, open the output html file using a web browser. This section
-explains how to analyze and interpret the information that the tool produces to find and fix UI
-performance problems.</p>
-
-<h3 id="frames">Inspecting Frames</h3>
-
-<p>Each app that is rendering frames shows a row of frame circles, which are typically colored
-green. Circles that are colored yellow or red, exceeding the 16.6 millisecond run time limit
-required to maintain a stable 60 frames per second. Zoom in using the 'w' key to see the frames of
-your application, and look for long-running frames getting in the way of smoothness.</p>
-
-<p class="note">
- <strong>Note:</strong> Hit the '?' key, or the button in the top right for help navigating the
- trace.
-</p>
-
-<img src="{@docRoot}images/systrace/frame-unselected.png" alt="Zoomed in view of a frame" id="figure2" />
-<p class="img-caption">
- <strong>Figure 2.</strong> Systrace display after zooming in on a long-running frame.
-</p>
-
-<p>Clicking on one such frame highlights it, focusing only on the work done by the system for that
-frame. On devices running Android 5.0 (API level 21) or higher, this work is split between the UI
-Thread and RenderThread. On prior versions, all work in creating a frame is done on the UI
-Thread.</p>
-
-<p>Click on individual components of the frame to see how long they took to run. Some events, such
-as <em>performTraversals</em>, describe what the system is doing in that method when you select
-it. Selecting a frame displays any alerts present in that frame.</p>
-
-<h3 id="alerts">Investigating Alerts</h3>
-
-<p>Systrace does automatic analysis of the events in the trace, and highlights many performance
-problems as alerts, suggesting what to do next.</p>
-
-<img src="{@docRoot}images/systrace/frame-selected.png" alt="Problematic frame selected" id="figure3" />
-<p class="img-caption">
- <strong>Figure 3.</strong> Selecting the problematic frame, an alert is shown identifying a problem.
-</p>
-
-<p>After you select a slow frame such as the one shown in Figure 3, an alert may be displayed. In
-the case above, it calls out that the primary problem with the frame is too much work being done
-inside {@link android.widget.ListView} recycling and rebinding. There are links to the relevant
-events in the trace, which can be followed to explain more about what the system is doing during
-this time.</p>
-
-<p>If you see too much work being done on the UI thread, as in this case with this
-{@link android.widget.ListView} work, you can
-use <a href="{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a>, the app code profiling
-tool, to investigate exactly what is taking so much time.</p>
-
-<p>Note that you can also find about every alert in the trace by clicking the <em>Alerts</em> tab to
-the far right of the window. Doing so expands the Alerts panel, where you can see every alert that
-the tool discovered in your trace, along with an occurrence count.</p>
-
-<img src="{@docRoot}images/systrace/frame-selected-alert-tab.png" alt="Alert tab shown" id="figure4" />
-<p class="img-caption">
- <strong>Figure 4.</strong> Clicking the Alert button to the right reveals the alert tab.
-</p>
-
-<p>The Alerts panel helps you see which problems occur in the trace, and how often they contribute
-to jank. Think of the alerts panel as a list of bugs to be fixed, often a tiny change or improvement
-in one area can eliminate an entire class of alerts from your application!</p>
-
-
-<h2 id="app-trace">Tracing Application Code</h2>
-
-<p>The tracing signals defined by the framework do not have visibility into everything your
-application is doing, so you may want to add your own. In Android 4.3 (API level 18) and higher, you
-can use the methods of the {@link android.os.Trace} class to add signals to your code. This
-technique can help you see what work your application's threads are doing at any given time. Tracing
-begin and end events do add overhead while a trace is being captured, a few microseconds each, but
-sprinkling in a few per frame, or per worker thread task can go a long way to adding context to a
-trace of your app.</p>
-
-<p>The following code example shows how to use the {@link android.os.Trace} class to track
-execution of an application method, including two nested code blocks within that method.</p>
-
-<pre>
-public void ProcessPeople() {
- Trace.beginSection("ProcessPeople");
- try {
- Trace.beginSection("Processing Jane");
- try {
- // code for Jane task...
- } finally {
- Trace.endSection(); // ends "Processing Jane"
- }
-
- Trace.beginSection("Processing John");
- try {
- // code for John task...
- } finally {
- Trace.endSection(); // ends "Processing John"
- }
- } finally {
- Trace.endSection(); // ends "ProcessPeople"
- }
-}
-</pre>
-
-<!-- todo: move these two Notes to the android.os.Trace class -->
-<p class="note">
- <strong>Note:</strong> When you nest trace calls within each other, the
- {@link android.os.Trace#endSection} method ends the most recently called
- {@link android.os.Trace#beginSection} method. This means that a trace started within another
- trace cannot extend beyond the end of the enclosing trace, so make sure your beginning and
- ending method calls are properly matched to measure your applications processing.
-</p>
-
-<p class="note">
- <strong>Note:</strong> Traces must begin and end on the same thread. Do not call
- {@link android.os.Trace#beginSection} on one thread of execution and then attempt to end the
- trace with a call to {@link android.os.Trace#endSection} on another thread.
-</p>
-
-<p>When using application-level tracing with Systrace, you must specify the package name of your
-application in the user interface or specify the {@code -a} or {@code --app=} options on the
-command line. For more information, see the
-<a href="{@docRoot}tools/help/systrace.html">Systrace usage guide</a>.</p>
-
-<p>You should enable app level tracing when profiling your app, even if you have not added signals
-yourself. Library code can include very useful tracing signals when you enable application-level
-tracing. The {@link android.support.v7.widget.RecyclerView} class is a great example of this,
-providing information about several important stages of work it executes.</p>
-
diff --git a/docs/html/tools/device.jd b/docs/html/tools/device.jd
deleted file mode 100644
index 2f39402..0000000
--- a/docs/html/tools/device.jd
+++ /dev/null
@@ -1,329 +0,0 @@
-page.title=Using Hardware Devices
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#device-developer-options">Enabling On-device Developer Options</a></li>
- <li><a href="#setting-up">Setting up a Device for Development</a>
- <ol>
- <li><a href="#VendorIds">USB Vendor IDs</a></li>
- </ol>
- </li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/win-usb.html">Google USB Driver</a></li>
- <li><a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a></li>
- </ol>
-</div>
-</div>
-
-<p>When building a mobile application, it's important that you always test your application on a
-real device before releasing it to users. This page describes how to set up your development
-environment and Android-powered device for testing and debugging on the device.</p>
-
-<p>You can use any Android-powered device as an environment for running,
-debugging, and testing your applications. The tools included in the SDK make it easy to install and
-run your application on the device each time you compile. You can install your application on the
-device directly from Android Studio or from the command line with ADB. If
-you don't yet have a device, check with the service providers in your area to determine which
-Android-powered devices are available.</p>
-
-<p>If you want a SIM-unlocked phone, then you might consider a Nexus phone. To purchase a
-Nexus phone, visit the <a href="https://play.google.com/store/devices">Google Play</a> store.</p>
-
-<p class="note"><strong>Note:</strong> When developing on a device, keep in mind that you should
-still use the <a
-href="{@docRoot}tools/devices/emulator.html">Android emulator</a> to test your
-application
-on configurations that are not equivalent to those of your real device. Although the emulator
-does not allow you to test every device feature (such as the accelerometer), it does
-allow you to verify that your application functions properly on different versions of the Android
-platform, in different screen sizes and orientations, and more.</p>
-
-
-<h2 id="developer-device-options" style="margin-bottom: 0px;">Enabling On-device Developer Options</h2>
-
-<img src="/images/tools/dev-options-inmilk.png" alt="" style="float:right;margin-left:30px">
-
-<p>Android-powered devices have a host of developer options that you can
-access on the phone, which let you:</p>
-<ul>
- <li>Enable debugging over USB.</li>
- <li>Quickly capture bug reports onto the device.</li>
- <li>Show CPU usage on screen.</li>
- <li>Draw debugging information on screen such as layout bounds,
- updates on GPU views and hardware layers, and other information.</li>
- <li>Plus many more options to simulate app stresses or enable debugging options.</li>
-</ul>
-<p>To access these settings, open the <em>Developer options</em> in the
-system Settings. On Android 4.2 and higher, the <strong>Developer options</strong> screen is
-hidden by default. To make it visible, go to
-<b>Settings > About phone</b> and tap <b>Build number</b> seven times. Return to the previous
-screen to find <strong>Developer options</strong> at the bottom.</p>
-
-
-
-
-<h2 id="setting-up">Setting up a Device for Development</h2>
-
-<p>With an Android-powered device, you can develop and debug your Android applications just as you
-would on the emulator. Before you can start, there are just a few things to do:</p>
-
-<ol>
- <li>Verify that your application is "debuggable" in your manifest or <em>build.gradle</em> file.
- <p>In the build file, make sure the <em>debuggable</em> property in the <em>debug</em> build
- type is set to true. The build type property overrides the manifest setting. </p>
-<pre>
-android {
- buildTypes {
- debug {
- debuggable true
- }
-</pre>
-
- <p>In the <code>AndroidManifest.xml</code> file, add <code>android:debuggable="true"</code> to
-the <code><application></code> element.</p>
- <p class="note"><strong>Note:</strong> If you manually enable debugging in the manifest
- file, be sure to disable it in your release build (your published application
-should usually <em>not</em> be debuggable).</p></li>
- <li>Enable <strong>USB debugging</strong> on your device by going to
- <strong>Settings > Developer options</strong>.
- <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
- options</strong> is hidden by default. To make it available, go
- to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
- seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
- </li>
- <li>Set up your system to detect your device.
- <ul>
- <li>If you're developing on Windows, you need to install a USB driver for adb. For an
-installation guide and links to OEM drivers, see the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB
-Drivers</a> document.</li>
- <li>If you're developing on Mac OS X, it just works. Skip this step.</li>
- <li>If you're developing on Ubuntu Linux, you need to add a
-<code>udev</code> rules file that contains a USB configuration for each type of device
-you want to use for development. In the rules file, each device manufacturer
-is identified by a unique vendor ID, as specified by the
-<code>ATTR{idVendor}</code> property. For a list of vendor IDs, see <a
-href="#VendorIds">USB Vendor IDs</a>, below. To set up device detection on
-Ubuntu Linux:
-
- <ol type="a">
- <li>Log in as root and create this file:
- <code>/etc/udev/rules.d/51-android.rules</code></span>.
- <p>Use this format to add each vendor to the file:<br/>
- <code>SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"</code>
- <br /><br />
-
- In this example, the vendor ID is for HTC. The <code>MODE</code>
-assignment specifies read/write permissions, and <code>GROUP</code> defines
-which Unix group owns the device node. </p>
-
- <p class="note"><strong>Note:</strong> The rule syntax
-may vary slightly depending on your environment. Consult the <code>udev</code>
-documentation for your system as needed. For an overview of rule syntax, see
-this guide to <a
-href="http://www.reactivated.net/writing_udev_rules.html">writing udev
-rules</a>.</p>
- </li>
- <li>Now execute:<br/>
- <code>chmod a+r /etc/udev/rules.d/51-android.rules</code>
- </li>
- </ol>
- </li>
- </ul>
- </li>
-</ol>
-
-
-<p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher
-to your computer, the system shows a dialog asking whether to accept an RSA key that allows
-debugging through this computer. This security mechanism protects user devices because it ensures
-that USB debugging and other adb commands cannot be executed unless you're able to unlock the
-device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with
-SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or
-higher.</p>
-
-
-<p>When plugged in over USB, you can verify that your device is connected by executing <code>adb
-devices</code> from your SDK {@code platform-tools/} directory. If connected,
-you'll see the device name listed as a "device."</p>
-
-<p>If using Android Studio, run or debug your application as usual. You will be
-presented with a <b>Device Chooser</b> dialog that lists the available
-emulator(s) and connected device(s). Select the device upon which you want to
-install and run the application.</p>
-
-<p>If using the <a href="{@docRoot}tools/help/adb.html">Android
-Debug Bridge</a> (adb), you can issue commands with the <code>-d</code> flag to
-target your connected device.</p>
-
-<h3 id="VendorIds">USB Vendor IDs</h3>
-
-<p>This table provides a reference to the vendor IDs needed in order to add USB
-device support on Linux. The USB Vendor ID is the value given to the
-<code>ATTR{idVendor}</code> property in the rules file, as described
-above.</p>
-
-<table>
- <tr>
- <th>Company</th><th>USB Vendor ID</th></tr>
- <tr>
- <td>Acer</td>
- <td><code>0502</code></td>
- </tr>
- <tr>
- <td>ASUS</td>
- <td><code>0b05</code></td>
- </tr>
- <tr>
- <td>Dell</td>
- <td><code>413c</code></td>
- </tr>
- <tr>
- <td>Foxconn</td>
- <td><code>0489</code></td>
- </tr>
- <tr>
- <td>Fujitsu</td>
- <td><code>04c5</code></td>
- </tr>
- <tr>
- <td>Fujitsu Toshiba</td>
- <td><code>04c5</code></td>
- </tr>
- <tr>
- <td>Garmin-Asus</td>
- <td><code>091e</code></td>
- </tr>
- <tr>
- <td>Google</td>
- <td><code>18d1</code></td>
- </tr>
- <tr>
- <td>Haier</td>
- <td><code>201E</code></td>
- </tr>
- <tr>
- <td>Hisense</td>
- <td><code>109b</code></td>
- </tr>
- <tr>
- <td>HP</td>
- <td><code>03f0</code></td>
- </tr>
- <tr>
- <td>HTC</td>
- <td><code>0bb4</code></td>
- </tr>
- <tr>
- <td>Huawei</td>
- <td><code>12d1</code></td>
- </tr>
- <tr>
- <td>Intel</td>
- <td><code>8087</code></td>
- </tr>
- <tr>
- <td>K-Touch</td>
- <td><code>24e3</code></td>
- </tr>
- <tr>
- <td>KT Tech</td>
- <td><code>2116</code></td>
- </tr>
- <tr>
- <td>Kyocera</td>
- <td><code>0482</code></td>
- </tr>
- <tr>
- <td>Lenovo</td>
- <td><code>17ef</code></td>
- </tr>
- <tr>
- <td>LG</td>
- <td><code>1004</code></td>
- </tr>
- <tr>
- <td>Motorola</td>
- <td><code>22b8</code></td>
- </tr>
- <tr>
- <td>MTK</td>
- <td><code>0e8d</code></td>
- </tr>
- <tr>
- <td>NEC</td>
- <td><code>0409</code></td>
- </tr>
- <tr>
- <td>Nook</td>
- <td><code>2080</code></td>
- </tr>
- <tr>
- <td>Nvidia</td>
- <td><code>0955</code></td>
- </tr>
- <tr>
- <td>OTGV</td>
- <td><code>2257</code></td>
- </tr>
- <tr>
- <td>Pantech</td>
- <td><code>10a9</code></td>
- </tr>
- <tr>
- <td>Pegatron</td>
- <td><code>1d4d</code></td>
- </tr>
- <tr>
- <td>Philips</td>
- <td><code>0471</code></td>
- </tr>
- <tr>
- <td>PMC-Sierra</td>
- <td><code>04da</code></td>
- </tr>
- <tr>
- <td>Qualcomm</td>
- <td><code>05c6</code></td>
- </tr>
- <tr>
- <td>SK Telesys</td>
- <td><code>1f53</code></td>
- </tr>
- <tr>
- <td>Samsung</td>
- <td><code>04e8</code></td>
- </tr>
- <tr>
- <td>Sharp</td>
- <td><code>04dd</code></td>
- </tr>
- <tr>
- <td>Sony</td>
- <td><code>054c</code></td>
- </tr>
- <tr>
- <td>Sony Ericsson</td>
- <td><code>0fce</code></td>
- </tr>
- <tr>
- <td>Sony Mobile Communications</td>
- <td><code>0fce</code></td>
- </tr>
- <tr>
- <td>Teleepoch</td>
- <td><code>2340</code></td>
- </tr>
- <tr>
- <td>Toshiba</td>
- <td><code>0930</code></td>
- </tr>
- <tr>
- <td>ZTE</td>
- <td><code>19d2</code></td>
- </tr>
-</table>
diff --git a/docs/html/tools/devices/emulator.jd b/docs/html/tools/devices/emulator.jd
deleted file mode 100644
index dda6619..0000000
--- a/docs/html/tools/devices/emulator.jd
+++ /dev/null
@@ -1,643 +0,0 @@
-page.title=Running Apps in the Android Emulator
-parent.title=Android Studio
-parent.link=index.html
-page.tags=emulator
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#about">About the Android Emulator</a></li>
- <li><a href="#runningapp">Running an App in the Android Emulator</a></li>
- <li><a href="#runningemulator">Launching the Android Emulator Without Running an App</a></li>
- <li><a href="#navigate">Navigating on the Screen</a></li>
- <li><a href="#tasks">Performing Basic Tasks in the Emulator</a></li>
- <li><a href="#extended">Working With Extended Controls, Settings, and Help</a></li>
-
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/help/emulator.html">Android Emulator Command Line Features</a></li>
- <li><a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with
- AVD Manager</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>The Android Emulator simulates a device and displays it on your development
-computer. It lets you prototype, develop, and test
-Android apps without using a hardware device. The emulator supports Android
-phone, tablet, Android Wear, and Android TV devices. It comes with predefined
-device types
-so you can get started quickly, and you can create your own device definitions
-and emulator skins.</p>
-
-<p>The Android Emulator is fast,
-powerful, and feature-rich. It can transfer information faster than using
-a connected hardware device, speeding up the development process. The
-multi-core feature lets the emulator take advantage of multiple core
-processors on your development computer to improve emulator performance even
-more.</p>
-
-<img src="{@docRoot}images/tools/e-emulator.png" style="height:400px" alt="emulator"/>
-
-<h2 id="about">About the Android Emulator</h2>
-
-<p>You can launch an app on the emulator when you run your project, or you can
-drag an APK file onto the emulator to install it. As with a hardware device,
-after you install an app
-on a virual device, it remains until you uninstall or replace it. If needed, you
-can test how multiple apps, such as your own or system apps, work with each
-other.</p>
-
-<h3 id="features">Features for trying out your apps</h3>
-
-<p>You interact with the emulator just as you would with a hardware device, but
-using your mouse and keyboard, and emulator buttons and controls.
-The emulator supports virtual hardware buttons and touchscreens, including
-two-finger operations,
-as well as directional pads (D-pads), trackballs, wheels, and various
-sensors. You can dynamically resize the emulator window as needed, zoom in and
-out, change the orientation, and even take a screenshot.</p>
-
-<p>When your app is running on
-the emulator, it can use the services of the Android platform to invoke other
-apps, access the network, play audio and video, accept audio input,
-store and retrieve data, notify the user, and render graphical transitions and
-themes. The emulator has controls that let
-you easily send incoming phone calls and text messages, specify
-the location of the device, simulate fingerprint scans, specify network
-speed and status, and simulate battery properties. The emulator can
-simulate an SD card and internal data storage; you can drag a file, such as a
-graphics or data file, onto the emulator to store it.</p>
-
-<h3 id="avds">Android Virtual Device configurations</h3>
-
-<p>The emulator uses an Android Virtual Device (AVD) configuration to determine
-the look, functionality, and system image of the simulated device. AVDs let you
-define certain hardware aspects of your emulated devices and allow you to create
-many configurations to test different Android platforms and hardware
-permutations.</p>
-
-<p>Each AVD functions as an independent device, with its own private storage for
-user data, SD card, and so on. When you launch the emulator with an AVD
-configuration, it automatically loads the user data and SD card data from the
-AVD directory. By default, the emulator stores the user data, SD card data, and
-cache in the AVD directory.</p>
-
-<p>To create and manage AVDs, use the
-<a href="{@docRoot}tools/devices/managing-avds.html">AVD Manager</a>.
-For more information, see
-<a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.</p>
-
-<h3 id="system">System images</h3>
-
-<p>The Android Emulator runs a full
-Android system stack, down to the kernel level, that includes a set of
-preinstalled apps (such as the dialer) that you can access from your
-apps. You can choose which version of the Android system you want to
-run in the emulator when creating AVDs.
-</p>
-
-<p>The Android system images available through the AVD Manager contain
-code for the Android Linux kernel, the native libraries, the VM, and the
-various Android packages (such as the Android framework and preinstalled
-apps).</p>
-
-<h3 id="dependencies">Dependencies and prerequisites</h3>
-<p>The Android Emulator has the following requirements:</p>
- <ul>
- <li>Android Studio 2.0 or higher</li>
- <li>SDK Tools 25.0.10 or higher</li>
- <li><a href="{@docRoot}sdk/index.html#Requirements">System
- requirements</a></li>
- <li>Newly created AVDs to replace any AVDs for emulator 24.0.<em>x</em> or
- lower</li>
- <li>Active network connection for certain operations, such as testing app
- features that require it</li>
- <li>adb integration enabled through <strong>Tools</strong> >
- <strong>Android</strong> > <strong>Enable ADB Integration</strong>
- </li>
-</ul>
-
-<h3 id="limitations">What's not supported</h3>
-
-<p>The Android Emulator supports most features of a device, but doesn't
-include virtual hardware for:</p>
-<ul>
-<li>WiFi</li>
-<li>Bluetooth</li>
-<li>NFC</li>
-<li>SD card insert/eject</li>
-<li>Device-attached headphones</li>
-<li>USB</li>
-</ul>
-<p>The watch emulator for Android Wear doesn't support the Overview
-(Recent Apps) button, D-pad, and fingerprint sensor.</p>
-
-<p>While most end users of phones and tablets tend to use earlier API levels,
-Android Wear and Android TV users tend to use the latest releases. Using recent
-releases can give you a better experience using the emulator.
-</p>
-
-<h2 id="runningapp">Running an App in the Android Emulator</h2>
-
-<p>You can run an app from an Android Studio project. Or, you can run an app
-that's been installed on the emulator as you would run any app on a device.</p>
-
-<p>To start the emulator and run an app in your project:</p>
-<ol>
-<li>Open an Android Studio project and select Run <img src="{@docRoot}images/tools/e-irun.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Run icon" />.</li>
- <p>The <em>Select Deployment Target</em> dialog appears.</p>
-<img src="{@docRoot}images/tools/e-selectdeploymenttarget.png"
-style="height:250px" alt="Select Deployment Target dialog" />
-<li>If you receive an error or warning message at the top of the dialog, click
-the link to correct the problem or get more information.</li>
-<p>The <strong>No USB devices or running emulators detected</strong> warning
-means that you don’t currently have any emulators running, or any detected
-hardware devices connected to your computer. If you
-don’t have hardware devices connected to your computer, or any emulators
-running, you can ignore it. </p>
-<p>Some errors you must fix before you can continue, such as certain Hardware
-Accelerated Execution Manager (Intel® HAXM) errors.</p>
-<li>In the <em>Select Deployment Target</em> dialog, select an existing emulator
-definition, and then click <strong>OK</strong>.</p>
-<p>If you don’t see a definition you want to use, click <strong>Create New
-Emulator</strong> to launch the AVD Manager. After you define a new AVD, in
-the <em>Select Deployment
-Target</em> dialog, click <strong>OK</strong>.</p>
-<p>If you want to use this emulator definition as the default for your project,
-select <strong>Use same selection for future launches</strong>.</p>
-<p>The emulator launches and displays your app.</p>
-<li>Test your app in the emulator.</li>
-<p>You can use the features described in the following sections:</p>
-<ul>
-<li><a href="#navigate">Navigating on the Screen</a></li>
-<li><a href="#tasks">Performing Basic Tasks in the Emulator</a></li>
-<li><a href="#extended">Working With Extended Controls, Settings, and Help</a></li>
-</ul>
-<li>To close the emulator, click Close <img src="{@docRoot}images/tools/e-iclose.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Close icon" />.</li>
- <p>The emulator device stores the installed app so you can run it again, if
- needed. You need to uninstall an app to remove it. If you run the project
- again on the same emulator, it replaces the app with the new version.</p>
-</ol>
-
-<h2 id="runningemulator">Launching the Android Emulator Without Running an App</h2>
-
-<p>To start the emulator:</p>
-<ol>
-<li><a href="{@docRoot}tools/devices/managing-avds.html">Open the AVD Manager</a>.</li>
-<li>Double-click an AVD, or click Run <img src="{@docRoot}images/tools/e-irun.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Run icon" />.</li>
- <p>The Android Emulator appears.</p>
- <p>While the emulator is running, you can run Android Studio projects and
- choose the
- emulator as the target device. You can also drag one or more APKs onto the
- emulator to install them, and then run them.</p>
-</ol>
-
-
-<h2 id="navigate">Navigating on the Screen</h2>
-
-<p>Use your computer mouse pointer to mimic your finger on the touchscreen;
-select menu items and input fields; and click buttons and controls.
-Use your computer keyboard to type characters and enter emulator shortcuts.</p>
-<table border="0" style="clear:left;">
-<tr>
- <th scope="col">Feature</th>
- <th scope="col">Description</th>
- </tr>
-
- <tr>
- <td>Swipe the screen</td>
- <td>Point to the screen, press and hold the primary mouse button, swipe
- across the screen, and then release.</td>
- </tr>
- <tr>
- <td>Drag an item</td>
- <td>Point to an item on the screen, press and hold the primary mouse
- button, move the item, and then release.</td>
- </tr>
- <tr>
- <td>Tap <div>(touch)</div></td>
- <td>Point to the screen, press the primary mouse button, and then release.
- For example, you could click a text field to start typing in it, select an
- app, or press a button.</td>
- </tr>
- <tr>
- <td>Double tap</td>
- <td>Point to the screen, press the primary mouse button quickly twice,
- and then release.</td>
- </tr>
- <tr>
- <td>Touch and hold</td>
- <td>Point to an item on the screen, press the primary mouse button, hold,
- and then release. For example, you could open options for an item. </td>
- </tr>
- <tr>
- <td>Type</td>
- <td>You can type in the emulator by using your computer keyboard, or using
- a keyboard that pops up on the emulator screen. For example, you could
- type in a text field after you selected it.</td>
- </tr>
- <tr>
- <td><nobr>Pinch and spread</nobr></td>
- <td><div>Pressing Ctrl or Command (⌘) brings up a pinch gesture multi-touch
- interface. The mouse acts as the first finger, and across the anchor point
- is the second finger. Drag the cursor to move the first point.</div>
- <div>Clicking the left mouse button acts like touching down both points, and
- releasing acts like picking both up.</div></td>
- </tr>
-</table>
-
-<h2 id="tasks">Performing Basic Tasks in the Emulator</h2>
-
-<p>The panel on the right side of the emulator lets you perform various tasks.
-You can also drag files onto the emulator to install apps and download files.
-</p>
-<table border="0" style="clear:left;">
- <tr>
- <th scope="col">Feature</th>
- <th scope="col">Description</th>
- <th scope="col">Keyboard Shortcut</th>
- </tr>
- <tr>
- <td>Close<br><img src="{@docRoot}images/tools/e-iclose.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Close icon" /></td>
- <td>Close the emulator.</td>
- <td></td>
- </tr>
- <tr>
- <td>Minimize<br><img src="{@docRoot}images/tools/e-iminimize.png"
- style="vertical-align:sub;margin:0;height:9px" alt="Minimize icon" /></td>
- <td>Minimize the emulator window.</td>
- <td></td>
- </tr>
- <tr>
- <td>Resize</td>
- <td>Resize the emulator as you would any other operating system window. The
-emulator maintains an aspect ratio appropriate for your device.</td>
- <td>⌘↑ and ⌘↓</td>
- </tr>
- <tr>
- <td>Power<br><img src="{@docRoot}images/tools/e-ipower.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Power icon" /></td>
- <td>Click to turn the screen on or off.<br>Click and hold to turn the device
- on or off. </td>
- <td><div>Ctrl+P</div> <div>⌘P</div></td>
- </tr>
- <tr>
- <td>Volume Up<br><img src="{@docRoot}images/tools/e-ivolumeup.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Volume Up icon" /></td>
- <td>Click to view a slider control and turn the volume up. Click again to
- turn it up more, or use the slider control to change the volume. </td>
- <td><div>Ctrl+=</div><div>⌘=</div></td>
- </tr>
- <tr>
- <td>Volume Down<br><img src="{@docRoot}images/tools/e-ivolumedown.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Volume Down icon" /></td>
- <td>Click to view a slider control and turn the volume down. Click again to
- turn it down more, or use the slider control to change the volume. </td>
- <td><div>Ctrl+-</div><div>⌘-<div></td>
- </tr>
- <tr>
- <td>Rotate Left<br><img src="{@docRoot}images/tools/e-irotateleft.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Rotate Left icon" /></td>
- <td>Rotate the phone 90 degrees counterclockwise.</td>
- <td><div>Ctrl+Left</div><div>⌘←</div></td>
- </tr>
- <tr>
- <td>Rotate Right<br><img src="{@docRoot}images/tools/e-irotateright.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Rotate Right icon" /></td>
- <td>Rotate the phone 90 degrees clockwise.</td>
- <td><div>Ctrl+Right</div><div>⌘→</div></td>
- </tr>
- <tr>
- <td>Take Screenshot<br><img src="{@docRoot}images/tools/e-itakescreenshot.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Take Screenshot icon" />
- </td>
- <td>Click to take a screenshot of the device. The default save location is
- your computer desktop. To change the save location, select
- <strong>…</strong> > <strong>Settings</strong>. The emulator creates a
- file with the name <code>Screenshot_<em>yyyymmdd-hhmmss</em>.png</code>
- using the year, month, day, hour, minute, and second of the capture, for
- example, <code>Screenshot_20160219-145848.png</code>. </td>
- <td><div>Ctrl+S</div><div>⌘S<div></td>
- </tr>
- <tr>
- <td><nobr>Enter Zoom Mode</nobr><br><img src="{@docRoot}images/tools/e-izoom.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Enter Zoom Mode icon" />
- </td>
- <td><p>Click so the cursor changes to the zoom icon:</p>
-<ul>
- <li> Left-click the screen to zoom in by 25%, up to a maximum of about twice
- the screen resolution of the virtual device.
- <li> Right-click to zoom out.
- <li> Left-click and drag to select a box-shaped area to zoom in on.
- <li> Right-click and drag a selection box to reset to default zoom.
- <li> Ctrl-click to touch the screen while in zoom mode.
-</ul>
-<p>Click Enter Zoom Mode again to return to normal screen size.</p></td>
- <td><div>Ctrl+Z</div><div>⌘Z</div>
- <div>While in zoom mode:</div>
- <div>Ctrl+Up</div><div>Ctrl+Down</div>
- <div>Ctrl+Shift+Up</div><div>Ctrl+Shift+Down</div>
- <div>Ctrl+Shift+Left</div><div>Ctrl+Shift+Right</div>
- <div>⌘↑ and ⌘↓</div>
- <div>⇧⌘↑ and ⇧⌘↓</div>
- <div>⇧⌘← and ⇧⌘→</div></td>
- </tr>
- <tr>
- <td>Back<br><img src="{@docRoot}images/tools/e-iback.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Back icon" /></td>
- <td>Return to the previous screen, or close a dialog box, an options menu,
- the Notifications panel, or the onscreen keyboard. </td>
- <td><div>Ctrl+Backspace</div>
- <div>⌘⌫</div></td>
- </tr>
- <tr>
- <td>Home<br><img src="{@docRoot}images/tools/e-ihome.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Home icon" /></td>
- <td>Return to the Home screen. Press and hold to open the item specific to
- your API level. </td>
- <td><div>Ctrl+H</div><div>⌘⇧H</div></td>
- </tr>
- <tr>
- <td><div>Overview<br><img src="{@docRoot}images/tools/e-ioverview.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Overview icon" /></div>
- <div>(Recent Apps)</div></td>
- <td>Tap to open a list of thumbnail images of apps you’ve worked with
- recently. To open an app, tap it. To remove a thumbnail from the list,
- swipe it left or right. This button isn't supported for Android Wear.</td>
- <td><div>Ctrl+O</div><div>⌘O</div></td>
- </tr>
- <tr>
- <td>Menu</td>
- <td>Type the keyboard shortcut to simulate the Menu button, for example,
- to open the menu for the selected app.</td>
- <td><div>Ctrl+M</div><div>⌘M</div></td>
- </tr>
- <tr>
- <td>More<br><img src="{@docRoot}images/tools/e-imore.png"
- style="vertical-align:sub;margin:0;height:9px" alt="More icon" /></td>
- <td>Click to access other features and settings, described in the next
- table.</td>
- <td></td>
- </tr>
- <tr>
- <td>Install an APK</td>
- <td>Drag an APK file onto the emulator screen. An APK Installer dialog
- appears. When the installation completes, you can view the app in your
- apps list.The app didn’t install if a dialog appears that says “APK failed
- to install.”</td>
- <td></td>
- </tr>
- <tr>
- <td>Add a file</td>
- <td>Drag any file onto the emulator screen. It’s placed in the
- <code>/sdcard/Download</code> directory. Navigate to the file using the
- method for the API level. For example, for API 22, this is the navigation
- path: <strong>Settings</strong> > <strong>Device: Storage & USB</strong>
- > <strong>Internal Storage</strong> > <strong>Explore</strong>
- (Virtual SD Card). </td>
- <td></td>
- </tr>
- <tr>
- <td>Toggle trackball mode</td>
- <td></td>
- <td>F6</td>
- </tr>
-</table>
-
-<h2 id="extended">Working With the Extended Controls, Settings, and Help</h2>
-
-<p>The extended controls let you send data, change device properties, control
-apps, and more. To access the controls, select <strong>…</strong> in the
-emulator panel and then select the option you want in the left panel of the
-<em>Extended Controls</em> dialog.</p>
-
-<table border="0" style="clear:left;">
- <tr>
- <th scope="col">Feature</th>
- <th scope="col">Description</th>
- <th scope="col">Keyboard Shortcuts</th>
- </tr>
- <tr>
- <td>Location</td>
- <td>
-<p>The emulator lets you simulate “my location” information: the location where
-the emulated device is currently located. For example, if you click My Location
-<img src="{@docRoot}images/tools/e-ilocation.png"
- style="vertical-align:sub;margin:0;height:17px" alt="My Location icon" />
- in Google Maps and then send a location, the map shows it.</p>
- <p>To send a GPS location:</p>
-<ol>
- <li> Select <strong>Decimal</strong> or <strong>Sexagesimal</strong>.</li>
- <li> Specify the location.</li>
-
-<p>In decimal mode, enter a <strong>Latitude</strong> value in the range -90.0
-to +90.0 degrees and a <strong>Longitude</strong> value in the range -180.0 to
-+180.0 degrees.</p>
-<p>In sexigesimal mode, enter a three-part <strong>Latitude</strong> value in
-the range -90 to +90 degrees, 0 to 59 minutes, and 0.0 to 60.0
-seconds. Enter a <strong>Longitude</strong> value in the range -180 to +180
-degrees, 0 to 59 minutes, and 0.0 to 60.0 seconds.</p>
-<p>For the latitude, - indicates south and + indicates north; for the longitude,
-- indicates west and + indicates east. The + is optional.</p>
-<p>Optionally specify an <strong>Altitude</strong> value in the range
--1,000.0 to +10,000.0 meters.</p>
-
- <li> Click <strong>Send</strong>.</li>
-</ol>
-<p>To use geographic data from a GPS exchange format (GPX) or Keyhole Markup
-Language (KML) file:</p>
-<ol>
- <li> Click <strong>Load GPX/KML</strong>.</li>
- <li> In the file dialog, select a file on your computer and click
- <strong>Open</strong>.</li>
- <li> Optionally select a <strong>Speed</strong>.</li>
-<p>The speed defaults to the <strong>Delay</strong> value (<strong>Speed
-1X</strong>). You can increase the speed by double (<strong>Speed</strong>
-<strong>2X</strong>), triple (<strong>Speed 3X</strong>), and so on.</p>
-
- <li> Click Run <img src="{@docRoot}images/tools/e-irun.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Run icon" />.</li>
-</ol>
-</td>
- <td><div>Ctrl+Shift+L</div><div>⇧⌘L</div></td>
- </tr>
- <tr>
- <td>Cellular</td>
- <td><p>The emulator lets you simulate various network conditions. You can
- approximate the network speed for different network protocols, or you can
- specify <strong>Full</strong>, which transfers data as quickly as your
- computer allows. Specifying a network protocol is always slower than
- <strong>Full</strong>. You can also specify the voice and data network
- status, such as roaming. The defaults are set in the AVD.</p>
- <p>Select a <strong>Network type</strong>:</p>
-<ul>
- <li> GSM - Global System for Mobile Communications</li>
- <li> HSCSD - High-Speed Circuit-Switched Data</li>
- <li> GPRS - Generic Packet Radio Service</li>
- <li> EDGE - Enhanced Data rates for GSM Evolution</li>
- <li> UMTS - Universal Mobile Telecommunications System</li>
- <li> HSPDA - High-Speed Downlink Packet Access</li>
- <li> Full (default)</li>
-</ul>
-<p>Select a <strong>Voice status</strong>, <strong>Data status</strong>, or
-both:</p>
-<ul>
- <li> Home (default)</li>
- <li> Roaming</li>
- <li> Searching</li>
- <li> Denied (emergency calls only)</li>
- <li> Unregistered (off)</li>
-</ul>
-</td>
- <td><div>Ctrl+Shift+C</div><div>⇧⌘C</td>
- </tr>
- <tr>
- <td>Battery</td>
- <td><p>You can simulate the battery properties of a device to see how your
- app performs under different conditions. To select a <strong>Charge
- level</strong>, use the slider control.</p>
- <p>Select a <strong>Charger connection</strong> value:</p>
-<ul>
- <li>None</li>
- <li>AC charger</li>
-</ul>
-<p>Select a <strong>Battery health</strong> value:</p>
-<ul>
- <li> Good (default)</li>
- <li> Failed</li>
- <li> Dead</li>
- <li> Overvoltage</li>
- <li> Overheated</li>
- <li> Unknown</li>
-</ul>
-<p>Select a <strong>Battery status </strong>value:</p>
-<ul>
- <li> Unknown</li>
- <li> Charging (default)</li>
- <li> Discharging</li>
- <li> Not charging</li>
- <li> Full</li>
-</ul>
-</td>
- <td><div>Ctrl+Shift+B</div><div>⇧⌘B</div></td>
- </tr>
- <tr>
- <td>Phone</td>
- <td><p>The emulator lets you simulate incoming phone calls and text
- messages. Note that the information flow is one way, from the control to
- the emulator. For example, the control doesn’t change its state if the
- emulator hangs up; you need to end the call in the control.</p>
- <p>To initiate a call to the emulator:</p>
-<ol>
- <li> Select or type a phone number in the <strong>From</strong> field.</li>
- <li> Click <strong>Call Device</strong>.</li>
- <li> Optionally click <strong>Hold Call</strong> to put the call on hold.</li>
- <li> To end the call, click <strong>End Call</strong>.</li>
-</ol>
-<p>To send a text message to the emulator:</p>
-<ol>
- <li> Select or type a phone number in the <strong>From</strong> field.</li>
- <li> Type a message in the <strong>SMS message</strong> field.</li>
- <li> Click <strong>Send Message</strong>.</li>
-</ol>
-</td>
- <td><div>Ctrl+Shift+P</div><div>⇧⌘P</div></td>
- </tr>
- <tr>
- <td>Directional Pad</td>
- <td><p>If the AVD has the directional pad enabled in the hardware profile,
- you can use the directional pad controls with the emulator. However, not
- all devices can support the directional pad; for example, an Android watch.
- The buttons simulate the following actions:</p>
-<img src="{@docRoot}images/tools/e-dpad.png"
- style="vertical-align:sub;margin:0;width:244px" alt="Directional Pad Control" />
-</td>
- <td><div>Ctrl+Shift+D</div><div>⇧⌘D</div></td>
- </tr>
- <tr>
- <td>Fingerprint</td>
- <td><p>This control can simulate 10 different fingerprint scans. You can
- use it to test fingerprint integration in your app. This feature isn't
- supported for Android Wear.</p>
- <p>To simulate a fingerprint scan on the virtual device:</p>
-<ol>
- <li> Prepare an app to receive a fingerprint.</li>
- <li> Select a <strong>Fingerprint</strong> value.</li>
- <li> Click <strong>Touch Sensor</strong>.</li>
-</ol>
-</td>
- <td><div>Ctrl+Shift+F</div><div>⇧⌘F</div></td>
- </tr>
- <tr>
- <td>Settings</td>
- <td><p>You can specify the following settings:</p>
-<ul>
- <li> <strong>Emulator window theme</strong> - Select Light or Dark.</li>
- <li> <strong>Send keyboard shortcuts to</strong> - By default, some keyboard
- combinations will trigger emulator control shortcuts. If you’re developing
- an app that includes keyboard shortcuts, such as one targeted at
- devices with Bluetooth keyboards, you can change this setting to send
- <em>all</em> keyboard input to the virtual device, including input
- that would be a shortcut in the emulator.</li>
- <li> <strong>Screenshot save location</strong> - Click the folder icon to
- specify a location to save screenshots of the emulator screen.</li>
- <li> <strong>Use detected ADB location</strong> - If you're running the
- emulator from Android Studio, you should select this setting (the default).
- If you run the emulator from outside Android Studio and want it to use a
- specific adb executable, deselect this option and specify the SDK Tools
- location. If this setting is incorrect, features such as drag-and-drop app
- install and file copy, and screenshot capture, won't work. </li>
- <li> <strong>When to send crash reports</strong> - Select Always, Never, or
- Ask. </li>
-</ul>
-</td>
- <td>Ctrl+Shift+S<br>⇧⌘S</td>
- </tr>
- <tr>
- <td>Help > Keyboard Shortcuts</td>
- <td><p>See the keyboard shortcuts that the emulator accepts. For the
- shortcuts to work, you need to:</p>
-<ul>
- <li>Select <strong>Settings</strong> > <strong>Send keyboard shortcuts
- to</strong> > <strong>Emulator controls (default)</strong>.</li>
-</ul>
-</td>
- <td>F1<br>⌘/</td>
- </tr>
- <tr>
- <td>Help > Emulator Help</td>
- <td><p>To go to the online documentation for the emulator, click
- <strong>Documentation</strong>.</p>
- <p>To file a bug against the emulator, click <strong>File a Bug</strong>.
- </p>
- <p>To make suggestions, click <strong>Send Feedback</strong>.</p>
- <p>All of these links require an internet connection and a browser.</p> </td>
- <td>F1<br>⌘/</td>
- </tr>
- <tr>
- <td>Help > About</td>
- <td><p>See which adb port the emulator uses, as well as the Android and
- emulator version numbers. Compare the latest available emulator version
- with your version to determine if you have the latest software installed.
- </p>
- <p>The emulator serial number is <strong>emulator-<em></strong>adb_port</em>,
- which you can specify as an adb command line option, for example.</p></td>
- <td>F1<br>⌘/</td>
- </tr>
-</table>
-
-
-
-
-
diff --git a/docs/html/tools/devices/index.jd b/docs/html/tools/devices/index.jd
deleted file mode 100644
index 6263c8b..0000000
--- a/docs/html/tools/devices/index.jd
+++ /dev/null
@@ -1,78 +0,0 @@
-page.title=Managing Virtual Devices
-@jd:body
-
-
- <p>An Android Virtual Device (AVD) is an emulator configuration that lets you model an actual
- device by defining hardware and software options to be emulated by the Android Emulator.</p>
-
- <p>The easiest way to create an AVD is to use the graphical
- <a href="{@docRoot}tools/devices/managing-avds.html">AVD Manager</a>, which you launch
- from Android Studio by clicking <strong>Tools > Android > AVD Manager</strong>. You can
- also start the AVD Manager from the command line by calling the <code>android</code> tool with
- the <code>avd</code> options, from the <strong><sdk>/tools/</strong> directory.</p>
-
- <p>You can also create AVDs on the command line by passing the <code>android</code> tool options.
- For more information on how to create AVDs in this manner, see
- <a href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing Virtual Devices from the
- Command Line</a>.</p>
-
- <p>An AVD consists of:</p>
-
- <ul>
- <li>A hardware profile: Defines the hardware features of the virtual
- device. For example, you can define whether the device has a camera, whether it uses a physical
- QWERTY keyboard or a dialing pad, how much memory it has, and so on.</li>
-
- <li>A mapping to a system image: You can define what version of the Android platform will run
- on the virtual device. You can choose a version of the standard Android platform or the system
- image packaged with an SDK add-on.</li>
-
- <li>Other options: You can specify the emulator skin you want to use with the AVD, which lets
- you control the screen dimensions, appearance, and so on. You can also specify the emulated SD
- card to use with the AVD.</li>
-
- <li>A dedicated storage area on your development machine: the device's user data (installed
- applications, settings, and so on) and emulated SD card are stored in this area.</li>
- </ul>
-
- <p>You can create as many AVDs as you need, based on the types of device you want to model.
- To thoroughly test your application, you should create an AVD for each general device configuration
- (for example, different screen sizes and platform versions) with which your application is compatible
- and test your application on each one.</p>
-
- <p>Keep these points in mind when you are selecting a system image target for your AVD:</p>
-
- <ul>
- <li>The API Level of the target is important, because your application will not be able to run
- on a system image whose API Level is less than that required by your application, as specified
- in the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">
- <code>minSdkVersion</code></a> attribute of the application's manifest file. For more
- information about the relationship between system API Level and application
- <code>minSdkVersion</code>, see <a href=
- "{@docRoot}tools/publishing/versioning.html">Specifying Minimum System API Version</a>.</li>
-
- <li>You should create at least one AVD that uses a target whose API Level is greater than that required
- by your application, because it allows you to test the
- forward-compatibility of your application. Forward-compatibility testing ensures that, when
- users who have downloaded your application receive a system update, your application will
- continue to function normally.</li>
-
- <li>If your application declares a
- <a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><code>uses-library</code></a>
- element in its manifest file, the application can only run on a system image in which that external
- library is present. If you want to run your application on an emulator, create an AVD that
- includes the required library. Usually, you must create such an AVD using an Add-on component for the
- AVD's platform (for example, the Google APIs Add-on contains the Google Maps library).</li>
- </ul>
-
- <p>To learn how to manage AVDs using a graphical tool, read <a href=
- "{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD Manager</a>. To
- learn how to manage AVDs on the command line, read
- <a href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing AVDs
- from the Command Line</a>.</p>
-
-
-
-
-
-
diff --git a/docs/html/tools/devices/managing-avds-cmdline.jd b/docs/html/tools/devices/managing-avds-cmdline.jd
deleted file mode 100644
index c16b1f8..0000000
--- a/docs/html/tools/devices/managing-avds-cmdline.jd
+++ /dev/null
@@ -1,369 +0,0 @@
-page.title=Managing AVDs from the Command Line
-parent.title=Managing Virtual Devices
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#listingtargets">Listing Targets</a></li>
- <li><a href="#AVDCmdLine">Creating AVDs</a>
- <ol>
- <li><a href="#CustomDensity">Customize the device resolution or density</a></li>
- <li><a href="#DefaultLocation">Default location of AVD files</a></li>
- <li><a href="#hardwareopts">Setting hardware emulation options</a></li>
- </ol>
- </li>
- <li><a href="#moving">Moving an AVD</a></li>
- <li><a href="#updating">Updating an AVD</a></li>
- <li><a href="#deleting">Deleting an AVD</a></li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/building/building-cmdline.html">Building and Running
-from the Command Line</a></li>
- <li><a href="{@docRoot}tools/devices/emulator.html">Using the Android
-Emulator</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>The <code>android</code> tool lets you manage AVDs on the command line. For a complete reference
-of the command line options that you can use, see the reference for the
-<a href="{@docRoot}tools/help/android.html"><code>android</code></a> tool.</p>
-
-
-
-<h2 id="listingtargets">Listing Targets</h2>
-
-<p>To generate a list of system image targets, use this command: </p>
-
-<pre>android list targets</pre>
-
-<p>The <code>android</code> tool scans the <code><sdk>/platforms/</code> and
-<code><sdk>/add-ons/</code> directories looking for valid system images and
-then generates the list of targets. Here's an example of the command output:
-</p>
-
-<pre>Available Android targets:
-id: 1 or "android-3"
- Name: Android 1.5
- Type: Platform
- API level: 3
- Revision: 4
- Skins: QVGA-L, HVGA-L, HVGA (default), HVGA-P, QVGA-P
-id: 2 or "android-4"
- Name: Android 1.6
- Type: Platform
- API level: 4
- Revision: 3
- Skins: QVGA, HVGA (default), WVGA800, WVGA854
-id: 3 or "android-7"
- Name: Android 2.1-update1
- Type: Platform
- API level: 7
- Revision: 2
- Skins: QVGA, WQVGA400, HVGA (default), WVGA854, WQVGA432, WVGA800
-id: 4 or "android-8"
- Name: Android 2.2
- Type: Platform
- API level: 8
- Revision: 2
- Skins: WQVGA400, QVGA, WVGA854, HVGA (default), WVGA800, WQVGA432
-id: 5 or "android-9"
- Name: Android 2.3
- Type: Platform
- API level: 9
- Revision: 1
- Skins: HVGA (default), WVGA800, WQVGA432, QVGA, WVGA854, WQVGA400
-</pre>
-
-
-
-<h2 id="AVDCmdLine">Creating AVDs</h2>
-
-<p>In addition to creating AVDs with the
-<a href="{@docRoot}tools/help/avd-manager.html">AVD Manager user interface</a>,
-you can also create them by passing in command line arguments to the <code>android</code> tool.
-</p>
-
-<p>Open a terminal window and change to
-the <code><sdk>/tools/</code> directory, if needed.</p>
-
-<p>To create each AVD, you issue the command <code>android create avd</code>,
-with options that specify a name for the new AVD and the system image you want
-to run on the emulator when the AVD is invoked. You can specify other options on
-the command line also, such as the emulated SD card size, the emulator skin, or a custom
-location for the user data files.</p>
-
-<p>Here's the command-line usage for creating an AVD: </p>
-
-<pre>android create avd -n <name> -t <targetID> [-<option> <value>] ... </pre>
-
-<p>You can use any name you want for the AVD, but since you are likely to be
-creating multiple AVDs, you should choose a name that lets you recognize the
-general characteristics offered by the AVD. The target ID is an integer assigned by the
-<code>android</code> tool. The target ID is not derived from the system image name,
-version, or API Level, or other attribute, so you need to run the <code>android list targets</code>
-command to list the target ID of each system image. You should do this <em>before</em> you run
-the <code>android create avd</code> command. See the <a
-href="{@docRoot}tools/help/android.html">android</a>
-tool documentation for more information on the command line options.</p>
-
-
-<p>When you've selected the target you want to use and made a note of its ID,
-use the <code>android create avd</code> command to create the AVD, supplying the
-target ID as the <code>-t</code> argument. Here's an example that creates an
-AVD with name "my_android1.5" and target ID "2" (the standard Android 1.5
-system image in the list above): </p>
-
-<pre>android create avd -n my_android1.5 -t 2</pre>
-
-<p>If the target you selected was a standard Android system image ("Type:
-platform"), the <code>android</code> tool next asks you whether you want to
-create a custom hardware profile. </p>
-<pre>Android 1.5 is a basic Android platform.
-Do you wish to create a custom hardware profile [no]</pre>
-
-<p>If you want to set custom hardware emulation options for the AVD, enter
-"yes" and set values as needed. If you want to use the default hardware
-emulation options for the AVD, just press the return key (the default is "no").
-The <code>android</code> tool creates the AVD with name and system image mapping you
-requested, with the options you specified. For more information, see <a href="#hardwareopts">
-Setting Hardware Emulation Options</a>.
-
-<p class="note"><strong>Note:</strong> If you are creating an AVD whose target is an SDK add-on, the
-<code>android</code> tool does not allow you to set hardware emulation options.
-It assumes that the provider of the add-on has set emulation options
-appropriately for the device that the add-on is modeling, and so prevents you
-from resetting the options. </p>
-
-
-<h3 id="CustomDensity">Customize the device resolution or density</h3>
-
-<p>When testing your application, we recommend that you test your application in several different
-AVDs, using different screen configurations (different combinations of size and density). In
-addition, you should set up the AVDs to run at a physical size that closely matches an actual
-device.</p>
-
-<p>To set up your AVDs for a specific resolution or density, follow these steps:</p>
-
-<ol>
- <li>Use the <code>create avd</code> command to create a new AVD, specifying
-the <code>--skin</code> option with a value that references either a default
-skin name (such as "WVGA800") or a custom skin resolution (such as 240x432).
-Here's an example:
- <pre>android create avd -n <name> -t <targetID> --skin WVGA800</pre>
- </li>
- <li>To specify a custom density for the skin, answer "yes" when asked whether
-you want to create a custom hardware profile for the new AVD.</li>
- <li>Continue through the various profile settings until the tool asks you to
-specify "Abstracted LCD density" (<em>hw.lcd.density</em>). Enter an appropriate
-value, such as "120" for a low-density screen, "160" for a medium density screen,
-or "240" for a high-density screen.</li>
- <li>Set any other hardware options and complete the AVD creation.</li>
-</ol>
-
-<p>In the example above (WVGA medium density), the new AVD will emulate a 5.8"
-WVGA screen.</p>
-
-<p>As an alternative to adjusting the emulator skin configuration, you can use
-the emulator skin's default density and add the <code>-dpi-device</code> option
-to the <a href="{@docRoot}tools/help/emulator.html">emulator</a> command line when
-starting the AVD. For example:</p>
-
-<pre>emulator -avd WVGA800 -scale 96dpi -dpi-device 160</pre>
-
-
-
-<h3 id="DefaultLocation">Default location of AVD files</h3>
-
-<p>When you create an AVD, the <code>android</code> tool creates a dedicated directory for it
-on your development computer. The directory contains the AVD configuration file,
-the user data image and SD card image (if available), and any other files
-associated with the device. Note that the directory does not contain a system
-image — instead, the AVD configuration file contains a mapping to the
-system image, which it loads when the AVD is launched. </p>
-
-<p>The <code>android</code> tool also creates an <code><AVD_name>.ini</code> file for the AVD at the
-root of the <code>.android/avd/</code> directory on your computer. The file specifies the
-location of the AVD directory and always remains at the root the .android
-directory.</p>
-
-<p>By default, the <code>android</code> tool creates the AVD directory inside
-<code>~/.android/avd/</code> (on Linux/Mac), <code>C:\Documents and
-Settings\<user>\.android\</code> on Windows XP, and
-<code>C:\Users\<user>\.android\</code> on Windows 7 and Vista.
-If you want to use a custom location for the AVD directory, you
-can do so by using the <code>-p <path></code> option when
-you create the AVD: </p>
-
-<pre>android create avd -n my_android1.5 -t 2 -p path/to/my/avd</pre>
-
-<p>If the .android directory is hosted on a network drive, we recommend using
-the <code>-p</code> option to place the AVD directory in another location.
-The AVD's .ini file remains in the .android directory on the network
-drive, regardless of the location of the AVD directory.
-
-
-<h3 id="hardwareopts">Setting hardware emulation options</h3>
-
-<p>When you are creating a new AVD that uses a standard Android system image ("Type:
-platform"), the <code>android</code> tool lets you set hardware emulation
-options for virtual device. The table below lists the options available and the
-default values, as well as the names of properties that store the emulated
-hardware options in the AVD's configuration file (the config.ini file in the
-AVD's local directory). </p>
-
-<p class="table-caption"><strong>Table 1.</strong> Available hardware profile options for AVDs and
-the default values </p>
-
-<table>
-<tr>
-<th>Characteristic</th>
-<th>Description</th>
-<th>Property</th>
-</tr>
-
-<tr>
-<td>Device ram size</td>
-<td>The amount of physical RAM on the device, in megabytes. Default value is "96".
-<td>hw.ramSize</td>
-</tr>
-
-<tr>
-<td>Touch-screen support</td>
-<td>Whether there is a touch screen or not on the device. Default value is "yes".</td>
-<td>hw.touchScreen
-
-<tr>
-<td>Trackball support </td>
-<td>Whether there is a trackball on the device. Default value is "yes".</td>
-<td>hw.trackBall</td>
-</tr>
-
-<tr>
-<td>Keyboard support</td>
-<td>Whether the device has a QWERTY keyboard. Default value is "yes".</td>
-<td>hw.keyboard</td>
-</tr>
-
-<tr>
-<td>DPad support</td>
-<td>Whether the device has DPad keys. Default value is "yes".</td>
-<td>hw.dPad</td>
-</tr>
-
-<tr>
-<td>GSM modem support</td>
-<td>Whether there is a GSM modem in the device. Default value is "yes".</td>
-<td>hw.gsmModem</td>
-</tr>
-
-<tr>
-<td>Camera support</td>
-<td>Whether the device has a camera. Default value is "no".</td>
-<td>hw.camera</td>
-</tr>
-
-<tr>
-<td>Maximum horizontal camera pixels</td>
-<td>Default value is "640".</td>
-<td>hw.camera.maxHorizontalPixels</td>
-</tr>
-
-<tr>
-<td>Maximum vertical camera pixels</td>
-<td>Default value is "480".</td>
-<td>hw.camera.maxVerticalPixels</td>
-</tr>
-
-<tr>
-<td>GPS support</td>
-<td>Whether there is a GPS in the device. Default value is "yes".</td>
-<td>hw.gps</td>
-</tr>
-
-<tr>
-<td>Battery support</td>
-<td>Whether the device can run on a battery. Default value is "yes".</td>
-<td>hw.battery</td>
-</tr>
-
-<tr>
-<td>Accelerometer</td>
-<td>Whether there is an accelerometer in the device. Default value is "yes".</td>
-<td>hw.accelerometer</td>
-</tr>
-
-<tr>
-<td>Audio recording support</td>
-<td>Whether the device can record audio. Default value is "yes".</td>
-<td>hw.audioInput</td>
-</tr>
-
-<tr>
-<td>Audio playback support</td>
-<td>Whether the device can play audio. Default value is "yes".</td>
-<td>hw.audioOutput</td>
-</tr>
-
-<tr>
-<td>SD Card support</td>
-<td>Whether the device supports insertion/removal of virtual SD Cards. Default value is "yes".</td>
-<td>hw.sdCard</td>
-</tr>
-
-<tr>
-<td>Cache partition support</td>
-<td>Whether we use a /cache partition on the device. Default value is "yes".</td>
-<td>disk.cachePartition</td>
-</tr>
-
-<tr>
-<td>Cache partition size</td>
-<td>Default value is "66MB".</td>
-<td>disk.cachePartition.size </td>
-</tr>
-
-<tr>
-<td>Abstracted LCD density</td>
-<td>Sets the generalized density characteristic used by the AVD's screen. Default value is "160".</td>
-<td>hw.lcd.density </td>
-</tr>
-
-<tr>
-<td>Trackball support</td>
-<td>Whether there is a trackball present.</td>
-<td>hw.trackBall </td>
-</tr>
-</table>
-
-
-<h2 id="moving">Moving an AVD</h2>
-
-<p>If you want to move or rename an AVD, you can do so using this command:</p>
-
-<pre>android move avd -n <name> [-<option> <value>] ...</pre>
-
-<h2 id="updating">Updating an AVD</h2>
-
-<p>If, for any reason, the platform/add-on root folder has its name changed (maybe because the user has installed an update of the platform/add-on) then the AVD will not be able to load the system image that it is mapped to. In this case, the <code>android list targets</code> command will produce this output:
-
-<pre>The following Android Virtual Devices could not be loaded:
-Name: foo
-Path: <path>/.android/avd/foo.avd
-Error: Invalid value in image.sysdir. Run 'android update avd -n foo' </pre>
-
-<p>To fix this error, use the <code>android update avd</code> command to recompute the path to the system images.</p>
-
-<h2 id="deleting">Deleting an AVD</h2>
-
-<p>You can use the <code>android</code> tool to delete an AVD. Here is the command usage:</p>
-
-<pre>android delete avd -n <name> </pre>
-
-<p>When you issue the command, the <code>android</code> tool looks for an AVD matching the
-specified name deletes the AVD's directory and files. </p>
diff --git a/docs/html/tools/devices/managing-avds.jd b/docs/html/tools/devices/managing-avds.jd
deleted file mode 100644
index 8ba554e..0000000
--- a/docs/html/tools/devices/managing-avds.jd
+++ /dev/null
@@ -1,721 +0,0 @@
-page.title=Managing AVDs with the AVD Manager
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#viewing">Viewing and Managing Your AVDs</a></li>
- <li><a href="#createavd">Creating an AVD</a></li>
- <li><a href="#createhp">Creating a Hardware Profile</a></li>
- <li><a href="#workingavd">Working With Existing AVDs</a></li>
- <li><a href="#workinghp">Working With Existing Hardware Profiles</a>
- </li>
- <li><a href="#emulator">Running and Stopping an Emulator, and
- Clearing Data</li>
- <li><a href="#importexporthp">Importing and Exporting Hardware
- Profiles</li>
- <li><a href="#hpproperties">Hardware Profile Properties</a></li>
- <li><a href="#avdproperties">AVD Properties</a></li>
- <li><a href="#skins">Creating Emulator Skins</a></li>
- </ol>
- <h2>Dependencies and prerequisites</h2>
- <ul>
- <li>Android Studio 2.0 or higher</li>
- <li>SDK Tools 25.0.10 or higher</li>
- <li>Active network connection for certain operations, such as downloading
- system images</li>
- <li>adb integration enabled through <strong>Tools</strong> >
- <strong>Android</strong> >
- <strong>Enable ADB Integration</strong></li>
- </ul>
- </div>
- </div>
-
- <p>An Android Virtual Device (AVD) definition lets you define the
- characteristics of an Android phone, tablet, Android Wear, or Android TV
- device that you want to simulate in the
- <a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a>.
- The AVD Manager helps you easily create and manage AVDs. </p>
-
- <p>To effectively test your app, you should create an AVD that models each
- device type that your app is designed to support. For example, we recommend
- that you create an AVD for each API level that's equal to and higher than the
- minimum version you've specified in your manifest
- <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"
- style="white-space: nowrap;"
- >{@code <uses-sdk>}</a> tag.</p>
-
- <p>An AVD contains a hardware profile, system image, skin, and other
- properties.</p>
-
- <p>The hardware profile defines the characteristics of a device as
- shipped from the factory. The AVD Manager comes preloaded with certain
- hardware profiles, such as Nexus phone devices, and you can define and import
- hardware profiles as needed. You can override some of the settings in your
- AVD, if needed.</p>
-
- <p>The AVD Manager helps you choose a system image for your AVD by providing
- recommendations. It also lets
- you download system images, some with add-on libraries, like Google APIs,
- which your app might require. x86 system images run the fastest in the
- emulator. Android Wear and Android TV devices tend to run best (and have
- the largest installed base) on recent releases, while users of Android phones
- and tablets tend to use slightly older releases, as shown in the
- <a href="{@docRoot}about/dashboards/index.html">API level
- dashboards</a>.</p>
-
- <p>An emulator skin specifies the appearance of a device. The AVD Manager
- provides some predefined skins. You can also define your own, or use skins
- provided by third parties.</p>
-
- <p>Just as with a real device, for apps to use certains features defined in an
- AVD, such as the camera, it must have the corresponding
- <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a>
- setting in the app manifest.</p>
-
-<h2 id="viewing">Viewing and Managing Your AVDs</h2>
-
-<p>The AVD Manager lets you manage your AVDs all in one place.</p>
-
-<p>To run the AVD Manager:</p>
-
-<ul>
- <li> In Android Studio, select <strong>Tools</strong> >
- <strong>Android</strong> > <strong>AVD Manager</strong>.</li>
- <li> Click AVD Manager <img src="{@docRoot}images/tools/avd-manager-studio.png"
- style="vertical-align:sub;margin:0;height:17px" alt="AVD Manager icon">
- in the toolbar.</li>
-</ul>
-
-<p>The AVD Manager appears.</p>
-
-<img src="{@docRoot}images/tools/avd-main.png" alt="AVD Manager main window" />
-
-<p>It displays any AVDs you’ve already defined. When you first install
-Android Studio, it creates one AVD. If you defined AVDs for Android Emulator
-24.0.<em>x</em> or lower, you need to recreate them.</p>
-
-<p>From this page you can:</p>
-
-<ul>
- <li> Define a new <a href="#createavd">AVD</a> or
- <a href="#createhp">hardware profile</a>.</li>
- <li> Edit an existing <a href="#workingavd">AVD</a> or
- <a href="#workinghp">hardware profile</a>.</li>
- <li> Delete an <a href="#workingavd">AVD</a> or
- <a href="#workinghp">hardware profile</a>.</li>
- <li> <a href="#importexporthp">Import or export</a> hardware profile
- definitions.</li>
- <li> <a href="#emulator">Run</a> an AVD to start the emulator.</li>
- <li> <a href="#emulator">Stop</a> an emulator.</li>
- <li> <a href="#emulator">Clear</a> data and start fresh, from the same state
- as when you first ran the emulator.</li>
- <li> <a href="#workingavd">Show</a> the associated AVD <code>.ini</code> and
- <code>.img</code> files on disk.</li>
- <li> <a href="#workingavd">View</a> AVD configuration details that you can
- include in any bug
- reports to the Android Studio team.</li>
-</ul>
-
-
- <h2 id="createavd">Creating an AVD</h2>
-
- <p>You can <a href="#newavd">create a new AVD</a> from the beginning, or
- <a href="#copyavd">duplicate an AVD</a> and change some properties.</p>
-
- <p id="newavd">To create a new AVD:</p>
-
- <ol>
- <li id="selecthardwarepage">From the
- <a href="#viewing"><em>Your Virtual Devices</em></a> page of
- the AVD Manager, click <strong>Create Virtual Device</strong>.</li>
-
- <p>Alternatively,
- <a href="{@docRoot}training/basics/firstapp/running-app.html">run your
- app</a> from within Android Studio. In the <em>Select Deployment Target</em>
- dialog, click <strong>Create New Emulator</strong>.</p>
-
- <p>The <em>Select Hardware</em> page appears.</p>
- <img src="{@docRoot}images/tools/avd-hardwareprofile.png"
- alt="Hardware Profile page of the AVD Manager">
-
- <li>Select a hardware profile,
- and then click <strong>Next</strong>.</li>
-
- <p>If you don't see the hardware profile you want, you can
- <a href="#createhp">create</a>
- or <a href="#importexporthp">import</a> a hardware profile.</p>
-
- <p id="systemimagepage">The <em>System Image</em> page appears.</p>
- <img src="{@docRoot}images/tools/avd-systemimage.png"
- alt="System Image page of the AVD Manager">
-
- </li>
- <li>Select the system image for a particular API level, and then click
- <strong>Next</strong>.
- </li>
- <p>The <strong>Recommended</strong> tab lists recommended system images. The
- other tabs include a more complete list. The right pane describes the
- selected system image. x86 images run the fastest in the emulator.</p>
- <p>If you see <strong>Download</strong> next to the system image, you need
- to click it to download the system image. You must be connected to the
- internet to download it.</p>
-
- <p id="verifyconfigpage">The <em>Verify Configuration</em> page appears.</p>
- <img src="{@docRoot}images/tools/avd-verifyconfig.png"
- alt="Verify Configuration page of the AVD Manager">
-
- <li>Change <a href="#avdproperties">AVD properties</a> as needed,
- and then click <strong>Finish</strong>.
- <p>Click <strong>Show Advanced Settings</strong> to show more
- settings, such as the skin.</p>
- </li>
-
- <p>The new AVD appears in the <em>Your Virtual Devices</em> page or the
- <em>Select Deployment Target</em> dialog.</p>
-</ol>
-
-
- <p id="copyavd">To create an AVD starting with a copy:</p>
-
- <ol>
- <li>From the
- <a href="#viewing"><em>Your Virtual Devices</em></a> page of
- the AVD Manager, right-click an AVD and select
- <strong>Duplicate</strong>.</li>
-
- <p>Or click Menu
- <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
- style="vertical-align:sub;margin:0;height:17px">
- and select <strong>Duplicate</strong>.</p>
-
- <p>The <a href="#verifyconfigpage"><em>Verify Configuration</em></a>
- page appears.</p>
-
- <li>Click <strong>Change</strong> or <strong>Previous</strong> if you
- need to make changes on the
- <a href="#systemimagepage"><em>System Image</em></a> and
- <a href="#hardwareprofilepage"><em>Hardware Profile</em></a> pages.</li>
-
- <li>Make your changes, and then click <strong>Finish</strong>.</li>
-
- <p>The AVD appears in the <em>Your Virtual Devices</em> page.
-
-</ol>
-
-
-<h2 id="createhp">Creating a Hardware Profile</h2>
-
-<p>The AVD Manager provides predefined hardware profiles for common devices so
-you can easily add them to your AVD definitions. If
-you need to define a different device, you can create a new hardware profile.
-You can <a href="#newhp">define a new hardware profile</a> from the beginning,
-or <a href="#copyavd">copy a hardware profile</a> as a start. The preloaded
-hardware profiles aren't editable.</p>
-
-<p id="newhp">To create a new hardware profile from the beginning:</p>
-<ol>
- <li>In the <a href="#selecthardwarepage"><em>Select Hardware</em></a>
- page, click <strong>New Hardware Profile</strong>.</li>
-
- <li>In the <em>Configure Hardware Profile</em> page, change the
- <a href="#hpproperties">hardware profile properties</a> as
- needed.</li>
-
- <li>Click <strong>Finish</strong>.</li>
- <p>Your new hardware profile appears in the <em>Select Hardware</em> page.
- You can optionally <a href="#selecthardwarepage">create an AVD</a>
- that uses the hardware profile
- by clicking <strong>Next</strong>. Or, click <strong>Cancel</strong> to return
- to the <em>Your Virtual Devices</em> page or <em>Select Deployment Target</em>
- dialog.</p>
- </ol>
-
-<p id="copyhp">To create a hardware profile starting with a copy:</p>
-
- <ol>
- <li>In the <a href="#selecthardwarepage"><em>Select Hardware</em></a>
- page, select a hardware profile and click <strong>Clone Device</strong>.</li>
-
- <p>Or right-click a hardware profile and select <strong>Clone</strong>.</li>
-
- <li>In the <em>Configure Hardware Profile</em> page, change the
- <a href="#hpproperties">hardware profile properties</a> as
- needed.</li>
-
- <li>Click <strong>Finish</strong>.</li>
-
- <p>Your new hardware profile appears in the <em>Select Hardware</em> page.
- You can optionally <a href="#selecthardwarepage">create an AVD</a>
- that uses the hardware profile
- by clicking <strong>Next</strong>. Or, click <strong>Cancel</strong> to return
- to the <em>Your Virtual Devices</em> page or <em>Select Deployment Target</em>
- dialog.</p>
- </ol>
-
-
-<h2 id="workingavd">Working With Existing AVDs</h2>
-
- <p>From the <a href="#viewing"><em>Your Virtual Devices</em></a> page, you can
- perform the following operations on an existing AVD:</p>
- <ul>
- <li>To edit an AVD, click Edit
- <img src="{@docRoot}images/tools/studio-advmgr-actions-edit-icon.png"
- style="vertical-align:sub;margin:0;height:17px"> and
- <a href="#copyavd">make your changes</a>.</li>
- <li>To delete an AVD, right-click an AVD and select
- <strong>Delete</strong>. Or click Menu
- <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
- style="vertical-align:sub;margin:0;height:17px">
- and select <strong>Delete</strong>.</li>
- <li>To show the associated AVD <code>.ini</code> and
- <code>.img</code> files on disk, right-click an AVD and select
- <strong>Show on Disk</strong>. Or click Menu
- <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
- style="vertical-align:sub;margin:0;height:17px">
- and select <strong>Show on Disk</strong>.</li>
- <li> To view AVD configuration details that you can
- include in any bug reports to the Android Studio team, right-click an AVD and
- select <strong>View Details</strong>. Or click Menu
- <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
- style="vertical-align:sub;margin:0;height:17px">
- and select <strong>View Details</strong>.</li>
- </ul>
-
-
-<h2 id="workinghp">Working With Existing Hardware Profiles</h2>
-
-<p>From the <a href="#selecthardwarepage"><em>Select Hardware</em></a> page,
-you can
- perform the following operations on an existing hardware profile:</p>
- <ul>
- <li>To edit a hardware profile, select it and click
- <strong>Edit Device</strong>. Or right-click a hardware profile and select
- <strong>Edit</strong>. Next,
- <a href="#copyhp">make your changes</a>.</li>
-
- <li>To delete a hardware profile, right-click it and select
- <strong>Delete</strong>. </li>
- </ul>
- <p>You can't edit or delete the predefined hardware profiles.</p>
-
-<h2 id="emulator">Running and Stopping an Emulator, and Clearing Data</h2>
-
- <p>From the <a href="#viewing"><em>Your Virtual Devices</em></a> page, you can
- perform the following operations on an emulator:</p>
- <ul>
- <li>To run an emulator that uses an AVD, double-click the AVD. Or click Run
- <img src="{@docRoot}images/tools/as-avd-start.png"
- style="vertical-align:sub;margin:0;height:17px">.</li>
- <li>To stop a running emulator, right-click an AVD and select
- <strong>Stop</strong>. Or click Menu
- <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
- style="vertical-align:sub;margin:0;height:17px">
- and select <strong>Stop</strong>.</li>
- <li>To clear the data for an emulator, and return it to the same state as when
- it was first defined, right-click an AVD and select
- <strong>Wipe Data</strong>. Or click Menu
- <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
- style="vertical-align:sub;margin:0;height:17px">
- and select <strong>Wipe Data</strong>.</li>
- </ul>
-
-<h2 id="importexporthp">Importing and Exporting Hardware Profiles</h2>
-
-<p>From the <a href="#selecthardwarepage"><em>Select Hardware</em></a> page,
-you can import and export hardware profiles:</p>
- <ul>
- <li>To import a hardware profile, click
- <strong>Import Hardware Profiles</strong> and select the XML file containing
- the definition on your computer.</li>
-
- <li>To export a hardware profile, right-click it and select
- <strong>Export</strong>. Specify the location where you want to store the
- XML file containing the definition.</i>
- </ul>
-
-<h2 id="hpproperties">Hardware Profile Properties</h2>
-
-<p>You can specify the following properties of hardware profiles in the
-<a href="#createhp"><em>Configure Hardware Profile</em></a> page. AVD
-configuration properties override hardware profile properties, and emulator
-properties that you set while the emulator is running override them both.</p>
-
-<p>The predefined hardware profiles included with the AVD Manager aren't
-editable. However, you can copy them and edit the copies.</p>
-
-
-<table>
- <tr>
- <th scope="col">Hardware Profile Property</th>
- <th scope="col">Description</th>
- </tr>
- <tr>
- <td>Device Name</td>
- <td>Name of the hardware profile. The name can contain uppercase or
- lowercase letters,
- numbers from 0 to 9, periods (.), underscores (_), and parentheses ( () ).
- The name of the file storing the hardware profile is derived from the
- hardware profile name.
- </td>
- </tr>
- <tr>
- <td>Device Type</td>
- <td>Select one of the following:
-<ul>
- <li> Phone/Tablet
- <li> Android Wear
- <li> Android TV
-</ul>
-</td>
- </tr>
-
- <tr>
- <td>Screen Size </td>
- <td>The physical size of the screen, in inches, measured at the diagonal.
- If the size is larger than your computer screen, it’s reduced in size at
- launch.</td>
- </tr>
- <tr>
- <td>Screen Resolution</td>
- <td>Type a width and height in pixels to specify the total number of pixels
- on the simulated screen.</td>
-
- </tr>
- <tr>
- <td>Round</td>
- <td>Select this option if the device has a round screen, such as an
- Android Wear device. </td>
- </tr>
- <tr>
- <td>Memory: RAM</td>
- <td>Type a RAM size for the device and select the units, one of B (byte),
- KB (kilobyte), MB (megabyte), GB (gigabyte), or TB (terabyte).</td>
- </tr>
-
- <tr>
- <td>Input: Has Hardware Buttons (Back/Home/Menu)</td>
- <td>Select this option if your device has hardware navigation buttons.
- Deselect it if these buttons are implemented in software only. If you
- select this option, the buttons won’t appear on the screen. You can use the
- emulator side panel to “press” the buttons, in either case.</td>
- </tr>
- <tr>
- <td>Input: Has Hardware Keyboard</td>
- <td>Select this option if your device has a hardware keyboard. Deselect it
- if it doesn’t. If you select this option, a keyboard won’t appear on the
- screen. You can use your computer keyboard to send keystrokes to the
- emulator, in either case.</td>
- </tr>
- <tr>
- <td>Navigation Style</td>
- <td><p>Select one of the following:</p>
-<ul>
- <li> None - No hardware controls. Navigation is through the software.
- <li> D-pad - Directional Pad support.
- <li> Trackball
- <li> Wheel
-</ul>
- <p>These options are for actual hardware controls on the device itself.
- However,
- the events sent to the device by an external controller are the same.</p>
-</td>
- </tr>
- <tr>
- <td>Supported Device States</td>
- <td><p>Select one or both options:</p>
-<ul>
- <li> Portrait - Oriented taller than wide.
- <li> Landscape - Oriented wider than tall.
-</ul>
-<p>If you select both, you can switch between orientations in the emulator.
-You must select at least one option to continue.</p></td>
- </tr>
- <tr>
- <td>Cameras</td>
- <td><p>Select one or both options:</p>
-<ul>
- <li> Back-Facing Camera - The lens faces away from the user.
- <li> Front-Facing Camera - The lens faces toward the user.
-</ul>
-<p>Later, you can use a webcam or a photo provided by the emulator to simulate
-taking a photo with the camera.</td>
- </tr>
-
- <tr>
- <td>Sensors: Accelerometer</td>
- <td>Select if the device has hardware that helps the device determine
- its orientation.</td>
- </tr>
- <tr>
- <td>Sensors: Gyroscope</td>
- <td>Select if the device has hardware that detects rotation or twist.
- In combination with an
- accelerometer, it can provide smoother orientation detection and support
- a six-axis orientation system.</td>
- </tr>
- <tr>
- <td>Sensors: GPS</td>
- <td>Select if the device has hardware that supports the Global Positioning
- System (GPS)
- satellite-based navigation system.</td>
- </tr>
- <tr>
- <td>Sensors: Proximity Sensor</td>
- <td>Select if the device has hardware that detects if the device is close
- to your face during a
- phone call to disable input from the screen.</td>
- </tr>
- <tr>
- <td>Default Skin</td>
- <td>Select a skin that controls what the device looks like when displayed
- in the
- emulator. Remember that specifying a screen size that's too small for the
- resolution can mean that the screen is cut off, so you can't see the whole
- screen. See
- <a href="{@docRoot}tools/devices/managing-avds.html#skins">Creating Emulator Skins</a>
- for more information.</td>
- </tr>
-</table>
-
-<h2 id="avdproperties">AVD Properties</h2>
-
-<p>You can specify the following properties for AVD configurations
-in the <a href="#verifyconfigpage"><em>Verify Configuration</em></a> page.
-The AVD configuration specifies the interaction between the development
-computer and the emulator, as well as properties you want to override in the
-hardware profile.</p>
-
-<p>AVD configuration properties override hardware profile properties,
-and emulator
-properties that you set while the emulator is running override them both.</p>
-
-<table>
- <tr>
- <th scope="col">AVD Property</th>
- <th scope="col">Description</th>
- </tr>
- <tr>
- <td>AVD Name</td>
- <td>Name of the AVD. The name can contain uppercase or
- lowercase letters,
- numbers from 0 to 9, periods (.), underscores (_), and parentheses ( () ).
- The name of the file storing the AVD configuration is derived from the AVD
- name.
- </td>
- </tr>
- <tr>
- <td>AVD ID (Advanced)</td>
- <td>The AVD filename is derived from the ID, and you can use the ID to
- refer to the AVD from the command line.</td>
- </tr>
- <tr>
- <td>Hardware Profile</td>
- <td>Click <strong>Change</strong> to select a different hardware profile in
- the <a href="#selecthardwarepage"><em>Select Hardware</em></a> page.</td>
- </tr>
- <tr>
- <td>System Image</td>
- <td>Click <strong>Change</strong> to select a different system image in the
- <a href="#systemimagepage"><em>System Image</em></a> page.
- An active internet connection is required to download a new image. </td>
- </tr>
-
- <tr>
- <td>Startup: Scale </td>
- <td>Select the initial size you want to use when the emulator launches.
- This size might be adjusted to a smaller size if it’s larger than the
- computer screen. The default is Auto (automatic).</td>
- </tr>
- <tr>
- <td>Startup: Orientation</td>
- <td><p>Select one option for the initial emulator orientation:</p>
-<ul>
- <li> Portrait - Oriented taller than wide.
- <li> Landscape - Oriented wider than tall.
-</ul>
-<p>An option is enabled only if it’s selected in the hardware profile. When
-running the AVD in the emulator, you can change the orientation if portrait and
-landscape are supported in the hardware profile.</p></td>
- </tr>
- <tr>
- <td>Camera (Advanced)</td>
- <td><p>Select one or both options:</p>
-<ul>
- <li> Front - The lens faces away from the user.
- <li> Back - The lens faces toward the user.
-</ul>
-<p>This option is available only if it's selected in the hardware profile; it's
-not available for Android Wear and Android TV.</p></td>
- </tr>
-
- <tr>
- <td>Network: Speed (Advanced)</td>
- <td><p>Select a network protocol to determine the speed of data transfer:
- </p>
- <ul>
- <li>GSM - Global System for Mobile Communications</li>
-<li>HSCSD - High-Speed Circuit-Switched Data</li>
-<li>GPRS - Generic Packet Radio Service</li>
-<li>EDGE - Enhanced Data rates for GSM Evolution</li>
-<li>UMTS - Universal Mobile Telecommunications System</li>
-<li>HSPDA - High-Speed Downlink Packet Access</li>
-<li>Full (default) - Transfer data as quickly as your computer allows.</li>
-</ul>
-</td>
- </tr>
- <tr>
- <td>Network: Latency (Advanced)</td>
- <td>Select a network protocol to set how much time (delay) it takes for the
- protocol to transfer a data packet from one point to another point.</td>
- </tr>
-
- <tr>
- <td>Emulated Performance: Graphics</td>
- <td><p>Select how graphics are rendered in the emulator:</p>
- <ul>
- <li>Hardware - Use your computer graphics card for faster rendering.</li>
- <li>Software - Emulate the graphics in software, which is useful if you're
- having a problem with rendering in your graphics card.</li>
- <li>Auto - Let the emulator decide the best option based on your graphics
- card.</li>
- </td>
- </tr>
- <tr>
- <td>Multi-Core CPU (Advanced)</td>
- <td>Select the number of processor cores on your computer that you’d like
- to use for the emulator. Using more processor cores speeds up the emulator.
- </td>
- </tr>
-
- <tr>
- <td>Memory and Storage: RAM</td>
- <td>The amount of RAM on the device. This value is set by the hardware
- manufacturer, but you can override it, if needed, such as for faster
- emulator operation. Increasing the size uses more resources on your
- computer. Type a RAM size and select the
- units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
- TB (terabyte).</td>
- </tr>
- <tr>
- <td>Memory and Storage: VM Heap</td>
- <td>The VM heap size. This value is set by the hardware
- manufacturer, but you can override it, if needed. Type a heap size and
- select the
- units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
- TB (terabyte). For more information on Android VMs, see
- <a href="{@docRoot}tools/help/am-memory.html#vm">Memory Management for
- Different Virtual Machines</a>.</td>
- </tr>
- <tr>
- <td>Memory and Storage: Internal Storage</td>
- <td>The amount of nonremovable memory space available on the device. This
- value is set by the hardware
- manufacturer, but you can override it, if needed. Type a size and select the
- units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
- TB (terabyte).</td>
- </tr>
- <tr>
- <td>Memory and Storage: SD Card</td>
- <td>The amount of removable memory space available to store data on the
- device. To use a virtual SD card managed by Android Studio, select
- <strong>Studio</strong>, type a size, and select the
- units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
- TB (terabyte). A minimum of 100 MB is recommended to use the camera. To
- manage the space in a file, select <strong>External File</strong> and
- click <strong>...</strong> to specify the file and location. For more
- information, see <a href="{@docRoot}tools/help/mksdcard.html">mksdcard</a>.
- </td>
- </tr>
-
- <tr>
- <td>Device Frame: Enable Device Frame</td>
- <td>Select to enable a frame around the emulator window that mimics the
- look of a real device.</td>
- </tr>
- <tr>
- <td>Custom Skin Definition (Advanced)</td>
- <td>Select a skin that controls what the device looks like when displayed in
- the emulator. Remember that specifying a screen size that's too small for
- the resolution can mean that the screen is cut off, so you can't see the
- whole screen. See
- <a href="{@docRoot}tools/devices/managing-avds.html#skins">Creating Emulator Skins</a>
- for more information.</td>
- </tr>
- <tr>
- <td>Keyboard: Enable Keyboard Input (Advanced)</td>
- <td>Select this option if you want to use your hardware keyboard to interact
- with the emulator. It's disabled for Android Wear and Android TV.</td>
- </tr>
-</table>
-
-
-<h2 id="skins">Creating Emulator Skins</h2>
-
-<p>An Android emulator skin is a collection of files that define the visual
-and control elements of
-an emulator display. If the skin definitions available in the AVD settings
-don't meet your requirements,
-you can create your own custom skin definition, and then apply it to your AVD.
-</p>
-
-<p>Each emulator skin contains:</p>
- <ul>
- <li>A <code>hardware.ini</code> file</li>
- <li>Layout files for supported orientations (landscape, portrait) and
- physical configuration</li>
- <li>Image files for display elements, such as background, keys and
- buttons</li>
- </ul>
-<p>To create and use a custom skin:</p>
- <ol>
- <li>Create a new directory where you will save your skin configuration
- files. </li>
- <li>Define the visual appearance of the skin in a text file named
- <code>layout</code>. This file defines many characteristics of the skin,
- such as the
- size and image assets for specific buttons. For example:
-<pre class="no-prettyprint">
-parts {
- device {
- display {
- width 320
- height 480
- x 0
- y 0
- }
- }
-
- portrait {
- background {
- image background_port.png
- }
-
- buttons {
- power {
- image button_vertical.png
- x 1229
- y 616
- }
- }
- }
- ...
-}
-</pre></li>
-
- <li>Add the bitmap files of the device images in the same directory.</li>
- <li>Specify additional hardware-specific device configurations in a
- <code>hardware.ini</code>
- file for the device settings, such as <code>hw.keyboard</code> and
- <code>hw.lcd.density</code>.</li>
- <li>Archive the files in the skin folder and select the archive file as a
- custom skin.</li>
-</ol>
-
-<p>For more detailed information about creating emulator skins, see the
-<a href="https://android.googlesource.com/platform/external/qemu/+/emu-master-dev/docs/ANDROID-SKIN-FILES.TXT"
->Android Emulator Skin File Specification</a> in the tools source code.</p>
-
-
-
diff --git a/docs/html/tools/extras/index.jd b/docs/html/tools/extras/index.jd
deleted file mode 100644
index 8da26dc..0000000
--- a/docs/html/tools/extras/index.jd
+++ /dev/null
@@ -1,5 +0,0 @@
-page.title=Extras
-page.noplus=1
-@jd:body
-
-<p>SDK extras add functionality to your development environment. You can download all of the SDK extras into your development environment using the SDK Manager. </p>
diff --git a/docs/html/tools/extras/oem-usb.jd b/docs/html/tools/extras/oem-usb.jd
deleted file mode 100644
index cf15048..0000000
--- a/docs/html/tools/extras/oem-usb.jd
+++ /dev/null
@@ -1,405 +0,0 @@
-page.title=OEM USB Drivers
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#InstallingDriver">Installing a USB Driver</a>
- <ol>
- <li><a href="#Win7">Windows 7</a></li>
- <li><a href="#WinVista">Windows Vista</a></li>
- </ol>
- </li>
- <li><a href="#Drivers">OEM Drivers</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/device.html">Using Hardware Devices</a></li>
- <li><a href="{@docRoot}sdk/win-usb.html">Google USB Driver</a></li>
- </ol>
-</div>
-</div>
-
-<p>If you are developing on Windows and would like to connect an Android-powered device
-to test your applications, then you need to install the appropriate USB driver. This document
-provides links to the web sites for several original equipment manufacturers (OEMs),
-where you can download the appropriate USB driver for your device. However, this list is
-not exhaustive for all available Android-powered devices.</p>
-
-<p>If you're developing on Mac OS X or Linux, then you probably don't need to install a USB driver.
-To start developing with your device, read <a
-href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</p>
-
-<p>The Google USB Driver is <strong>required for Windows only</strong> in order to perform
-<a href="{@docRoot}tools/help/adb.html">adb</a> debugging with any of
-the <strong>Google Nexus devices</strong>. The one exception is the
-Galaxy Nexus: the driver for Galaxy Nexus is distributed by <a
-href="http://www.samsung.com/us/support/owners/product/GT-I9250TSGGEN">Samsung</a>
-(listed as model GT-I9250TSGGEN).</p>
-
-
-
-<h2 id="InstallingDriver">Installing a USB Driver</h2>
-
-<p>First, find the appropriate driver for your device from the <a href="#Drivers">OEM drivers</a>
-table below.</p>
-
-<p>Once you've downloaded your USB driver, follow the instructions below to install or upgrade the
-driver, based on your version of Windows and whether you're installing for the first time
-or upgrading an existing driver.</p>
-
-<p class="note"><strong>Tip:</strong> When you finish the USB driver installation,
-see <a
-href="{@docRoot}tools/device.html">Using Hardware Devices</a> for
-other important information about using an Android-powered device for
-development.</p>
-
-<ol class="nolist">
- <li><a href="#Win7">Windows 7</a></li>
- <li><a href="#WinVista">Windows Vista</a></li>
-</ol>
-
-
-<p class="caution"><strong>Caution:</strong>
-You may make changes to <code>android_winusb.inf</code> file found inside
-<code>usb_driver\</code> (for example, to add support for other devices),
-however, this will lead to security warnings when you install or upgrade the
-driver. Making any other changes to the driver files may break the installation
-process.</p>
-
-
-<h3 id="Win7">Windows 7</h3>
-
-
-<p>To install the Android USB driver on Windows 7 for the first time:</p>
-<ol>
- <li>Connect your Android-powered device to your computer's USB port.</li>
- <li>Right-click on <em>Computer</em> from your desktop or Windows Explorer,
- and select <strong>Manage</strong>.</li>
- <li>Select <strong>Devices</strong> in the left pane.</li>
- <li>Locate and expand <em>Other device</em> in the right pane.</li>
- <li>Right-click the device name (such as <em>Nexus S</em>) and select <strong>Update
- Driver Software</strong>.
- This will launch the Hardware Update Wizard.</li>
- <li>Select <strong>Browse my computer for driver software</strong> and click
- <strong>Next</strong>.</li>
- <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.)</li>
- <li>Click <strong>Next</strong> to install the driver.</li>
-</ol>
-
-<p>Or, to <em>upgrade</em> an existing Android USB driver on Windows 7 with the new
-driver:</p>
-
-<ol>
- <li>Connect your Android-powered device to your computer's USB port.</li>
- <li>Right-click on <em>Computer</em> from your desktop or Windows Explorer,
- and select <strong>Manage</strong>.</li>
- <li>Select <strong>Device Manager</strong> in the left pane of the Computer Management
- window.</li>
- <li>Locate and expand <em>Android Phone</em> in the right pane.</li>
- <li>Right-click on <em>Android Composite ADB Interface</em> and select <strong>Update
- Driver</strong>.
- This will launch the Hardware Update Wizard.</li>
- <li>Select <strong>Install from a list or specific location</strong> and click
- <strong>Next</strong>.</li>
- <li>Select <strong>Search for the best driver in these locations</strong>; un-check
-<strong>Search removable media</strong>; and check <strong>Include this location in the
-search</strong>.</li>
- <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.)</li>
- <li>Click <strong>Next</strong> to upgrade the driver.</li>
-</ol>
-
-
-
-<h3 id="WinVista">Windows Vista</h3>
-
-<p>To install the Android USB driver on Windows Vista for the first time:</p>
-
-<ol>
- <li>Connect your Android-powered device to your computer's USB port. Windows
- will detect the device and launch the Found New Hardware wizard.</li>
- <li>Select <strong>Locate and install driver software</strong>.</li>
- <li>Select <strong>Don't search online</strong>.</li>
- <li>Select <strong>I don't have the disk. Show me other options</strong>.</li>
- <li>Select <strong>Browse my computer for driver software</strong>.</li>
- <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.) As long as you specified the
-exact location of the
- installation package, you may leave <strong>Include subfolders</strong> checked or
- unchecked—it doesn't matter.</li>
- <li>Click <strong>Next</strong>. Vista may prompt you to confirm the privilege elevation
- required for driver installation. Confirm it.</li>
- <li>When Vista asks if you'd like to install the Google ADB Interface device,
- click <strong>Install</strong> to install the driver.</li>
-</ol>
-
-<p>Or, to <em>upgrade</em> an existing Android USB driver on Windows Vista with the new
-driver:</p>
-
-<ol>
- <li>Connect your Android-powered device to your computer's USB port.</li>
- <li>Right-click on <em>Computer</em> from your desktop or Windows Explorer,
- and select <strong>Manage</strong>.</li>
- <li>Select <strong>Device Manager</strong> in the left pane.</li>
- <li>Locate and expand <em>ADB Interface</em> in the right pane.</li>
- <li>Right-click on <em>Android Composite ADB Interface</em>, and select <strong>Update
- Driver Software</strong>.</li>
- <li>When Vista starts updating the driver, a prompt will ask how you want to
- search for the driver
- software. Select <strong>Browse my computer for driver software</strong>.</li>
- <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.) As long as you specified the
-exact location of the
- installation package, you may leave <strong>Include subfolders</strong> checked or
- unchecked—it doesn't matter.</li>
- <li>Click <strong>Next</strong>. Vista might prompt you to confirm the privilege elevation
- required for driver installation. Confirm it.</li>
- <li>When Vista asks if you'd like to install the Google ADB Interface device,
- click <strong>Install</strong> to upgrade the driver.</li>
-</ol>
-
-
-<h2 id="Drivers">OEM Drivers</h2>
-
-
-<table>
-<tr>
- <th>OEM</th>
- <th>Driver URL</th></tr>
- <tr>
- <td>
- Acer
- </td>
- <td>
- <a href=
- "http://www.acer.com/worldwide/support/mobile.html">http://www.acer.com/worldwide/support/mobile.html</a>
- </td>
- </tr>
-
- <tr>
- <td style="font-variant:small-caps">
- alcatel one touch
- </td>
- <td>
- <a href=
- "http://www.alcatelonetouch.com/global-en/support/">http://www.alcatelonetouch.com/global-en/support/</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Asus
- </td>
- <td>
- <a href="http://support.asus.com/download/">http://support.asus.com/download/</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Blackberry
- </td>
- <td>
- <a href=
- "https://swdownloads.blackberry.com/Downloads/entry.do?code=4EE0932F46276313B51570F46266A608">
- https://swdownloads.blackberry.com/Downloads/entry.do?code=4EE0932F46276313B51570F46266A608</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Dell
- </td>
- <td>
- <a href=
- "http://support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml">
- http://support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Fujitsu
- </td>
- <td>
- <a href=
- "http://www.fmworld.net/product/phone/sp/android/develop/">http://www.fmworld.net/product/phone/sp/android/develop/</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Hisense
- </td>
- <td>
- <a href=
- "http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&resourceId=16&type=5">
- http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&resourceId=16&type=5</a>
- </td>
- </tr>
-
- <tr>
- <td>
- HTC
- </td>
- <td>
- <a href="http://www.htc.com">http://www.htc.com</a><br>
- Click on the support tab to select your products/device. Different regions will have
- different links.
- </td>
- </tr>
-
- <tr>
- <td>
- Huawei
- </td>
- <td>
- <a href=
- "http://consumer.huawei.com/en/support/index.htm">http://consumer.huawei.com/en/support/index.htm</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Intel
- </td>
- <td>
- <a href="http://www.intel.com/software/android">http://www.intel.com/software/android</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Kyocera
- </td>
- <td>
- <a href=
- "http://www.kyocera-wireless.com/support/phone_drivers.htm">http://www.kyocera-wireless.com/support/phone_drivers.htm</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Lenovo
- </td>
- <td>
- <a href=
- "http://support.lenovo.com/us/en/GlobalProductSelector">http://support.lenovo.com/us/en/GlobalProductSelector</a>
- </td>
- </tr>
-
- <tr>
- <td>
- LGE
- </td>
- <td>
- <a href=
- "http://www.lg.com/us/support/software-firmware">http://www.lg.com/us/support/software-firmware</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Motorola
- </td>
- <td>
- <a href=
- "https://motorola-global-portal.custhelp.com/app/answers/detail/a_id/88481">https://motorola-global-portal.custhelp.com/app/answers/detail/a_id/88481/</a>
- </td>
- </tr>
-
- <tr>
- <td>
- MTK
- </td>
- <td>
- <a href=
- "http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip">http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip</a>
- (ZIP download)
- </td>
- </tr>
-
- <tr>
- <td>
- Oppo
- </td>
- <td>
- <a href=
- "http://www.oppo.com/index.php?q=software/view&sw_id=631">http://www.oppo.com/index.php?q=software/view&sw_id=631</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Pegatron
- </td>
- <td>
- <a href=
- "http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip">http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip</a>
- (ZIP download)
- </td>
- </tr>
-
- <tr>
- <td>
- Samsung
- </td>
- <td>
- <a href=
- "http://www.samsung.com/us/support/downloads">http://www.samsung.com/us/support/downloads</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Sharp
- </td>
- <td>
- <a href="http://k-tai.sharp.co.jp/support/">http://k-tai.sharp.co.jp/support/</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Sony Mobile Communications
- </td>
- <td>
- <a href=
- "http://developer.sonymobile.com/downloads/drivers/">http://developer.sonymobile.com/downloads/drivers/</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Toshiba
- </td>
- <td>
- <a href=
- "http://support.toshiba.com/sscontent?docId=4001814">http://support.toshiba.com/sscontent?docId=4001814</a>
- </td>
- </tr>
-
- <tr>
- <td>
- Xiaomi
- </td>
- <td>
- <a href=
- "http://www.xiaomi.com/c/driver/index.html">http://www.xiaomi.com/c/driver/index.html</a>
- </td>
- </tr>
-
- <tr>
- <td>
- ZTE
- </td>
- <td>
- <a href=
- "http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442">http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442</a>
- </td>
- </tr>
-</table>
\ No newline at end of file
diff --git a/docs/html/tools/help/MonkeyDevice.jd b/docs/html/tools/help/MonkeyDevice.jd
deleted file mode 100644
index e7612e6..0000000
--- a/docs/html/tools/help/MonkeyDevice.jd
+++ /dev/null
@@ -1,1355 +0,0 @@
-page.title=MonkeyDevice
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>
- A monkeyrunner class that represents a device or emulator accessible by the workstation running
-<code><a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a></code>.
-</p>
-<p>
- This class is used to control an Android device or emulator. The methods send UI events,
- retrieve information, install and remove applications, and run applications.
-</p>
-<p>
- You normally do not have to create an instance of <code>MonkeyDevice</code>. Instead, you
- use
-<code><a href="{@docRoot}tools/help/MonkeyRunner.html#waitForConnection">
-MonkeyRunner.waitForConnection()</a></code> to create a new object from a connection to a device or
-emulator. For example, instead of
-using:</p>
-<pre>
-newdevice = MonkeyDevice()
-</pre>
-<p>
- you would use:
-</p>
-<pre>
-newdevice = MonkeyRunner.waitForConnection()
-</pre>
-<h2>Summary</h2>
- <table id="constants" class="jd-sumtable" style="background-color: white;">
- <tr>
- <th colspan="12" style="background-color: #E2E2E2">Constants</th>
- </tr>
- <tr class="api" style="background-color: white;">
- <td class="jd-typecol"><em>string</em></td>
- <td class="jd-linkcol"><a href="#ACTION_DOWN">DOWN</a></td>
- <td class="jd-descrcol" width="100%">
- Use this with the <code>type</code> argument of
- <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
- </code>
- to send a DOWN event.
- </td>
- </tr>
- <tr class="api" style="background-color: white;">
- <td class="jd-typecol"><em>string</em></td>
- <td class="jd-linkcol"><a href="#ACTION_UP">UP</a></td>
- <td class="jd-descrcol" width="100%">
- Use this with the <code>type</code> argument of
- <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
- </code>
- to send an UP event.
- </td>
- </tr>
- <tr class="api" style="background-color: white;">
- <td class="jd-typecol"><em>string</em></td>
- <td class="jd-linkcol"><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></td>
- <td class="jd-descrcol" width="100%">
- Use this with the <code>type</code> argument of
- <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
- </code>
- to send a DOWN event immediately followed by an UP event.
- </td>
- </tr>
- </table>
-<table id="pubmethods" class="jd-sumtable">
- <tr>
- <th colspan="12" style="background-color: #E2E2E2">Methods</th>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#broadcastIntent">broadcastIntent</a>
- </span>
- (<em>string</em> uri,
- <em>string</em> action,
- <em>string</em> data,
- <em>string</em> mimetype,
- <em>iterable</em> categories
- <em>dictionary</em> extras,
- <em>component</em> component,
- <em>iterable</em> flags)
- </nobr>
- <div class="jd-descrdiv">
- Broadcasts an Intent to this device, as if the Intent were coming from an
- application.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#drag">drag</a>
- </span>
- (<em>tuple</em> start,
- <em>tuple</em> end,
- <em>float</em> duration,
- <em>integer</em> steps)
- </nobr>
- <div class="jd-descrdiv">
- Simulates a drag gesture (touch, hold, and move) on this device's screen.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>object</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#getProperty">getProperty</a>
- </span>
- (<em>string</em> key)
- </nobr>
- <div class="jd-descrdiv">
- Given the name of a system environment variable, returns its value for this device.
- The available variable names are listed in the <a href="#getProperty">
- detailed description</a> of this method.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>object</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#getSystemProperty">getSystemProperty</a>
- </span>
- (<em>string</em> key)
- </nobr>
- <div class="jd-descrdiv">
-. The API equivalent of <code>adb shell getprop <key>. This is provided for use
- by platform developers.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#installPackage">installPackage</a>
- </span>
- (<em>string</em> path)
- </nobr>
- <div class="jd-descrdiv">
- Installs the Android application or test package contained in packageFile onto this
- device. If the application or test package is already installed, it is replaced.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>dictionary</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#instrument">instrument</a>
- </span>
- (<em>string</em> className,
- <em>dictionary</em> args)
- </nobr>
- <div class="jd-descrdiv">
- Runs the specified component under Android instrumentation, and returns the results
- in a dictionary whose exact format is dictated by the component being run. The
- component must already be present on this device.
- </div>
- </td>
- </tr>
- <tr class="api">
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#press">press</a>
- </span>
- (<em>string</em> name,
- <em>dictionary</em> type)
- </nobr>
- <div class="jd-descrdiv">
- Sends the key event specified by type to the key specified by
- keycode.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#reboot">reboot</a>
- </span>
- (<em>string</em> into)
- </nobr>
- <div class="jd-descrdiv">
- Reboots this device into the bootloader specified by bootloadType.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#removePackage">removePackage</a>
- </span>
- (<em>string</em> package)
- </nobr>
- <div class="jd-descrdiv">
- Deletes the specified package from this device, including its data and cache.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>object</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#shell">shell</a>
- </span>
- (<em>string</em> cmd)
- </nobr>
- <div class="jd-descrdiv">
- Executes an <code>adb</code> shell command and returns the result, if any.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#startActivity">startActivity</a>
- </span>
- (<em>string</em> uri,
- <em>string</em> action,
- <em>string</em> data,
- <em>string</em> mimetype,
- <em>iterable</em> categories
- <em>dictionary</em> extras,
- <em>component</em> component,
- <em>flags</em>)
- </nobr>
- <div class="jd-descrdiv">
- Starts an Activity on this device by sending an Intent constructed from the
- supplied arguments.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <code>
- <a href="{@docRoot}tools/help/MonkeyImage.html">
- MonkeyImage
- </a>
- </code>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#takeSnapshot">takeSnapshot</a>()
- </span>
- </nobr>
- <div class="jd-descrdiv">
- Captures the entire screen buffer of this device, yielding a
- <code>
- <a href="{@docRoot}tools/help/MonkeyImage.html">
- MonkeyImage
- </a>
- </code> object containing a screen capture of the current display.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#touch">touch</a>
- </span>
- (<em>integer</em> x,
- <em>integer</em> y,
- <em>integer</em> type)
- </nobr>
- <div class="jd-descrdiv">
- Sends a touch event specified by type to the screen location specified
- by x and y.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#touch">type</a>
- </span>
- (<em>string</em> message)
- </nobr>
- <div class="jd-descrdiv">
- Sends the characters contained in message to this device, as if they
- had been typed on the device's keyboard. This is equivalent to calling
- <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
- using the key event type <code><a href="#ACTION_DOWN_AND_UP"></a>DOWN_AND_UP</code>.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#touch">wake</a>
- </span>
- ()
- </nobr>
- <div class="jd-descrdiv">
- Wakes the screen of this device.
- </div>
- </td>
- </tr>
-</table>
-<!-- ========= ENUM CONSTANTS DETAIL ======== -->
-<h2>Constants</h2>
-<A NAME="ACTION_DOWN"></a>
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>string</em>
- </span>
- DOWN
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- <code><a href="#press">press()</a></code> or
- <code><a href="#press">touch()</a></code> value.
- Specifies that a DOWN event type should be sent to the device, corresponding to
- pressing down on a key or touching the screen.
- </p>
- </div>
- </div>
-</div>
-<A NAME="ACTION_UP"></A>
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>string</em>
- </span>
- UP
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- <code><a href="#press">press()</a></code> or
- <code><a href="#press">touch()</a></code> value.
- Specifies that an UP event type should be sent to the device, corresponding to
- releasing a key or lifting up from the screen.
- </p>
- </div>
- </div>
-</div>
-<A NAME="ACTION_DOWN_AND_UP"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>string</em>
- </span>
- DOWN_AND_UP
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- <code><a href="#press">press()</a></code>,
- <code><a href="#press">touch()</a></code> or
- <code><a href="#type">type()</a></code> value.
- Specifies that a DOWN event type followed by an UP event type should be sent to the
- device, corresponding to typing a key or clicking the screen.
- </p>
- </div>
- </div>
-</div>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="broadcastIntent"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">broadcastIntent</span>
- <span class="normal">
- (
- <em>string</em> uri,
- <em>string</em> action,
- <em>string</em> data,
- <em>string</em> mimetype,
- <em>iterable</em> categories
- <em>dictionary</em> extras,
- <em>component</em> component,
- <em>iterable</em> flags)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Broadcasts an Intent to this device, as if the Intent were coming from an
- application. See {@link android.content.Intent Intent} for more information about the
- arguments.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>uri</th>
- <td>
- The URI for the Intent.
- (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
- </td>
- </tr>
- <tr>
- <th>action</th>
- <td>
- The action for this Intent
- (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
- </td>
- </tr>
- <tr>
- <th>data</th>
- <td>
- The data URI for this Intent
- (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
- </td>
- </tr>
- <tr>
- <th>mimetype</th>
- <td>
- The MIME type for the Intent
- (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
- </td>
- </tr>
- <tr>
- <th>categories</th>
- <td>
- An iterable data structure containing strings that define categories for this
- Intent
- (see
- {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
- </td>
- </tr>
- <tr>
- <th>extras</th>
- <td>
- A dictionary of extra data for this Intent
- (see {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
- Intent.putExtra()}
- for an example).
- <p>
- The key for each dictionary item should be a <em>string</em>. The item's value
- can be any simple or structured data type.
- </p>
- </td>
- </tr>
- <tr>
- <th>component</th>
- <td>
- The component for this Intent (see {@link android.content.ComponentName}).
- Using this argument will direct the Intent to a specific class within a specific
- Android package.
- </td>
- </tr>
- <tr>
- <th>flags</th>
- <td>
- An iterable data structure containing flags that control how the Intent is handled
- (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="drag"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">drag</span>
- <span class="normal">
- (
- <em>tuple</em> start,
- <em>tuple</em> end,
- <em>float</em> duration,
- <em>integer</em> steps)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Simulates a drag gesture (touch, hold, and move) on this device's screen.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>start</th>
- <td>
- The starting point of the drag gesture, in the form of a <em>tuple</em>
- (x,y) where x and y are <em>integers</em>.
- </td>
- </tr>
- <tr>
- <th>end</th>
- <td>
- The end point of the drag gesture, in the form of a <em>tuple</em> (x,y)
- where x and y are <em>integers</em>.
- </td>
- </tr>
- <tr>
- <th>duration</th>
- <td>The duration of the drag gesture in seconds. The default is 1.0 seconds.</td>
- </tr>
- <tr>
- <th>steps</th>
- <td>The number of steps to take when interpolating points. The default is 10.</td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="getProperty"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>object</em>
- </span>
- <span class="sympad">getProperty</span>
- <span class="normal">
- (<em>string</em> key)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Given the name of a system environment variable, returns its value for this device.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>key</th>
- <td>
- The name of the system environment variable. The available variable names are listed in
- <a href="#table1">Table 1. Property variable names</a> at the end of this topic.
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- The value of the variable. The data format varies according to the variable requested.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="getSystemProperty"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>object</em>
- </span>
- <span class="sympad">getSystemProperty</span>
- <span class="normal">
- (<em>string</em> key)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Synonym for <code><a href="#getProperty">getProperty()</a></code>.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>key</th>
- <td>
- The name of the system environment variable. The available variable names are listed in
- <a href="#table1">Table 1. Property Variable Names</a>.
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- The value of the variable. The data format varies according to the variable requested.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="installPackage"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">installPackage</span>
- <span class="normal">
- (<em>string</em> path)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Installs the Android application or test package contained in packageFile
- onto this device. If the application or test package is already installed, it is
- replaced.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>path</th>
- <td>
- The fully-qualified path and filename of the <code>.apk</code> file to install.
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="instrument"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>dictionary</em>
- </span>
- <span class="sympad">instrument</span>
- <span class="normal">
- (
- <em>string</em> className,
- <em>dictionary</em> args)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Runs the specified component with Android instrumentation, and returns the results
- in a dictionary whose exact format is dictated by the component being run. The
- component must already be present on this device.
- </p>
- <p>
- Use this method to start a test case that uses one of Android's test case classes.
- See <a href="{@docRoot}tools/testing/testing_android.html">Testing
- Fundamentals</a> to learn more about unit testing with the Android testing
- framework.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>className</th>
- <td>
- The name of an Android component that is already installed on this device, in the
- standard form packagename/classname, where packagename is the
- Android package name of a <code>.apk</code> file on this device, and
- classname is the class name of an Android component (Activity,
- ContentProvider, Service, or BroadcastReceiver) in that file. Both
- packagename and classname must be fully qualified. See
- {@link android.content.ComponentName} for more details.
- </td>
- </tr>
- <tr>
- <th>args</th>
- <td>
- A dictionary containing flags and their values. These are passed to the component as it
- is started. If the flag does not take a value, set its dictionary value to an empty
- string.
- </td>
- </tr>
- </table>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- <p>
- A dictionary containing the component's output. The contents of the dictionary
- are defined by the component itself.
- </p>
- <p>
- If you use {@link android.test.InstrumentationTestRunner} as the class name in
- the componentName argument, then the result dictionary contains
- the single key "stream". The value of "stream" is a <em>string</em> containing
- the test output, as if <code>InstrumentationTestRunner</code> was run from the
- command line. The format of this output is described in
- <a href="{@docRoot}tools/testing/testing_otheride.html">
- Testing in Other IDEs</a>.
- </p>
- </li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-<A NAME="press"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">press</span>
- <span class="normal">
- (<em>string</em> name,
- <em>integer</em> type)
- </span>
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Sends the key event specified by <code>type</code> to the key specified by
- <code>keycode</code>.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>name</th>
- <td>
- The name of the keycode to send. See {@link android.view.KeyEvent} for a list of
- keycode names. Use the keycode name, not its integer value.
- </td>
- </tr>
- <tr>
- <th>type</th>
- <td>
- The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
- DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
- <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="reboot"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">reboot</span>
- <span class="normal">
- (<em>string</em> bootloadType)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Reboots this device into the bootloader specified by <code>bootloadType</code>.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>into</th>
- <td>
- The type of bootloader to reboot into. The allowed values are
- "bootloader", "recovery", or "None".
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="removePackage"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">removePackage</span>
- <span class="normal">
- (<em>string</em> package)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Deletes the specified package from this device, including its data and cache.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>package</th>
- <td>
- The Android package name of an <code>.apk</code> file on this device.
- </td>
- </table>
- </div>
- </div>
-</div>
-<A NAME="shell"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>object</em>
- </span>
- <span class="sympad">shell</span>
- <span class="normal">
- (<em>string</em> cmd)
- </span>
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Executes an <code>adb</code> shell command and returns the result, if any.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>cmd</th>
- <td>
- The command to execute in the <code>adb</code> shell. The form of these commands is
- described in the topic <a href="{@docRoot}tools/help/adb.html">Android
- Debug Bridge</a>.
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- The results of the command, if any. The format of the results is determined by the
- command.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="startActivity"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">startActivity</span>
- <span class="normal">
- (
- <em>string</em> uri,
- <em>string</em> action,
- <em>string</em> data,
- <em>string</em> mimetype,
- <em>iterable</em> categories
- <em>dictionary</em> extras,
- <em>component</em> component,
- <em>iterable</em> flags)
- </span>
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Starts an Activity on this device by sending an Intent constructed from the
- supplied arguments.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>uri</th>
- <td>
- The URI for the Intent.
- (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
- </td>
- </tr>
- <tr>
- <th>action</th>
- <td>
- The action for the Intent
- (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
- </td>
- </tr>
- <tr>
- <th>data</th>
- <td>
- The data URI for the Intent
- (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
- </td>
- </tr>
- <tr>
- <th>mimetype</th>
- <td>
- The MIME type for the Intent
- (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
- </td>
- </tr>
- <tr>
- <th>categories</th>
- <td>
- An iterable data structure containing strings that define categories for the
- Intent
- (see
- {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
- </td>
- </tr>
- <tr>
- <th>extras</th>
- <td>
- A dictionary of extra data for the Intent
- (see
- {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
- Intent.putExtra()}
- for an example).
- <p>
- The key for each dictionary item should be a <em>string</em>. The item's value
- can be any simple or structured data type.
- </p>
- </td>
- </tr>
- <tr>
- <th>component</th>
- <td>
- The component for the Intent
- (see {@link android.content.ComponentName}). Using this argument will direct the
- Intent to a specific class within a specific Android package.
- </td>
- </tr>
- <tr>
- <th>flags</th>
- <td>
- An iterable data structure containing flags that control how the Intent is handled
- (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="takeSnapshot"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <code>
- <a href="{@docRoot}tools/help/MonkeyImage.html">
- MonkeyImage
- </a>
- </code>
- </span>
- <span class="sympad">takeSnapshot</span>
- <span class="normal">
- ()
- </span>
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Captures the entire screen buffer of this device, yielding a
- screen capture of the current display.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- A <a href="{@docRoot}tools/help/MonkeyImage.html">
- MonkeyImage</a> object containing the image of the current display.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="touch"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">touch</span>
- <span class="normal">
- (
- <em>integer</em> x,
- <em>integer</em> y,
- <em>string</em> type)
- </span>
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Sends a touch event specified by type to the screen location specified
- by x and y.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>x</th>
- <td>
- The horizontal position of the touch in actual device pixels, starting from the left of
- the screen in its current orientation.
- </td>
- </tr>
- <tr>
- <th>y</th>
- <td>
- The vertical position of the touch in actual device pixels, starting from the top of
- the screen in its current orientation.
- </td>
- </tr>
- <tr>
- <th>type</th>
- <td>
- The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
- DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
- <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="type"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">type</span>
- <span class="normal">
- (<em>string</em> message)
- </span>
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Sends the characters contained in message to this device, as if they
- had been typed on the device's keyboard. This is equivalent to calling
- <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
- using the key event type <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>message</th>
- <td>
- A string containing the characters to send.
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="wake"></A>
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">wake</span>
- <span class="normal">
- ()
- </span>
- </h4>
- <div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Wakes the screen of this device.
- </p>
- </div>
- </div>
-</div>
-<hr></hr>
-<h2>Appendix</h2>
- <p class="table-caption" id="table1">
- <strong>Table 1.</strong>Property variable names used with
- <span class="sympad"><a href="#getProperty">getProperty()</a></span> and
- <span class="sympad"><a href="#getSystemProperty">getSystemProperty()</a></span>.
- </p>
- <table>
- <tr>
- <th>
- Property Group
- </th>
- <th>
- Property
- </th>
- <th>
- Description
- </th>
- <th>
- Notes
- </th>
- </tr>
- <tr>
- <td rowspan="17"><code>build</code></td>
- <td><code>board</code></td>
- <td>Code name for the device's system board</td>
- <td rowspan="17">
- See {@link android.os.Build}
- </td>
- </tr>
- <tr>
- <td><code>brand</code></td>
- <td>The carrier or provider for which the OS is customized.</td>
- </tr>
- <tr>
- <td><code>device</code></td>
- <td>The device design name.</td>
- </tr>
- <tr>
- <td><code>fingerprint</code></td>
- <td>A unique identifier for the currently-running build.</td>
- </tr>
- <tr>
- <td><code>host</code></td>
- <td></td>
- </tr>
- <tr>
- <td><code>ID</code></td>
- <td>A changelist number or label.</td>
- </tr>
- <tr>
- <td><code>model</code></td>
- <td>The end-user-visible name for the device.</td>
- </tr>
- <tr>
- <td><code>product</code></td>
- <td>The overall product name.</td>
- </tr>
- <tr>
- <td><code>tags</code></td>
- <td>Comma-separated tags that describe the build, such as "unsigned" and "debug".</td>
- </tr>
- <tr>
- <td><code>type</code></td>
- <td>The build type, such as "user" or "eng".</td>
- </tr>
- <tr>
- <td><code>user</code></td>
- <td></td>
- </tr>
- <tr>
- <td><code>CPU_ABI</code></td>
- <td>
- The name of the native code instruction set, in the form CPU type plus
- ABI convention.
- </td>
- </tr>
- <tr>
- <td><code>manufacturer</code></td>
- <td>The product/hardware manufacturer.</td>
- </tr>
- <tr>
- <td><code>version.incremental</code></td>
- <td>
- The internal code used by the source control system to represent this version
- of the software.
- </td>
- </tr>
- <tr>
- <td><code>version.release</code></td>
- <td>The user-visible name of this version of the software.</td>
- </tr>
- <tr>
- <td><code>version.sdk</code></td>
- <td>The user-visible SDK version associated with this version of the OS.</td>
- </tr>
- <tr>
- <td><code>version.codename</code></td>
- <td>
- The current development codename, or "REL" if this version of the software has been
- released.
- </td>
- </tr>
- <tr>
- <td rowspan="3"><code>display</code></td>
- <td><code>width</code></td>
- <td>The device's display width in pixels.</td>
- <td rowspan="3">
- See
- {@link android.util.DisplayMetrics} for details.
- </td>
- </tr>
- <tr>
- <td><code>height</code></td>
- <td>The device's display height in pixels.</td>
- </tr>
- <tr>
- <td><code>density</code></td>
- <td>
- The logical density of the display. This is a factor that scales
- DIP (Density-Independent Pixel) units to the device's resolution. DIP is adjusted so
- that 1 DIP is equivalent to one pixel on a 160 pixel-per-inch display. For example,
- on a 160-dpi screen, density = 1.0, while on a 120-dpi screen, density = .75.
- <p>
- The value does not exactly follow the real screen size, but is adjusted to
- conform to large changes in the display DPI. See
- {@link android.util.DisplayMetrics#density} for more details.
- </p>
- </td>
- </tr>
- <tr>
- <td rowspan="6"><code>am.current</code></td>
- <td><code>package</code></td>
- <td>The Android package name of the currently running package.</td>
- <td rowspan="6">
- The <code>am.current</code> keys return information about the currently-running
- Activity.
- </td>
- </tr>
- <tr>
- <td><code>action</code></td>
- <td>
- The current activity's action. This has the same format as the <code>name</code>
- attribute of the <code>action</code> element in a package manifest.
- </td>
- </tr>
- <tr>
- <td><code>comp.class</code></td>
- <td>
- The class name of the component that started the current Activity. See
- <code><a href="#comppackage">comp.package</a></code> for more details.</td>
- </tr>
- <tr>
- <td><a name="comppackage"><code>comp.package</code></a></td>
- <td>
- The package name of the component that started the current Activity. A component
- is specified by a package name and the name of class that the package contains.
- </td>
- </tr>
- <tr>
- <td><code>data</code></td>
- <td>The data (if any) contained in the Intent that started the current Activity.</td>
- </tr>
- <tr>
- <td><code>categories</code></td>
- <td>The categories specified by the Intent that started the current Activity.</td>
- </tr>
- <tr>
- <td rowspan="3"><code>clock</code></td>
- <td><code>realtime</code></td>
- <td>
- The number of milliseconds since the device rebooted, including deep-sleep
- time.
- </td>
- <td rowspan="3">
- See {@link android.os.SystemClock} for more information.
- </td>
- </tr>
- <tr>
- <td><code>uptime</code></td>
- <td>
- The number of milliseconds since the device rebooted, <em>not</em> including
- deep-sleep time
- </td>
- </tr>
- <tr>
- <td><code>millis</code></td>
- <td>current time since the UNIX epoch, in milliseconds.</td>
- </tr>
- </table>
diff --git a/docs/html/tools/help/MonkeyImage.jd b/docs/html/tools/help/MonkeyImage.jd
deleted file mode 100644
index 79f4948..0000000
--- a/docs/html/tools/help/MonkeyImage.jd
+++ /dev/null
@@ -1,437 +0,0 @@
-page.title=MonkeyImage
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<p>
- A monkeyrunner class to hold an image of the device or emulator's screen. The image is
- copied from the screen buffer during a screenshot. This object's methods allow you to
- convert the image into various storage formats, write the image to a file, copy parts of
- the image, and compare this object to other <code>MonkeyImage</code> objects.
-</p>
-<p>
- You do not need to create new instances of <code>MonkeyImage</code>. Instead, use
-<code><a href="{@docRoot}tools/help/MonkeyDevice.html#takeSnapshot">
-MonkeyDevice.takeSnapshot()</a></code> to create a new instance from a screenshot. For example, use:
-</p>
-<pre>
-newimage = MonkeyDevice.takeSnapshot()
-</pre>
-<h2>Summary</h2>
-<table id="pubmethods" class="jd-sumtable">
- <tr>
- <th colspan="12" style="background-color: #E2E2E2">Methods</th>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>string</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#convertToBytes">convertToBytes</a>
- </span>
- (<em>string</em> format)
- </nobr>
- <div class="jd-descrdiv">
- Converts the current image to a particular format and returns it as a
- <em>string</em> that you can then access as an <em>iterable</em> of binary bytes.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>tuple</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#getRawPixel">getRawPixel</a>
- </span>
- (<em>integer</em> x,
- <em>integer</em> y)
- </nobr>
- <div class="jd-descrdiv">
- Returns the single pixel at the image location (x,y), as an
- a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>integer</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#getRawPixelInt">getRawPixelInt</a>
- </span>
- (<em>integer</em> x,
- <em>integer</em> y)
- </nobr>
- <div class="jd-descrdiv">
- Returns the single pixel at the image location (x,y), as
- a 32-bit <em>integer</em>.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <code>
- <a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a>
- </code>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#getSubImage">getSubImage</a>
- </span>
- (<em>tuple</em> rect)
- </nobr>
- <div class="jd-descrdiv">
- Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
- current image.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>boolean</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#sameAs">sameAs</a>
- </span>
- (<code><a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a></code>
- other,
- <em>float</em> percent)
- </nobr>
- <div class="jd-descrdiv">
- Compares this <code>MonkeyImage</code> object to another and returns the result of
- the comparison. The <code>percent</code> argument specifies the percentage
- difference that is allowed for the two images to be "equal".
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>void</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#writeToFile">writeToFile</a>
- </span>
- (<em>string</em> path,
- <em>string</em> format)
- </nobr>
- <div class="jd-descrdiv">
- Writes the current image to the file specified by <code>filename</code>, in the
- format specified by <code>format</code>.
- </div>
- </td>
- </tr>
-</table>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="convertToBytes"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>string</em>
- </span>
- <span class="sympad">convertToBytes</span>
- <span class="normal">
- (
- <em>string</em> format)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Converts the current image to a particular format and returns it as a <em>string</em>
- that you can then access as an <em>iterable</em> of binary bytes.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>format</th>
- <td>
- The desired output format. All of the common raster output formats are supported.
- The default value is "png" (Portable Network Graphics).
- </td>
- </tr>
- </table>
- </div>
-</div>
-</div>
-<A NAME="getRawPixel"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>tuple</em>
- </span>
- <span class="sympad">getRawPixel</span>
- <span class="normal">
- (<em>integer</em> x,
- <em>integer</em> y)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Returns the single pixel at the image location (x,y), as an
- a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>x</th>
- <td>
- The horizontal position of the pixel, starting with 0 at the left of the screen in the
- orientation it had when the screenshot was taken.
- </td>
- </tr>
- <tr>
- <th>y</th>
- <td>
- The vertical position of the pixel, starting with 0 at the top of the screen in the
- orientation it had when the screenshot was taken.
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- A tuple of integers representing the pixel, in the form (a,r,g,b) where
- a is the alpha channel value, and r, g, and b are the red, green, and blue values,
- respectively.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="getRawPixelInt"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>tuple</em>
- </span>
- <span class="sympad">getRawPixelInt</span>
- <span class="normal">
- (<em>integer</em> x,
- <em>integer</em> y)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Returns the single pixel at the image location (x,y), as an
- an <em>integer</em>. Use this method to economize on memory.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>x</th>
- <td>
- The horizontal position of the pixel, starting with 0 at the left of the screen in the
- orientation it had when the screenshot was taken.
- </td>
- </tr>
- <tr>
- <th>y</th>
- <td>
- The vertical position of the pixel, starting with 0 at the top of the screen in the
- orientation it had when the screenshot was taken.
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- The a,r,g, and b values of the pixel as 8-bit values combined into a 32-bit
- integer, with a as the leftmost 8 bits, r the next rightmost, and so forth.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="getSubImage"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <code>
- <a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a>
- </code>
- </span>
- <span class="sympad">getSubImage</span>
- <span class="normal">
- (<em>tuple</em> rect)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
- current image.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>rect</th>
- <td>
- A tuple (x, y, w, h) specifying the selection. x and y specify the 0-based pixel
- position of the upper left-hand corner of the selection. w specifies the width of the
- region, and h specifies its height, both in units of pixels.
- <p>
- The image's orientation is the same as the screen orientation at the time the
- screenshot was made.
- </p>
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- A new <code>MonkeyImage</code> object containing the selection.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="sameAs"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>boolean</em>
- </span>
- <span class="sympad">sameAs</span>
- <span class="normal">
- (
- <code>
- <a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a>
- </code> otherImage,
- <em>float</em> percent
- )
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Compares this <code>MonkeyImage</code> object to another and returns the result of
- the comparison. The <code>percent</code> argument specifies the percentage
- difference that is allowed for the two images to be "equal".
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>other</th>
- <td>
- Another <code>MonkeyImage</code> object to compare to this one.
- </td>
- </tr>
- <tr>
- <th>
- percent
- </th>
- <td>
- A float in the range 0.0 to 1.0, inclusive, indicating
- the percentage of pixels that need to be the same for the method to return
- <code>true</code>. The default is 1.0, indicating that all the pixels
- must match.
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- Boolean <code>true</code> if the images match, or boolean <code>false</code> otherwise.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="writeToFile"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">writeToFile</span>
- <span class="normal">
- (<em>string</em> filename,
- <em>string</em> format)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Writes the current image to the file specified by <code>filename</code>, in the
- format specified by <code>format</code>.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>path</th>
- <td>
- The fully-qualified filename and extension of the output file.
- </td>
- </tr>
- <tr>
- <th>
- format
- </th>
- <td>
- The output format to use for the file. If no format is provided, then the
- method tries to guess the format from the filename's extension. If no
- extension is provided and no format is specified, then the default format of
- "png" (Portable Network Graphics) is used.
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
diff --git a/docs/html/tools/help/MonkeyRunner.jd b/docs/html/tools/help/MonkeyRunner.jd
deleted file mode 100644
index a924d2d..0000000
--- a/docs/html/tools/help/MonkeyRunner.jd
+++ /dev/null
@@ -1,448 +0,0 @@
-page.title=MonkeyRunner
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>
- A monkeyrunner class that contains static utility methods.
-</p>
-<h2>Summary</h2>
-<table id="pubmethods" class="jd-sumtable">
- <tr>
- <th colspan="12" style="background-color: #E2E2E2">Methods</th>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#alert">alert</a>
- </span>
- (<em>string</em> message,
- <em>string</em> title,
- <em>string</em> okTitle)
- </nobr>
- <div class="jd-descrdiv">
- Displays an alert dialog to the process running the current
- program.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>integer</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#choice">choice</a>
- </span>
- (<em>string</em> message,
- <em>iterable</em> choices,
- <em>string</em> title)
- </nobr>
- <div class="jd-descrdiv">
- Displays a dialog with a list of choices to the process running the current program.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#help">help</a>
- </span>
- (<em>string</em> format)
- </nobr>
- <div class="jd-descrdiv">
- Displays the monkeyrunner API reference in a style similar to that of Python's
- <code>pydoc</code> tool, using the specified format.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <em>string</em>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#input">input</a>
- </span>
- (<em>string</em> message,
- <em>string</em> initialValue,
- <em>string</em> title,
- <em>string</em> okTitle,
- <em>string</em> cancelTitle)
- </nobr>
- <div class="jd-descrdiv">
- Displays a dialog that accepts input.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- void
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#sleep">sleep</a>
- </span>
- (<em>float</em> seconds)
- </nobr>
- <div class="jd-descrdiv">
- Pauses the current program for the specified number of seconds.
- </div>
- </td>
- </tr>
- <tr class="api" >
- <td class="jd-typecol">
- <nobr>
- <code>
- <a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a>
- </code>
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%">
- <nobr>
- <span class="sympad">
- <a href="#waitForConnection">waitForConnection</a>
- </span>
- (<em>float</em> timeout,
- <em>string</em> deviceId)
- </nobr>
- <div class="jd-descrdiv">
- Tries to make a connection between the <code>monkeyrunner</code> backend and the
- specified device or emulator.
- </div>
- </td>
- </tr>
-</table>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="alert"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>string</em>
- </span>
- <span class="sympad">alert</span>
- <span class="normal">
- (
- <em>string</em> message,
- <em>string</em> title,
- <em>string</em> okTitle)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Displays an alert dialog to the process running the current
- program. The dialog is modal, so the program pauses until the user clicks the dialog's
- button.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>message</th>
- <td>
- The message to display in the dialog.
- </td>
- </tr>
- <tr>
- <th>title</th>
- <td>
- The dialog's title. The default value is "Alert".
- </td>
- </tr>
- <tr>
- <th>okTitle</th>
- <td>
- The text displayed in the dialog button. The default value is "OK".
- </td>
- </tr>
- </table>
- </div>
-</div>
-</div>
-<A NAME="choice"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>integer</em>
- </span>
- <span class="sympad">choice</span>
- <span class="normal">
- (<em>string</em> message,
- <em>iterable</em> choices,
- <em>string</em> title)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Displays a dialog with a list of choices to the process running the current program. The
- dialog is modal, so the program pauses until the user clicks one of the dialog's
- buttons.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>message</th>
- <td>
- The prompt message displayed in the dialog.
- </td>
- </tr>
- <tr>
- <th>choices</th>
- <td>
- A Python iterable containing one or more objects that are displayed as strings. The
- recommended form is an array of strings.
- </td>
- </tr>
- <tr>
- <th>
- title
- </th>
- <td>
- The dialog's title. The default is "Input".
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- If the user makes a selection and clicks the "OK" button, the method returns
- the 0-based index of the selection within the iterable.
- If the user clicks the "Cancel" button, the method returns -1.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="help"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">help</span>
- <span class="normal">
- (<em>string</em> format)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Displays the monkeyrunner API reference in a style similar to that of Python's
- <code>pydoc</code> tool, using the specified format.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>format</th>
- <td>
- The markup format to use in the output. The possible values are "text" for plain text
- or "html" for HTML.
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="input"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <em>string</em>
- </span>
- <span class="sympad">input</span>
- <span class="normal">
- (<em>string</em> message
- <em>string</em> initialValue,
- <em>string</em> title,
- <em>string</em> okTitle,
- <em>string</em> cancelTitle)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Displays a dialog that accepts input and returns it to the program. The dialog is
- modal, so the program pauses until the user clicks one of the dialog's buttons.
- </p>
- <p>
- The dialog contains two buttons, one of which displays the okTitle value
- and the other the cancelTitle value. If the user clicks the okTitle button,
- the current value of the input box is returned. If the user clicks the cancelTitle
- button, an empty string is returned.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>message</th>
- <td>
- The prompt message displayed in the dialog.
- </td>
- </tr>
- <tr>
- <th>initialValue</th>
- <td>
- The initial value to display in the dialog. The default is an empty string.
- </td>
- </tr>
- <tr>
- <th>title</th>
- <td>
- The dialog's title. The default is "Input".
- </td>
- </tr>
- <tr>
- <th>okTitle</th>
- <td>
- The text displayed in the okTitle button. The default is "OK".
- </td>
- </tr>
- <tr>
- <th>cancelTitle</th>
- <td>
- The text displayed in the cancelTitle button. The default is "Cancel".
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- If the user clicks the okTitle button, then the method returns the current value of
- the dialog's input box. If the user clicks the cancelTitle button, the method returns
- an empty string.
- </li>
- </ul>
- </div>
- </div>
-</div>
-<A NAME="sleep"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- void
- </span>
- <span class="sympad">sleep</span>
- <span class="normal">
- (
- <em>float</em> seconds
- )
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Pauses the current program for the specified number of seconds.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>seconds</th>
- <td>
- The number of seconds to pause.
- </td>
- </tr>
- </table>
- </div>
- </div>
-</div>
-<A NAME="waitForConnection"></A>
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- <code>
- <a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a>
- </code>
- </span>
- <span class="sympad">waitForConnection</span>
- <span class="normal">
- (<em>float</em> timeout,
- <em>string</em> deviceId)
- </span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr">
- <p>
- Tries to make a connection between the <code>monkeyrunner</code> backend and the
- specified device or emulator.
- </p>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Arguments</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</th>
- <td>
- The number of seconds to wait for a connection. The default is to wait forever.
- </td>
- </tr>
- <tr>
- <th>
- deviceId
- </th>
- <td>
- A regular expression that specifies the serial number of the device or emulator. See
- the topic
- <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
- for a description of device and emulator serial numbers.
- </td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist">
- <li>
- A <code><a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a></code>
- instance for the device or emulator. Use this object to control and communicate with the
- device or emulator.
- </li>
- </ul>
- </div>
- </div>
-</div>
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
deleted file mode 100755
index 0340efe..0000000
--- a/docs/html/tools/help/adb.jd
+++ /dev/null
@@ -1,501 +0,0 @@
-page.title=Android Debug Bridge
-parent.title=Tools
-parent.link=index.html
-page.tags=adb
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#Enabling">Enabling adb Debugging</a></li>
- <li><a href="#issuingcommands">Syntax</a></li>
- <li><a href="#commandsummary">Commands</a></li>
- <li><a href="#devicestatus">Querying for Emulator/Device Instances</a></li>
- <li><a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a></li>
- <li><a href="#move">Installing an Application</a></li>
- <li><a href="#forwardports">Forwarding Ports</a></li>
- <li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
- <li><a href="#stopping">Stopping the adb Server</a></li>
- <li><a href="#wireless">Wireless usage</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an
-emulator instance or connected Android-powered device. It is a client-server program that includes
-three components: </p>
-
-<ul>
- <li>A client, which runs on your development machine. You can invoke a client from a shell
-by issuing an adb command. Other Android tools such as DDMS also create
-adb clients. </li>
- <li>A server, which runs as a background process on your development machine. The server
-manages communication between the client and the adb daemon running on an emulator or device. </li>
- <li>A daemon, which runs as a background process on each emulator or device instance. </li>
-</ul>
-
-<p>You can find the {@code adb} tool in {@code <sdk>/platform-tools/}.</p>
-
-<p>When you start an adb client, the client first checks whether there is an adb server
-process already running. If there isn't, it starts the server process. When the server starts,
-it binds to local TCP port 5037 and listens for commands sent from adb clients—all adb
-clients use port 5037 to communicate with the adb server. </p>
-
-<p>The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5555 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports — an even-numbered port for console connections and an odd-numbered port for adb connections. For example: </p>
-
-<p style="margin-left:2em">
-Emulator 1, console: 5554<br/>
-Emulator 1, adb: 5555<br>
-Emulator 2, console: 5556<br>
-Emulator 2, adb: 5557<br>
-and so on...
-</p>
-
-<p>As shown, the emulator instance connected to adb on port 5555 is the same as the instance
-whose console listens on port 5554. </p>
-
-<p>Once the server has set up connections to all emulator instances, you can use adb commands to
-access those instances. Because the server manages connections to emulator/device
-instances and handles commands from multiple adb clients, you can control any emulator/device
-instance from any client (or from a script).</p>
-
-
-<h2 id="Enabling">Enabling adb Debugging</h2>
-
-<p>In order to use adb with a device connected over USB, you must enable
-<strong>USB debugging</strong> in the device system settings, under <strong>
-Developer options</strong>.</p>
-
-<p>On Android 4.2 and higher, the Developer options screen is
-hidden by default. To make it visible, go to
-<b>Settings > About phone</b> and tap <b>Build number</b> seven times. Return to the previous
-screen to find <strong>Developer options</strong> at the bottom.</p>
-
-<p>On some devices, the Developer options screen may be located or named differently.</p>
-
-<p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher
-to your computer, the system shows a dialog asking whether to accept an RSA key that allows
-debugging through this computer. This security mechanism protects user devices because it ensures
-that USB debugging and other adb commands cannot be executed unless you're able to unlock the
-device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with
-SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or
-higher.</p>
-
-<p>For more information about connecting to a device over USB, read
-<a href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</p>
-
-
-
-
-<h2 id="issuingcommands">Syntax</h2>
-
-<p>You can issue adb commands from a command line on your development machine or from a script.
-The usage is: </p>
-
-<pre class="no-pretty-print">
-adb [-d|-e|-s <serialNumber>] <command>
-</pre>
-
-<p>If there's only one emulator running or only one device connected, the adb command is
-sent to that device by default. If multiple emulators are running and/or multiple devices are
-attached, you need to use the <code>-d</code>, <code>-e</code>, or <code>-s</code>
-option to specify the target device to which the command should be directed. </p>
-
-
-
-<h2 id="commandsummary">Commands</h2>
-
-<p>The table below lists all of the supported adb commands and explains their meaning and usage. </p>
-
-<p class="table-caption"><strong>Table 1.</strong> Available adb commands</p>
-<table>
-<tr>
- <th>Category</th>
- <th>Command</th>
- <th>Description</th>
- <th>Comments</th>
-</tr>
-
-<tr>
-<td rowspan="3">Target Device</td>
-<td><code>-d</code></td>
-<td>Direct an adb command to the only attached USB device.</td>
-<td>Returns an error if more than one USB device is attached.</td>
-</tr>
-
-<tr>
-<td><code>-e</code></td>
-<td>Direct an adb command to the only running emulator instance.</td>
-<td>Returns an error if more than one emulator instance is running. </td>
-</tr>
-
-<tr>
-<td><code>-s <serialNumber></code></td>
-<td>Direct an adb command a specific emulator/device instance, referred to by its adb-assigned serial number (such as "emulator-5556").</td>
-<td>See <a href="#directingcommands">Directing
-Commands to a Specific Emulator/Device Instance</a>.</td>
-</tr>
-
-<tr>
-<td rowspan="3">General</td>
-<td><code>devices</code></td>
-<td>Prints a list of all attached emulator/device instances.</td>
-<td>See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information.</td>
-</tr>
-
-<tr>
-<td><code>help</code></td>
-<td>Prints a list of supported adb commands.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><code>version</code></td>
-<td>Prints the adb version number. </td>
-<td> </td>
-</tr>
-
-<tr>
-<td rowspan="3">Debug</td>
-<td ><code>logcat [option] [filter-specs]</code></td>
-<td>Prints log data to the screen. </td>
-<td> </td>
-</tr>
-
-<tr>
-<td><code>bugreport</code></td>
-<td>Prints <code>dumpsys</code>, <code>dumpstate</code>, and <code>logcat</code> data to the screen, for the purposes of bug reporting. </td>
-<td> </td>
-</tr>
-
-<tr>
-<td><code>jdwp</code></td>
-<td>Prints a list of available JDWP processes on a given device. </td>
-<td>You can use the <code>forward jdwp:<pid></code> port-forwarding specification to connect to a specific JDWP process. For example: <br>
- <code>adb forward tcp:8000 jdwp:472</code><br>
- <code>jdb -attach localhost:8000</code></p>
- </td>
-</tr>
-
-<tr>
-<td rowspan=3">Data</td>
-<td><code>install <path-to-apk></code></td>
-<td>Pushes an Android application (specified as a full path to an .apk file) to an emulator/device. </td>
-<td> </td>
-</tr>
-
-<tr>
-<td><code>pull <remote> <local></code></td>
-<td>Copies a specified file from an emulator/device instance to your development computer. </td>
-<td> </td>
-</tr>
-
-<tr>
-<td><code>push <local> <remote></code></td>
-<td>Copies a specified file from your development computer to an emulator/device instance. </td>
-<td> </td>
-</tr>
-
-<tr>
-<td rowspan="2">Ports and Networking</td>
-<td><code>forward <local> <remote></code></td>
-<td>Forwards socket connections from a specified local port to a specified remote port on the emulator/device instance. </td>
-<td>Port specifications can use these schemes:
-<ul><li><code>tcp:<portnum></code></li>
-<li><code>local:<UNIX domain socket name></code></li>
-<li><code>dev:<character device name></code></li>
-<li><code>jdwp:<pid></code></li></ul>
-</td>
-</tr>
-
-<tr>
-<td><code>ppp <tty> [parm]...</code></td>
-<td>Run PPP over USB.
-<ul>
-<li><code><tty></code> — the tty for PPP stream. For example <code>dev:/dev/omap_csmi_ttyl</code>. </li>
-<li><code>[parm]... </code> — zero or more PPP/PPPD options, such as <code>defaultroute</code>, <code>local</code>, <code>notty</code>, etc.</li></ul>
-
-<p>Note that you should not automatically start a PPP connection. </p></td>
-<td></td>
-</tr>
-
-<tr>
-<td rowspan="3">Scripting</td>
-<td><code>get-serialno</code></td>
-<td>Prints the adb instance serial number string.</td>
-<td rowspan="2">See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information. </td>
-</tr>
-
-<tr>
-<td><code>get-state</code></td>
-<td>Prints the adb state of an emulator/device instance.</td>
-</td>
-</tr>
-
-<tr>
-<td><code>wait-for-device</code></td>
-<td>Blocks execution until the device is online — that is, until the instance state is <code>device</code>.</td>
-<td>You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here's an example:
-<pre class="no-pretty-print">adb wait-for-device shell getprop</pre>
-
-Note that this command does <em>not</em> cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the <code>install</code> requires the Android package manager, which is available only after the system is fully booted. A command such as
-
-<pre class="no-pretty-print">adb wait-for-device install <app>.apk</pre>
-
-would issue the <code>install</code> command as soon as the emulator or device instance connected to the adb server, but before the Android system was fully booted, so it would result in an error. </td>
-</tr>
-
-
-
-<tr>
-<td rowspan="2">Server</td>
-<td><code>start-server</code></td>
-<td>Checks whether the adb server process is running and starts it, if not.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><code>kill-server</code></td>
-<td>Terminates the adb server process.</td>
-<td> </td>
-</tr>
-
-
-
-<tr>
-<td rowspan="2">Shell</td>
-<td><code>shell</code></td>
-<td>Starts a remote shell in the target emulator/device instance.</td>
-<td rowspan="2">See <a href="{@docRoot}tools/help/shell.html#shellcommands">ADB Shell Commands</a> for more information. </td>
-</tr>
-
-<tr>
-<td><code>shell [shellCommand]</code></td>
-<td>Issues a shell command in the target emulator/device instance and then exits the remote shell.</td>
-</tr>
-
-</table>
-
-
-
-
-
-
-
-
-
-
-<h2 id="devicestatus">Querying for Emulator/Device Instances</h2>
-
-<p>Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the <code>devices</code> command: </p>
-
- <pre class="no-pretty-print">adb devices</pre>
-
-<p>In response, adb prints this status information for each instance:</p>
-
-<ul>
- <li>Serial number — A string created by adb to uniquely identify an emulator/device instance by its
- console port number. The format of the serial number is <code><type>-<consolePort></code>.
- Here's an example serial number: <code>emulator-5554</code></li>
- <li>State — The connection state of the instance may be one of the following:
- <ul>
- <li><code>offline</code> — the instance is not connected to adb or is not responding.</li>
- <li><code>device</code> — the instance is now connected to the adb server. Note that this state does not
- imply that the Android system is fully booted and operational, since the instance connects to adb
- while the system is still booting. However, after boot-up, this is the normal operational state of
- an emulator/device instance.</li>
- <li><code>no device</code> — there is no emulator/device connected.
- </ul>
- </li>
-</ul>
-
-<p>The output for each instance is formatted like this: </p>
-
- <pre class="no-pretty-print">[serialNumber] [state]</pre>
-
-<p>Here's an example showing the <code>devices</code> command and its output:</p>
-
- <pre class="no-pretty-print">adb devices
-List of devices attached
-emulator-5554 device
-emulator-5556 device
-emulator-5558 device</pre>
-
-
-
-
-
-
-<h2 id="directingcommands">Directing Commands to a Specific Emulator/Device Instance</h2>
-
-<p>If multiple emulator/device instances are running, you must specify a target instance
-when issuing adb commands. To do so, use the <code>-s</code> option in the commands. The usage
-for the <code>-s</code> option is:</p>
-
-<pre class="no-pretty-print">adb -s <serialNumber> <command> </pre>
-
-<p>As shown, you specify the target instance for a command using its adb-assigned serial number.
-You can use the <code>devices</code> command to obtain the serial numbers of running
-emulator/device instances. For example: </p>
-
-<pre class="no-pretty-print">adb -s emulator-5556 install helloWorld.apk</pre>
-
-<p>Note that, if you issue a command without specifying a target emulator/device instance
-while multiple devices are available, adb generates an error.
-
-<p>If you have multiple devices available (hardware or emulated), but only one is an emulator,
-simply use the {@code -e} option to send commands to the emulator. Likewise if there's multiple
-devices but only one hardware device attached, use the {@code -d} option to send commands to
-the hardware device.
-
-
-
-
-<h2 id="move">Installing an Application</h2>
-<p>You can use adb to copy an application from your development computer and install it on an emulator/device instance. To do so, use the <code>install</code> command. With the command, you must specify the path to the .apk file that you want to install:</p>
-
-<pre class="no-pretty-print">adb install <path_to_apk></pre>
-
-<p>For more information about how to create an .apk file that you can install on an emulator/device
-instance, see <a href="{@docRoot}tools/building/index.html">Building and Running</a></p>
-
-<p>Note that, if you are using Android Studio, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, Android Studio handles the packaging and installation of the application for you. </p>
-
-
-
-
-
-
-<h2 id="forwardports">Forwarding Ports</h2>
-
- <p>You can use the <code>forward</code> command to set up arbitrary port forwarding — forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:</p>
-<pre class="no-pretty-print">adb forward tcp:6100 tcp:7100</pre>
- <p>You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:</p>
-<pre class="no-pretty-print">adb forward tcp:6100 local:logd </pre>
-
-
-
-
-
-<h2 id="copyfiles">Copying Files to or from an Emulator/Device Instance</h2>
-
-<p>You can use the adb commands <code>pull</code> and <code>push</code> to copy files to
-and from an emulator/device instance. Unlike the <code>install</code> command,
-which only copies an APK file to a specific location, the <code>pull</code> and <code>push</code>
-commands let you copy arbitrary directories and files to any location in an
-emulator/device instance. </p>
-
-<p>To copy a file or directory (and its sub-directories) <em>from</em> the emulator or device, use</p>
-<pre class="no-pretty-print">adb pull <remote> <local></pre>
-
-<p>To copy a file or directory (and its sub-directories) <em>to</em> the emulator or device, use</p>
- <pre class="no-pretty-print">adb push <local> <remote></pre>
-
-<p>In the commands, <code><local></code> and <code><remote></code> refer to the
-paths to the target files/directory on your development machine (local) and on the
-emulator/device instance (remote). For example: </p>
-<pre class="no-pretty-print">adb push foo.txt /sdcard/foo.txt</pre>
-
-
-
-
-<h2 id="stopping">Stopping the adb Server</h2>
-
-<p>In some cases, you might need to terminate the adb server process and then restart it
-to resolve the problem (e.g., if adb does not respond to a command).</p>
-
-<p>To stop the adb server, use the <code>kill-server</code> command.
-You can then restart the server by issuing any other adb command. </p>
-
-
-<h2 id="wireless">Wireless usage</h2>
-
-<p>
-adb is usually used over USB. However, it is also possible to use over
-Wi-Fi, as described here.
-</p>
-
-<ol>
-
-<li>
-<p>Connect your Android device and adb host computer
-to a common Wi-Fi network accessible to both.
-We have found that not all access points
-are suitable; you may need to use an access point
-whose firewall is configured properly to support adb.</p>
-
-<p class="note"><strong>Note: </strong>If you are attempting to connect
-to a Wear device, force it to connect to Wi-Fi by shutting off Bluetooth
-on the phone connected to it.</p>
-</li>
-
-<li>
-Connect the device to the host computer with a USB cable.
-</li>
-
-<li>
-Set the target device to listen for a TCP/IP connection on port 5555.
-<pre class="no-pretty-print">
-$ adb tcpip 5555
-</pre>
-</li>
-
-<li>
-Disconnect the USB cable from the target device.
-</li>
-
-<li>
-Find the IP address of the Android device. For example, on a Nexus device, you can find
-the IP address at <strong>Settings</strong> > <strong>About tablet</strong>
-(or <strong>About phone</strong>) > <strong>Status</strong> > <strong>IP address</strong>. Or,
-on an Android Wear device, you can find the IP address at <strong>Settings</strong> >
-<strong>Wi-Fi Settings</strong> > <strong>Advanced</strong> > <strong>IP address</strong>.
-</li>
-
-<li>
-Connect to the device, identifying it by IP address.
-<pre class="no-pretty-print">
-$ adb connect <device-ip-address>
-</pre>
-</li>
-
-
-<li>
-Confirm that your host computer is connected to the target device:
-<pre class="no-pretty-print">
-$ adb devices
-List of devices attached
-<device-ip-address>:5555 device
-</pre>
-
-</ol>
-
-<p>
-You're now good to go!
-</p>
-
-<p>
-If the adb connection is ever lost:
-</p>
-
-<ol>
-
-<li>
-Make sure that your host is still connected to the same Wi-Fi network your Android device is.
-</li>
-
-<li>
-Reconnect by executing the "adb connect" step again.
-</li>
-
-<li>
-Or if that doesn't work, reset your adb host:
-<pre class="no-pretty-print">
-adb kill-server
-</pre>
-and then start over from the beginning.
-</li>
-
-</ol>
diff --git a/docs/html/tools/help/adt.jd b/docs/html/tools/help/adt.jd
deleted file mode 100644
index 7d29d02..0000000
--- a/docs/html/tools/help/adt.jd
+++ /dev/null
@@ -1,24 +0,0 @@
-page.title=Android Developer Tools
-page.tags=adt
-@jd:body
-
-<p class="caution">
- <strong>Important:</strong> Support for the Android Developer Tools (ADT) in Eclipse has ended,
- per our <a href=
- "http://android-developers.blogspot.com/2015/06/an-update-on-eclipse-android-developer.html"
- class="external-link">announcement</a>. You should migrate your app development projects to
- Android Studio as soon as possible. For more information on transitioning to Android Studio, see
- <a href="{@docRoot}sdk/installing/migrate.html">Migrating from Eclipse ADT</a>.
-</p>
-
- <p>Formerly the official IDE solution for Android development, Android Developer Tools (ADT)
- is a plugin for Eclipse that provides GUI-based access to many of the command-line SDK tools,
- along with a UI design tool for rapid prototyping, designing, and building of your app's
- user interface.</p>
-
- <p>As with ADT, support for the <a href="http://ant.apache.org/"
- class="external-link">Ant</a>
- tool for building from the command line has ended.
- <a href="{@docRoot}tools/building/plugin-for-gradle.html">Gradle</a> is now the supported method
- of building Android apps.
- </p>
diff --git a/docs/html/tools/help/am-allocation.jd b/docs/html/tools/help/am-allocation.jd
deleted file mode 100644
index 20570c3..0000000
--- a/docs/html/tools/help/am-allocation.jd
+++ /dev/null
@@ -1,220 +0,0 @@
-page.title=Allocation Tracker
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the Memory Monitor to capture allocation data about your app. The Allocation Tracker displays each method responsible for an allocation, as well as the allocation size and number of instances.
-page.image=tools/help/thumbnails/am_alloctracker.png
-page.article=true
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#display">Understanding the Allocation Tracker Display</a></li>
- <li><a href="#alloc-snapshot">Taking and Displaying a Snapshot of Allocation Data</a></li>
- <li><a href="#alloc-viewing">Viewing a Saved Allocation Tracking File</a></li>
- <li><a href="#alloc-sorting">Sorting Allocation Data</a></li>
- <li><a href="#alloc-source">Displaying Java Source</a></li>
- <li><a href="#alloc-files">Working with Allocation Tracking Files</a></li>
-</ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/articles/memory.html">Managing Your App's Memory</a></li>
- <li><a href="{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing Garbage Collection Issues</a></li>
- <li><a href="{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM Usage</a></li>
- </ol>
-
-</div>
-</div>
-
-
-
-
-<p>Android Studio allows you to track memory allocation as it monitors memory use. Tracking memory
- allocation allows you to monitor where objects are being allocated when you perform certain
- actions. Knowing these allocations enables you to adjust the method calls related to those actions
- to optimize app performance and memory use.</p>
-
-<p>The Allocation Tracker does the following:</p>
-<ul>
-<li>Shows when and where your code allocates object types, their size, allocating thread, and stack
- traces.</li>
-<li>Helps recognize memory churn through recurring allocation/deallocation patterns.</li>
-<li>Helps you track down memory leaks when used in combination with the HPROF Viewer. For example,
- if you see a bitmap object resident on the heap, you can find its allocation location with
- Allocation Tracker.</li>
-</ul>
-
-
-<p>However, it takes time and experience to learn to interpret the output from this tool.</p>
-
-<h2 id="display">
- Understanding the Allocation Tracker Display
-</h2>
-
-<p>
- The Allocation Tracker looks similar to the following figure:
-</p>
-<img src="{@docRoot}images/tools/am-alloctracker.png" />
-<p>
-
-
-<p>The tool displays the following information: </p>
-
-<table>
- <tr>
- <th scope="col">Column</th>
- <th scope="col">Description</th>
- </tr>
-
- <tr>
- <td><strong>Method</strong></td>
- <td>The Java method responsible for the allocation.</td>
- </tr>
- <tr>
- <td><strong>Count</strong></td>
- <td>Total number of instances allocated.</td>
- </tr>
- <tr>
- <td><strong>Size</strong></td>
- <td>The total amount of allocated memory in bytes.</td>
- </tr>
-
-</table>
-
-<h2 id="alloc-snapshot">Taking and Displaying a Snapshot of Allocation Data</h2>
-
-<p>To examine allocation data:</p>
-<ol>
- <li><a href="{@docRoot}tools/help/am-memory.html#displaying">Display a running app in the Memory
- Monitor</a>.</li>
-<li>Click Start Allocation Tracking
- <img src="{@docRoot}images/tools/am-ialloctracking.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Start Allocation Tracking icon" />. </li>
-<li>Click Start Allocation Tracking
- <img src="{@docRoot}images/tools/am-ialloctracking.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Start Allocation Tracking icon" /> again to
- deselect it and end the snapshot. </li>
-
- <p>The Memory Monitor displays the period when it took the snapshot. In the following
- figure, you can see the snapshot period, as shown on the left. By comparison, when you dump the
- Java heap, the Memory Monitor displays just the point where the heap snapshot was taken, as
- shown on the right.</p>
- <img src="{@docRoot}images/tools/am-dumpalloc2.png" />
-
-<p>Android Studio creates the heap snapshot file with the
- filename <code><em>package_yyyy.mm.dd_hh.mm.ss</em>.alloc</code> using the activity package (or
- project) name, year, month, day,
- hour, minute, and second of the capture, for example,
- <code>com.android.calc_2015.11.17_14.58.48.alloc</code>.</p>
-
- The Allocation Tracker appears.
-</p>
-
-<li>Optionally click the graphic icon <img src="{@docRoot}images/tools/am-igraphic.png"
-style="vertical-align:sub;margin:0;height:17px"
- alt="graphic icon" /> to display a visual representation of the data.
- </li>
-
-
-
-
-<li>Select the Group By menu option you want to display: </li>
-<ul>
-<li><strong>Group by Allocator</strong> </li>
-<li><strong>Group by Method</strong></li>
-</ul>
-
-</ol>
-
-
-<h2 id="alloc-viewing">Viewing a Saved Allocation Tracking File</h2>
-<p>After you capture allocation data, Android Studio automatically stores it so
-you can view it again.</p>
-<p>To view an allocation tracking file in the Allocation Tracker:</p>
-
-
-<ol>
-<li>Click
-<img src="{@docRoot}images/tools/am-icaptures.png"
-style="vertical-align:sub;margin:0;height:17px"
- alt="Captures icon" /> in the main window.</li>
-
-<p>Or select <strong>View</strong> > <strong>Tools Windows</strong> >
-<strong>Captures</strong>.</p>
-<p>The <em>Captures</em> window appears.</p>
-<li>Open the <strong>Allocation Tracking</strong> folder.</li>
-<li>Double-click the file to view it.</li>
-</ol>
-
-<h2 id="alloc-sorting">Sorting Allocation Data</h2>
-
-<p>To sort allocation data:</p>
-<ul>
-<li>In the Allocation Tracker, click a column heading to sort the table by ascending or
- descending order. </li>
-</ul>
-
-
-<h2 id="alloc-source">Displaying Java Source</h2>
-<p>For some items displayed in the Allocation Tracker, you can view the Java source.</p>
-<p>To display Java source:</p>
-<ul>
-<li>In the Allocation Tracker, right-click a method and then select <strong>Jump to Source</strong>.
-</li>
-<li>In the Allocation Tracker, select a method and then click Jump to Source
- <img src="{@docRoot}images/tools/am-ijumptosource.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Jump to Source icon" />. </li>
-</ul>
-
-<p>The source code appears in the Code Editor.</p>
-
-
-<h2 id="alloc-files">Working with Allocation Tracking Files</h2>
-<p>You can rename, locate, and delete an allocation tracking file from within
-Android Studio.</p>
-
-<h3 id="alloc-renaming">Renaming an allocation tracking file</h3>
-
-<p>If you rename a file from within Android Studio, it continues to appear in the <em>Captures</em>
- window.</p>
-<p>To rename an allocation tracking file:</p>
-<ol>
-<li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>.</li>
-<li>In the <em>Rename</em> dialog, specify the name of the file and click <strong>OK</strong>.</li>
-</ol>
-
-
-<h3 id="alloc-locating">Locating an allocation tracking file</h3>
-<p>You can quickly discover where Android Studio stored allocation tracking files on disk.</p>
-
-
-<p>To locate an allocation tracking file from Android Studio: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click allocation file and select
- <strong>Show</strong> or <strong>Reveal</strong>.</li>
-
-<p>Android Studio opens an operating system file browser displaying the location where the file
- resides.</p>
-</ul>
-
-<p class="note"><strong>Note:</strong> If you move an allocation tracking file, Android Studio
- no longer displays it in the <em>Captures</em> window. To display the file, use
- <strong>File</strong>
- > <strong>Open</strong>. Also, rename the file from the <em>Captures</em>
- window and not in the operating system file browser. </p>
-
-<h3 id="alloc-deleting">Deleting an allocation tracking file</h3>
-
-
-<p>To delete an allocation tracking file: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click an allocation tracking file and select
- <strong>Delete</strong>.</li>
-
-<p>Android Studio deletes the file from the <em>Captures</em> dialog and from disk. </p>
-</ul>
diff --git a/docs/html/tools/help/am-basics.jd b/docs/html/tools/help/am-basics.jd
deleted file mode 100644
index 4bacecf..0000000
--- a/docs/html/tools/help/am-basics.jd
+++ /dev/null
@@ -1,329 +0,0 @@
-page.title=Android Monitor Basics
-parent.title=Android Monitor
-parent.link=index.html
-page.tags=monitor
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#byb">Prerequisites and Dependencies</a></li>
- <li><a href="#displaying">Displaying Android Monitor</a></li>
- <li><a href="#profiling">Profiling a Running App in Android Monitor</a></li>
- <li><a href="#switching">Switching between Devices and Apps</a></li>
- <li><a href="#rearranging">Rearranging Android Monitor Windows</a></li>
- <li><a href="#terminating">Terminating an App</a></li>
- <li><a href="#removing">Removing an App from a Device</a></li>
- <li><a href="#other">Using Other Main Window Features</a></li>
-</ol>
-
-
-
-
-
-</div>
-</div>
-
-<p>
- Android Monitor has a main window that contains the logcat, Memory, CPU, GPU, and Network
- Monitors. From this window, you can select a device and app process to work with, terminate an
- app, collect <code>dumpsys</code> system information, and create screenshots and videos of the
- running app.
-</p>
-
-
-<h2 id="byb">
- Prerequisites and Dependencies
-</h2>
-
-<p>
- Before you start using Android Monitor, you need to set up your environment, as well as the
- hardware device or emulator. All of the monitors require the following:
-</p>
- <ul>
- <li>If you want to run your app on a hardware device (as opposed to the emulator), connect it
- to the USB port. Make sure your development computer
- <a href="{@docRoot}tools/device.html#setting-up">detects your device</a>, which often
- happens automatically when you connect it.
- </li>
- <li>Enable ADB integration by selecting <strong>Tools</strong> > <strong>Android</strong>
- > <strong>Enable ADB Integration</strong>. <strong>Enable ADB Integration</strong>
- should have a check mark next to it in the menu to indicate it's enabled.
- </li>
- <li>
- <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
- </li>
- </ul>
-
- <p>
- All but the logcat Monitor have these additional requirements:
-</p>
-<ul>
- <li>
- <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
- "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
- <strong>Developer Options</strong> on the device or emulator.
- </li>
-
- <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
- <code>build.gradle</code> file (it’s initially set by default).
- </li>
-</ul>
-
-
-<p>
- The GPU Monitor has this requirement as well:
-</p>
-<ul>
- <li>For Android 5.0 (API level 21) and Android 5.1 (API level 22), in <strong>Developer
- Options</strong> on the device or emulator, set <strong>Profile GPU rendering</strong> to
- <strong>In adb shell dumpsys gfxinfo</strong>.
- </li>
-</ul>
-<p>
- The Network Monitor and the Video Capture tool work with a hardware device
- only, not the emulator.
-</p>
-
-
-
-<h2 id="displaying">
- Displaying Android Monitor
-</h2>
-
-<p>
- Android Monitor is integrated into the Android Studio main window:
-</p>
-
-<ul>
- <li>To display Android Monitor, click <img src="{@docRoot}images/tools/am-icon.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Android Monitor icon" />,
- which by default is at the bottom of the main window.
- </li>
-
- <li>To hide Android Monitor, click <img src="{@docRoot}images/tools/am-icon.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Android Monitor icon" /> again.
- </li>
- <li>Or select <strong>View</strong> > <strong>Tool Windows</strong> >
- <strong>Android Monitor</strong>.</li>
-</ul>
- <p class="note">
- <strong>Note:</strong> If you don't see the sidebar buttons, you can
- display them by selecting <strong>View</strong> >
- <strong>Tool Buttons</strong>.
- </p>
-<p>
- Android Monitor looks like the following figure:
-</p>
-<img src="{@docRoot}images/tools/am-androidmon2.png" style="vertical-align:sub;margin:0" />
-
-<h2 id="profiling">
- Profiling a Running App in Android Monitor
-</h2>
-
-<p>
- After you've met the prerequisites and optionally connected a hardware device, you're ready
- to profile an app in Android Monitor:
-</p>
-
-<ol>
-
- <li>Open an app project and <a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">run the app</a> on a device or
- emulator.
- </li>
-
- <li>Display Android Monitor and click the tab for the monitor you want to view.
- </li>
- <li>Follow the instructions about using the monitor:
- </li>
- <ul>
- <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
- </li>
-
- <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
- </li>
-
- <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
- </li>
-
- <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
- </li>
-
- <li>
- <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
- </li>
- </ul>
-</ol>
- <h2 id="switching">
- Switching between Devices and Apps
- </h2>
-
- <p>
- By default, Android Monitor displays data for your most recently run app. You can switch to
- another device and app as needed. In addition to currently running apps, you can view
- information about apps that are no longer running so you can continue to see any information
- about them that you gathered previously.
- </p>
-
- <p>
- At the top of the Android Monitor main window are two menus listing devices and processes. To
- switch to another device, process, or both:
- </p>
-
- <ol>
- <li>Select the device or emulator.
- </li>
-
- <p>
- The Device menu lists the devices and emulators that are running or have run during your
- current session. There are various status messages that can appear in the Device menu:
- </p>
-
- <ul>
- <li>
- <strong>DISCONNECTED</strong> - You closed an emulator or unplugged a device from the
- computer.
- </li>
-
- <li>
- <strong>UNAUTHORIZED</strong> - A device needs you to accept the incoming computer
- connection. For example, if the connected device displays an <em>Allow USB Debugging</em>
- dialog, click <strong>OK</strong> to allow the connection.
- </li>
-
- <li>
- <strong>OFFLINE</strong> - Android Monitor can’t communicate with a device, even though it
- has detected that device.
- </li>
- </ul>
-
- <li>Select the process.
- </li>
- <p>
- The Process menu lists the processes that are running or have run during your current session. If
- a process is no longer running, the menu displays a status of <strong>DEAD</strong>.
-</p>
-</ol>
-
-
-
-
-<h2 id="rearranging">
- Rearranging Android Monitor Windows
-</h2>
-
-<p>
- You can rearrange the Android Monitor windows for optimal viewing during your
- tests:
-</p>
-<ul>
- <li>To move a monitor up or down, click Move Monitor Up
- <img src="{@docRoot}images/tools/am-imoveup.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Move Monitor Up icon" /> or Move Monitor Down
- <img src="{@docRoot}images/tools/am-imovedown.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Move Monitor Down icon" />.
- </li>
- <li>To minimize or maximize a monitor, click Minimize Monitor
- <img src="{@docRoot}images/tools/am-iminimize.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Minimize Monitor icon" />
- or Maximize Monitor
- <img src="{@docRoot}images/tools/am-imaximize.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Maximize Monitor icon" />.
- </li>
-</ul>
-
-<p>
- To rearrange the <strong>logcat</strong> and <strong>Monitors</strong> tabs:
-</p>
-<ul>
- <li>To reorder the logcat or monitor group, move the tabs back and forth.
- </li>
-
- <li>To move the logcat or monitor group to a standalone window, drag a tab
- to a different location on the screen. Or, select
- <img src="{@docRoot}images/tools/am-igear.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Gear menu icon" /> > <strong>Floating Mode</strong>.
- </li>
-
-
- <li>To dock a standalone window, drag it to the Android Monitor
- tab area.</li>
-
-
- <li>To combine the logcat and monitor group displays together, drag a tab and
- move it onto another monitor.
- </li>
-
- <li>To hide a tab, click the
- <img src="{@docRoot}images/tools/am-ihide.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Hide icon" /> icon. To make it reappear, click Restore Monitors View
- <img src="{@docRoot}images/tools/am-imaximize.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Restore Monitors View icon" />
- or the Restore logcat View
- <img src="{@docRoot}images/tools/am-imaxlogcat.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Restore logcat View icon" />
- on the far right of the row of tabs.
- </li>
-</ul>
-
-<h2 id="terminating">
- Terminating an App
-</h2>
-
-<p>
- To stop an app you’ve run from Android Studio:
-</p>
-
-<ol>
- <li>
- <a href="#switching">Select the device and the process</a> in the Android Monitor
- menus, if needed.
- </li>
-
- <li>Click Terminate Application <img src="{@docRoot}images/tools/am-iterminate.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Terminate App icon" />.
- </li>
-
-
-<p>
- The process status changes to <strong>DEAD</strong> in the Processes menu. The emulator or device
- continues to run, but the app closes. Any running monitors in Android Monitor stop.
-</p>
-</ol>
-
-<h2 id="removing">
- Removing an App from a Device
-</h2>
-
-<p>
- To remove an app from a device you use for development, use the normal uninstall procedure on the
- device.
-</p>
-
-<p>
- If you run a new version of an app from Android Studio that’s been already installed on a
- hardware device, the device displays an <em>Application Installation Failed</em> dialog. Click
- <strong>OK</strong> to install the new version of the app.
-</p>
-
-<h2 id="other">
- Using Other Main Window Features
-</h2>
-<p>
- From the Android Monitor main window, you can also do the following:
-</p>
-
-<ul>
- <li>
- <a href="{@docRoot}tools/help/am-sysinfo.html">Examine <code>dumpsys</code> system information</a>.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-screenshot.html">Take a screen capture of the device</a>.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-video.html">Record a video from the screen</a>.
- </li>
-</ul>
-
diff --git a/docs/html/tools/help/am-cpu.jd b/docs/html/tools/help/am-cpu.jd
deleted file mode 100644
index 420d6f8..0000000
--- a/docs/html/tools/help/am-cpu.jd
+++ /dev/null
@@ -1,89 +0,0 @@
-page.title=CPU Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the CPU Monitor to display CPU usage in real time and the percentage of total CPU time (including all cores) used in user and kernel mode.
-page.image=tools/help/thumbnails/am-cpumon.png
-page.article=true
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#running">Displaying a Running App in the CPU Monitor</a></li>
- <li><a href="#snapshot">Recording Call Stack Changes</a></li>
-</ol>
-
-</div>
-</div>
-
-
-<p>
- The CPU Monitor lets you easily monitor the central processing unit (CPU) usage of your app. It
- displays CPU usage in real time and displays the percentage of total CPU time (including all cores)
- used in user and kernel mode. In user mode, the code must use system APIs to access hardware or
- memory, has access to virtual memory addresses only, and crashes are usually
- recoverable. In kernel mode, the code can directly access
- hardware, including physical memory addresses; crashes halt the device.
-</p>
-
-
-<h2 id="running">
- Displaying a Running App in the CPU Monitor
-</h2>
-
-<p>
- To display an app running on a particular device or emulator in the CPU Monitor:
-</p>
-
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on a hardware device or
- emulator.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
- <li>Click the <strong>Monitors</strong> tab and <a href=
- "{@docRoot}tools/help/am-basics.html#rearranging">display the CPU Monitor</a>.
- </li>
-
-
- <li>Enable the CPU Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect it.
- </li>
-
-
-<p>
- The CPU Monitor starts to display any CPU usage.
- In the graph, the y-axis displays the percentage of CPU used. The x-axis records the time elapsed
- and starts with seconds, and then minutes and seconds, and so on.
-</p>
-<img src="{@docRoot}images/tools/am-cpumon2.png" style="vertical-align:sub;margin:0" />
- <li>To stop the CPU Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select
- it.
- </li>
-</ol>
-
-<h2 id="snapshot">
- Recording Call Stack Changes
-</h2>
-
-<p>
- You can capture a record of the changes on the call stack during a particular
- time period while the CPU Monitor is running. For more information, see
- <a href="{@docRoot}tools/help/am-methodtrace.html">Method Trace</a>.
-</p>
-
-
-
-
diff --git a/docs/html/tools/help/am-gpu.jd b/docs/html/tools/help/am-gpu.jd
deleted file mode 100644
index fb140ad..0000000
--- a/docs/html/tools/help/am-gpu.jd
+++ /dev/null
@@ -1,89 +0,0 @@
-page.title=GPU Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the GPU Monitor for a visual representation of how much time it takes to render the frames of a UI window. Use this information to optimize the code that displays graphics and conserve memory.
-page.image=tools/help/thumbnails/am-gpumon.png
-page.article=true
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#running">Displaying a Running App in the GPU Monitor</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>
- The GPU Monitor gives you a quick visual representation of how much time it takes to render the
- frames of a UI window. It profiles the amount of time it takes for the render thread to prepare,
- process, and execute the draw commands. The GPU Monitor can help you to:
-</p>
-
-<ul>
- <li>Quickly see how a UI window performs.
- </li>
-
- <li>Identify whether any part of the rendering pipeline stands out in using processing time.
- </li>
-
- <li>Look for spikes in frame rendering time associated with user or program actions.
- </li>
-</ul>
-
-<p>
- For example, if displaying a static photo continues to take Graphics Processor Unit
- (GPU) resources long after it has finished
- drawing on the screen, that’s a likely candidate for optimization.
-</p>
-
-
-<h2 id="running">
- Displaying a Running App in the GPU Monitor
-</h2>
-
-<p>
- To display an app running on a particular device or emulator in the GPU Monitor:
-</p>
-
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on a hardware device or
- emulator.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
- <li>Click the <strong>Monitors</strong> tab and <a href=
- "{@docRoot}tools/help/am-basics.html#rearranging">display the GPU Monitor</a>.
- </li>
-
- <li>Enable the GPU Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect it.
- </li>
-
- <p>
- Any GPU usage begins to appear in the GPU Monitor:
-</p>
- <img src="{@docRoot}images/tools/am-gpumon2.png" style="vertical-align:sub;margin:0" />
-
-<p>
- The y-axis is the amount of time it takes the GPU to execute, process, prepare, and draw frames,
- in milliseconds. The x-axis records the time elapsed; it starts with seconds, and then minutes
- and seconds, and so on.
-</p>
-
- <li>To stop the GPU Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png" style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select
- it.
- </li>
-</ol>
diff --git a/docs/html/tools/help/am-hprof.jd b/docs/html/tools/help/am-hprof.jd
deleted file mode 100644
index 1eef6ab..0000000
--- a/docs/html/tools/help/am-hprof.jd
+++ /dev/null
@@ -1,355 +0,0 @@
-page.title=HPROF Viewer and Analyzer
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the Memory Monitor to dump the Java heap to an HPROF file. The HPROF Viewer displays classes, instances of each class, and a reference tree to help you track memory usage and find memory leaks.
-page.image=tools/help/thumbnails/am_hprofviewer.png
-page.article=true
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#why">Why Look at the Java Heap?</a></li>
- <li><a href="#display">Understanding the HPROF Viewer Display</a></li>
- <li><a href="#hprof-snapshot">Taking a Snapshot of the Java Heap</a></li>
- <li><a href="#hprof-viewing">Viewing a Saved HPROF File</a></li>
- <li><a href="#hprof-diving">Diving into Heap Dump Data in the HPROF Viewer</a></li>
- <li><a href="#hprof-analyzing">Analyzing Heap Dump Data in the HPROF Analyzer</a></li>
- <li><a href="#hprof-sorting">Sorting Heap Dump Data</a></li>
- <li><a href="#hprof-source">Displaying Java Source</a></li>
- <li><a href="#hprof-files">Working with HPROF Files</a></li>
-
-</ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/articles/memory.html">Managing Your App's Memory</a></li>
- <li><a href="{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing Garbage Collection Issues</a></li>
- <li><a href="{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM Usage</a></li>
- </ol>
-
-</div>
-</div>
-
-
-<p>
- When you're monitoring memory usage in the Memory Monitor you can, at the same time, dump a
- snapshot of the Java heap to an Android-specific Heap/CPU Profiling (HPROF) file. The HPROF Viewer
- displays classes, instances of each class, and a reference tree to help you track memory usage
- and find memory leaks. HPROF is a binary heap dump format originally supported by J2SE.
-</p>
-<h2 id="why">
- Why Look at the Java Heap?
-</h2>
-<p>The Java heap display does the following:</p>
-
-<ul>
- <li>Shows snapshots of a number of objects allocated by type.
- </li>
-
- <li>Samples data every time a garbage collection event occurs naturally or is triggered by you.
- </li>
-
- <li>Helps identify which object types might be involved in memory leaks.
- </li>
-</ul>
-
-<p>
- However, you have to look for changes over time yourself by tracking what's happening in the
- graph.
-</p>
-
-<p>
- The HPROF Analyzer finds the following potential issues:
-</p>
-
-<ul>
- <li>All destroyed activity instances that are reachable from garbage collection roots.
- </li>
-
- <li>Where the target program has strings that repeat values.
- </li>
-</ul>
-
-<p>
- A dominator is at the top of a tree. If you remove it, you also remove the branches of the tree
- it dominates, so it’s a potential way to free memory.
-</p>
-
-<h2 id="display">
- Understanding the HPROF Viewer Display
-</h2>
-
-<p>
- The HPROF Viewer looks similar to the following figure:
-</p>
-<img src="{@docRoot}images/tools/am-hprofviewer.png" />
-<p>
- The tool displays the following information:
-</p>
-
-<table>
- <tr>
- <th scope="col">Column</th>
- <th scope="col">Description</th>
- </tr>
-
- <tr>
- <td><strong>Class Name</strong></td>
- <td>The Java class responsible for the memory.</td>
- </tr>
-
- <tr>
- <td><strong>Total Count</strong></td>
- <td>Total number of instances outstanding.</td>
- </tr>
- <tr>
- <td><strong>Heap Count</strong></td>
- <td>Number of instances in the selected heap.</td>
- </tr>
- <tr>
- <td><strong>Sizeof</strong></td>
- <td>Size of the instances (currently, 0 if the size is variable).</td>
- </tr>
- <tr>
- <td><strong>Shallow Size</strong></td>
- <td>Total size of all instances in this heap.</td>
- </tr>
- <tr>
- <td><strong>Retained Size</strong></td>
- <td>Size of memory that all instances of this class is dominating.</td>
- </tr>
- <tr>
- <td><strong>Instance</strong></td>
- <td>A specific instance of the class.</td>
- </tr>
- <tr>
- <td><strong>Reference Tree</strong></td>
- <td>References that point to the selected instance, as well as references pointing to the
- references.</td>
- </tr>
- <tr>
- <td><strong>Depth</strong></td>
- <td>The shortest number of hops from any GC root to the selected instance.</td>
- </tr>
- <tr>
- <td><strong>Shallow Size</strong></td>
- <td>Size of this instance.</td>
- </tr>
- <tr>
- <td><strong>Dominating Size</strong></td>
- <td>Size of memory that this instance is dominating.</td>
- </tr>
-</table>
-
-<p>If you click <strong>Capture Analysis</strong>, the HPROF Analyzer appears: </p>
-<img src="{@docRoot}images/tools/am-hprofanalyzer.png" />
-<p>You can detect leaked activities and find duplicate strings with the HPROF Analyzer.</p>
-
-<h2 id="hprof-snapshot">
- Taking and Displaying a Snapshot of the Java Heap
-</h2>
-
-<p>
- To examine a snapshot of the Java heap:
-</p>
-
-<ol>
- <li><a href="{@docRoot}tools/help/am-memory.html#displaying">Display a running app in the Memory
- Monitor</a>.</li>
- <li>Click Dump Java Heap
- <img src="{@docRoot}images/tools/am-idump.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Dump Java Heap icon" />.
- </li>
-
-
-<p>
- When the icon on the Memory Monitor display changes from
- <img src="{@docRoot}images/tools/am-idumpstart.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Dump Java Heap Start icon" /> to
- <img src="{@docRoot}images/tools/am-idumpend.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Dump Java Heap End icon" />, the file is ready. Android Studio creates the heap snapshot
- file with the
- filename <code><em>package_yyyy.mm.dd_hh.mm.ss</em>.hprof</code> using
- the activity package (or project) name, year, month, day, hour, minute, and second of the
- capture, for example,
- <code>com.android.calc_2015.11.17_14.58.48.hprof</code>.
-</p>
-<p>
- The HPROF Viewer appears.
-</p>
-</ol>
-
-<h2 id="hprof-viewing">Viewing a Saved HPROF File</h2>
-<p>After you do a heap dump, Android Studio automatically stores it so you can view it again.
- </p>
- <p>To view an HPROF file in the HPROF Viewer:</p>
-
-<ol>
-<li>Click
-<img src="{@docRoot}images/tools/am-icaptures.png"
-style="vertical-align:sub;margin:0;height:17px"
- alt="Captures icon" /> in the main window.</li>
-<p>Or select <strong>View</strong> > <strong>Tools Windows</strong> >
-<strong>Captures</strong>.</p>
-<p>The <em>Captures</em> window appears.</p>
-<li>Open the <strong>Heap Snapshot</strong> folder.</li>
-
-
- <li>Double-click the file to view it in the HPROF Viewer.
- </li>
-<p>
- The HPROF Viewer appears.
-</p>
-
-
- <li>Select the Heap menu option you want to display:
- <ul>
- <li>
- <strong>App heap</strong> - The heap used by the current app.
- </li>
-
- <li><strong>Image heap</strong> - The memory mapped copy of the
- current app on disk.
- </li>
-
-
- <li>
- <strong>Zygote heap</strong> - The common set of libraries and runtime classes and data that
- all apps are forked
- from. The zygote space is created during device startup and is never allocated into.
- </li>
-
- </ul>
-
- <li>Select the View menu option you want to display:
- <ul>
- <li>
- <strong>Class List View</strong>
- </li>
-
- <li>
- <strong>Package Tree View</strong>
- </li>
- </ul>
- </ol>
-
-
-<h2 id="hprof-diving">
- Diving into Heap Dump Data in the HPROF Viewer
-</h2>
-<p>The following steps outline the typical workflow:</p>
-<ol>
-<li>In the HPROF Viewer, select a class name. </li>
-<li>Select an instance of that class.</li>
-<li>Examine the reference tree.</li>
-<li>Right-click an item to <strong>Jump to source</strong> or <strong>Go to instance</strong>,
- as needed.</li>
-</ol>
-
-
-
-<h2 id="hprof-analyzing">Analyzing Heap Dump Data in the HPROF Analyzer</h2>
-<p>You can detect leaked activities and find duplicate strings with the HPROF Analyzer.
- </p>
- <p>To use the HPROF Analyzer:</p>
-<ol>
-<li>In the <em>Captures</em> window, double-click an <code>.hprof</code> file to display it in the
- HPROF Viewer. </li>
-<li>Click <strong>Capture Analysis</strong> on the right side of the main Android Studio window.</li>
-
-
-<p>The HPROF Analyzer appears to the right of the HPROF Analyzer, by default.</p>
-
-
-
-<li>In the <strong>Analyzer Tasks</strong> list, select the items you want to find.</li>
-<li>Click Perform Analysis <img src="{@docRoot}images/tools/am-iperformanalysis.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Perform Analysis icon" />.</li>
-<li>Examine the items in <strong>Analysis Results</strong>. Click an item to display it in the
- HPROF Viewer.</li>
-</ol>
-
-
-
-<h2 id="hprof-sorting">Sorting Heap Dump Data</h2>
-<p>To sort heap dump data:</p>
-<ul>
-<li>In the HPROF Viewer, click a column heading to sort the table by ascending or descending
- order. </li>
-</ul>
-
-
-<h2 id="hprof-source">Displaying Java Source</h2>
-<p>For some items displayed in the HPROF Viewer, you can go straight to its
-source code.
-</p>
-<p>To display Java source:</p>
-<ul>
-<li>In the HPROF Viewer, right-click a class, instance, or item in the reference tree, and then
- select <strong>Jump to Source</strong>. </li>
-
-
-<p>The source code appears in the Code Editor.</p>
-</ul>
-
-<h2 id="hprof-files">Working with HPROF Files</h2>
-<p>You can rename, locate, and delete an HPROF file from within Android Studio.
-You can also convert it to standard HPROF format to use with other analysis
-tools.</p>
-
-<h3 id="hprof-renaming">Renaming an HPROF file</h3>
-
-<p>If you rename a file from within Android Studio, it continues to appear in
-the <em>Captures</em> window.</p>
-<p>To rename an HPROF file:</p>
-<ol>
-<li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>. </li>
-<li>In the dialog, specify the name of the file and click <strong>OK</strong>.</li>
-</ol>
-
-
-<h3 id="hprof-locating">Locating a heap dump file on disk</h3>
-<p>You can quickly discover where Android Studio stored HPROF files on disk.</p>
-
-
-<p>To locate an HPROF file on disk: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click a heap snapshot file and select
- <strong>Show</strong> or <strong>Reveal</strong>.</li>
-
-<p>Android Studio opens an operating system file browser displaying the location where the file
- resides.</p>
-</ul>
-<p class="note"><strong>Note:</strong> If you move an HPROF file, Android Studio no longer
- displays it in the <em>Captures</em> window. To display it, use
- <strong>File</strong> > <strong>Open</strong>. Also, if you want to rename the file, do it
- from the <em>Captures</em> window and not in the operating system file browser. </p>
-
-<h3 id="hprof-deleting">Deleting a heap dump file</h3>
-
-<p>To delete a heap dump file: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click a heap snapshot file and select
- <strong>Delete</strong>.</li>
-
-<p>Android Studio deletes the file from the <em>Captures</em> dialog and from disk. </p>
-</ul>
-
-<h3 id="hprof-converting">Converting a heap dump file to standard HPROF format</h3>
-<p>You can convert an HPROF file to standard format so you can use it outside of Android Studio with
- other analysis tools. </p>
- <p>To convert an HPROF file:</p>
-<ol>
-<li>In the <em>Captures</em> window, right-click a heap snapshot file and select <strong>Export to
- standard .hprof</strong>.</li>
-<li>In the <em>Convert Android Java Heap Dump</em> dialog, specify a filename and click
- <strong>OK</strong>.</li>
-
-
-<p>Android Studio creates a binary HPROF file in the location you specified.</p>
-</ol>
diff --git a/docs/html/tools/help/am-logcat.jd b/docs/html/tools/help/am-logcat.jd
deleted file mode 100644
index 9e26bca..0000000
--- a/docs/html/tools/help/am-logcat.jd
+++ /dev/null
@@ -1,536 +0,0 @@
-page.title=logcat Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the logcat Monitor to view system and user-defined log messages. You can filter the messages to display just the items that interest you.
-page.image=tools/help/thumbnails/am-logcatmon2.png
-page.article=true
-
-@jd:body
-<div id="qv-wrapper">
- <div id="qv">
- <h2>
- In this document
- </h2>
-
- <ol>
- <li>
- <a href="#format">logcat Message Format</a>
- </li>
-
- <li>
- <a href="#running">Displaying a Running App in the logcat Monitor</a>
- </li>
-
- <li>
- <a href="#level">Setting the Log Level</a>
- </li>
-
- <li>
- <a href="#searching">Searching logcat Messages</a>
- </li>
-
- <li>
- <a href="#filtering">Filtering logcat Messages</a>
- </li>
-
- <li>
- <a href="#logheader">Configuring the logcat Header Display</a>
- </li>
-
- <li>
- <a href="#stack">Moving Up and Down the Stack Trace</a>
- </li>
-
- <li>
- <a href="#logend">Moving to the End of the Log</a>
- </li>
-
- <li>
- <a href="#printing">Printing and Writing to a File</a>
- </li>
-
- <li>
- <a href="#clearing">Clearing and Restarting the Log</a>
- </li>
-
- </ol>
-
- <h2>
- See also
- </h2>
-
- <ol>
- <li>
- <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>
- </li>
- </ol>
-
- </div>
-</div>
-
-<p>
- The Android logging system provides a mechanism for collecting and viewing system debug output.
- The logcat Monitor displays system messages, such as when a garbage collection occurs, as well as
- messages that you added to your app by using the <a href=
- "{@docRoot}reference/android/util/Log.html">Log</a> class.
- It displays messages in real time and also keeps a history so you can view older
- messages.
-</p>
-
-<p>
- To display just the information of interest, you can create filters, modify how much information
- is displayed in messages, set priority levels, display messages produced by app code
- only, and search the log. By default, the logcat Monitor shows the log output related to the
- most recently run app only.
-</p>
-
-<p>
- When an app throws an exception, the logcat Monitor shows a message followed by the associated
- stack trace containing links to
- the code. This feature can help you fix errors and improve app operation.
-</p>
-
-<h2 id="format">
- logcat Message Format
-</h2>
-
-<p>
- Every Android log message has a tag and a priority associated with it. The tag of a system
- log message
- is a short string indicating the system component from which the message originates (for example,
- {@link android.app.ActivityManager}). A user-defined tag can be any string that you find helpful,
- such as the name of the current class (the recommended tag). You define it in a
- {@link android.util.Log} method call, for example:
-</p>
-
-<pre>
-Log.d(tag, message);
-</pre>
-<p>
- The priority is one of the following values:
-</p>
-
-<ul>
- <li>
- <strong>V</strong> — Verbose (lowest priority)
- </li>
-
- <li>
- <strong>D</strong> — Debug
- </li>
-
- <li>
- <strong>I</strong> — Info
- </li>
-
- <li>
- <strong>W</strong> — Warning
- </li>
-
- <li>
- <strong>E</strong> — Error
- </li>
-
- <li>
- <strong>A</strong> — Assert
- </li>
-</ul>
-
-<p>
- The log message format is:
-</p>
-
-<pre class="no-pretty-print">
-<em>date time PID-TID/package priority/tag: message</em>
-</pre>
-
-<p>
- For example, the following log message has a priority of <code>V</code> and a tag of
- <code>AuthZen</code>:
-</p>
-
-<pre class="no-pretty-print">
-12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.
-</pre>
-<p>
- PID stands for process identifier and TID is thread identifier; they can be the same if there’s
- only one thread.
-</p>
-
-<h2 id="running">
- Displaying a Running App in the logcat Monitor
-</h2>
-
-<p>
- To display the log messages for a particular app:
-</p>
-
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on a hardware device or
- emulator.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
-
- <li>Click the <strong>logcat</strong> tab.
- </li>
-
-
-<p>
- By default, the logcat Monitor displays just the log messages for your app running on the
- device or emulator:
-</p>
-<img src="{@docRoot}images/tools/am-logcatmon2.png" />
-<p>
- To change this default, see <a href="#filtering">Filtering logcat Messages</a>.
-</p>
-<li>Optionally <a href=
- "{@docRoot}tools/help/am-basics.html#switching">select a different device, emulator, or process</a>.
- </li>
-</ol>
-
-<h2 id="level">
- Setting the Log Level
-</h2>
-
-<p>
- You can control how many messages appear in the logcat Monitor by setting the log level. You can
- display all messages, or just the messages indicating the most severe conditions.
-</p>
-
-<p>
- Remember that the logcat Monitor continues to collect all messages regardless of the log level setting.
- The setting just determines what the logcat Monitor displays.
-</p>
-
-<p>
- To set the log level:
-</p>
-
-<ul>
- <li>In the <strong>Log level</strong> menu, select one of the following values:
- </li>
-
- <ul>
- <li>
- <strong>Verbose</strong> - Show all log messages (the default).
- </li>
-
- <li>
- <strong>Debug</strong> - Show debug log messages that are useful during development only,
- as well as the message levels lower in this list.
- </li>
-
- <li>
- <strong>Info</strong> - Show expected log messages for regular usage, as well as the
- message levels lower in this list.
- </li>
-
- <li>
- <strong>Warn</strong> - Show possible issues that are not yet errors, as well as the
- message levels lower in this list.
- </li>
-
- <li>
- <strong>Error</strong> - Show issues that have caused errors, as well as the message level
- lower in this list.
- </li>
-
- <li>
- <strong>Assert</strong> - Show issues that the developer expects should never happen.
- </li>
- </ul>
-
-</ul>
-
- <h2 id="searching">
- Searching logcat Messages
- </h2>
-
- <p>
- To search the messages currently displayed in the logcat Monitor:
- </p>
-
- <ol>
- <li>Optionally select <strong>Regex</strong> if you want to use a regular expression
- search pattern.
- </li>
-
- <li>Type a character sequence in the search field <img src="{@docRoot}images/tools/am-isearch.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Search icon" />.
- </li>
-
- <p>
- The logcat Monitor display changes accordingly.
- </p>
- </li>
-
- <li>Press Enter to store the search string in the menu during this session.
- </li>
-
- <li>To repeat a search, choose it from the search menu. Select or deselect
- <strong>Regex</strong> as needed (the setting isn’t remembered).
- </li>
- </ol>
-
- <h2 id="filtering">
- Filtering logcat Messages
- </h2>
-
- <p>
- One way to reduce the log output to a manageable level is to restrict it by using a filter.
- </p>
-
- <p class="note">
- <strong>Note:</strong> The filter applies to your full logcat history, not just those messages
- currently displayed in the logcat Monitor. Make sure your other display options are set
- appropriately so you can see the filter output you want to examine.
- </p>
-
- <p>
- To define and apply a filter:
- </p>
-
- <ol>
- <li>In the filter menu, select a filter option:
- <ul>
- <li>
- <strong>Show only selected application</strong> - Display the messages produced by the
- app code only (the default). The logcat Monitor filters the log messages using the PID
- of the active app.
- </li>
-
- <li>
- <strong>No Filters</strong> - Apply no filters. The logcat Monitor
- displays all log messages from the device, regardless of which process you selected.
- </li>
-
- <li>
- <strong>Edit Filter Configuration</strong> - Create or modify a custom filter. For
- example, you could create a filter to view log messages from two apps at the same time.
- </li>
- </ul>
-
- <p>
- After you define filters, you can also select them in the menu. To remove them from the
- menu, delete them.
- </p>
-
- <li>If you selected <strong>Edit Filter Configuration</strong>, create or modify a
- filter.
- <ol type="a">
- <li>Specify the filter parameters in the <em>Create New Logcat Filter</em> dialog:
- </li>
-
-
- <ul>
- <li>
- <strong>Filter Name</strong> - Type the name of a filter you want to define, or
- select it in the left pane to modify an existing filter. The name can contain
- lowercase characters, underscores, and digits only.
- </li>
-
- <li>
- <strong>Log Tag</strong> - Optionally specify a tag. For more information, see
- <a href="#format">logcat Message Format</a>.
- </li>
-
- <li>
- <strong>Log Message</strong> - Optionally specify log message text. For more
- information, see <a href="#format">logcat Message Format</a>.
- </li>
-
- <li>
- <strong>Package Name</strong> - Optionally specify a package name. For more
- information, see <a href="#format">logcat Message Format</a>.
- </li>
-
- <li>
- <strong>PID</strong> - Optionally specify a process ID. For more information, see
- <a href="#format">logcat Message Format</a>.
- </li>
-
- <li>
- <strong>Log Level</strong> - Optionally select a log level. For more information,
- see <a href="#level">Setting the Log Level</a>.
- </li>
-
- <li>
- <strong>Regex</strong> - Select this option to use regular expression syntax for
- that parameter.
- </li>
- </ul>
-
- <li>
- Click <strong>+</strong> to add the filter definition to the left pane.
- </li>
-
- <p>
- To remove a filter, select it in the left pane and click <strong>-</strong>.
- </p>
-
- <li>
- When you’re finished, click <strong>OK</strong>. If you click
- <strong>Cancel</strong>, any filter additions or modifications are lost.
- </li>
- </ol>
- <li>
- Make sure you see the log messages you want to examine.
- </li>
- <p>
- If you don't think you see the log messages you want, try selecting
- <strong>No filters</strong> and <a href="#searching">searching</a> for particular
- log messages.
- </p>
- </ol>
-
- <h2 id="logheader">
- Configuring the logcat Header Display
- </h2>
-
- <p>
- To customize the header display to show just the information you’re interested
- in:
- </p>
-
- <ul>
- <li>Select Use Soft Wraps <img src="{@docRoot}images/tools/am-isoftwraps.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Use Soft Wraps icon" />
- to see the entire
- message and prevent it from running off of the right edge.
- </li>
-
- <li>Click Configure Logcat Header <img src="{@docRoot}images/tools/am-igear.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Configure Logcat header icon" />
- to specify
- elements of the messages that you want to show or hide, and then click
- <strong>OK</strong>.
- </li>
- </ul>
-
- <p>
- For more information about message elements, see <a href=
- "#format">logcat Message Format</a>.
- </p>
-
- <h2 id="stack">
- Moving Up and Down the Stack Trace
- </h2>
-
- <p>
- When the app throws an exception, the message includes a stack trace of method calls.
- logcat
- Monitor lets you quickly locate stack traces in the log and view the associated code
- in the Code Editor. If needed (and possible), the decompiler derives source code that
- you can view.
- </p>
- <p>
- To move up and down the stack trace, and view the associated code in the Code Editor:
- </p>
- <ul>
- <li>Click Up the Stack Trace <img src="{@docRoot}images/tools/am-iupstack.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Up the Stack Trace icon" />
- to move to the
- previous method in relation to the current position in the log.
- </li>
-
- <li>Click Down the Stack Trace <img src="{@docRoot}images/tools/am-idownstack.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Down the Stack Trace icon" />
- to move to
- the next method in relation to the current position in the log.
- </li>
- </ul>
-
- <h2 id="logend">
- Moving to the End of the Log
- </h2>
-
- <p>
- Clicking a particular message stops the display of messages.
- </p>
- <p>
- To quickly move to
- the end of the log to see the real-time message flow:
- </p>
-
-<ul>
- <li>Click Scroll to the End <img src="{@docRoot}images/tools/am-iscrollend.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Scroll to the End icon" />.
- </li>
-
- <li>Press the End key.
- </li>
-
- <li>Scroll or press the Page Down key until you reach the end.
-</li>
-</ul>
-
-<h2 id="printing">
- Printing and Writing to a File
-</h2>
-<p>
- To preserve log information, you can send the log to a printer, write the log to a PDF file, or
- copy and paste the log into a text file.
-</p>
-<p>
- To print the log or write it to a PDF file:
-</p>
-<ol>
- <li>Click Print <img src="{@docRoot}images/tools/am-iprint.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Print icon" />.
- </li>
- <li>
- In the Android Studio <em>Print</em> dialog, optionally change print parameters, and then click
- <strong>Print</strong>.
- </li>
- <li>
- In the operating system <em>Print</em> dialog, optionally change print parameters, and then click
- <strong>Print</strong>.
- </li>
- <p>
- You can set the parameters to send the log to a printer or write it to a PDF file.
-</p>
-</ol>
-<p>
- To copy the log to a text file:
-</p>
-<ol>
- <li>In the logcat Monitor, select and then copy log text.
- </li>
- <p>Press Ctrl+A (⌘A) to select all.</p>
- <li>
- Open a text editor and paste the text into a file.
- </li>
-</ol>
-
-<h2 id="clearing">
- Clearing and Restarting the Log
-</h2>
-<p>
- To clear (flush) the entire log:
-</p>
-<ul>
- <li>Click Clear logcat <img src="{@docRoot}images/tools/am-iclear.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Clear logcat icon" />.
- </li>
-</ul>
-
-
-<p>
- If there's a problem and the log is no longer progressing, you can restart the log:
-</p>
-
-<ul>
- <li>Click Restart <img src="{@docRoot}images/tools/am-irestart.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Restart icon" />.
- </li>
-</ul>
\ No newline at end of file
diff --git a/docs/html/tools/help/am-memory.jd b/docs/html/tools/help/am-memory.jd
deleted file mode 100644
index 20c6934..0000000
--- a/docs/html/tools/help/am-memory.jd
+++ /dev/null
@@ -1,405 +0,0 @@
-page.title=Memory Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the Memory Monitor to evaluate memory usage and find deallocated objects, locate memory leaks, and track the amount of memory the connected device is using.
-page.image=tools/help/thumbnails/am-memorymon.png
-page.article=true
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#workflow">Memory Monitor Workflow</a>
- <ol>
- <li><a href="#treeroot">Garbage collection roots and dominator trees</a></li>
- <li><a href="#analysis">Memory leak and use analysis</a></li>
- <li><a href="#vm">Memory management for different virtual machines</a></li>
- </ol>
- </li>
- <li><a href="#displaying">Displaying a Running App in the Memory Monitor</a></li>
- <li><a href="#forcing">Forcing a Garbage Collection Event</a></li>
- <li><a href="#snapshot">Taking a Snapshot of the Java Heap and Memory Allocation</a></li>
-</ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/articles/memory.html">Managing Your App's Memory</a></li>
- <li><a href="{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing Garbage Collection Issues</a></li>
- <li><a href="{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM Usage</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>
- Android Studio provides a Memory Monitor so you can more easily monitor app performance and
- memory usage to find deallocated objects, locate memory leaks, and track the amount of memory the
- connected device is using. The Memory Monitor reports how your app allocates memory and helps you
- to visualize the memory your app uses. It lets you:
-</p>
-
-<ul>
- <li>Show a graph of available and allocated Java memory over time.
- </li>
-<li>Show garbage collection (GC) events
- over time.
- </li>
- <li>Initiate garbage collection events.
- </li>
-
- <li>Quickly test whether app slowness might be related to excessive garbage collection events.
- </li>
-
- <li>Quickly test whether app crashes may be related to running out of memory.
- </li>
-</ul>
-
-<h2 id="workflow">
- Memory Monitor Workflow
-</h2>
-
-<p>
- To profile and optimize memory use, the typical workflow is to run your app and do the following:
-</p>
-
-<ol>
- <li>Profile the app using the Memory Monitor to find out whether undesirable garbage collection
- event patterns might be causing performance problems.
- </li>
-
- <li>If you see many garbage collection events in a short amount of time, dump the Java heap to
- identify candidate object types that get or stay allocated unexpectedly or unnecessarily.
- </li>
-
- <li>Start allocation tracking to determine where any problems are happening in your code.
- </li>
-</ol>
-
-<p>
- The Java heap data shows in real-time what types of objects your application has allocated, how
- many, and their sizes on the heap. Viewing the heap helps you to:
-</p>
-
-<ul>
- <li>Get a sense of how your app allocates and frees memory.
- </li>
-
- <li>Identify memory leaks.
- </li>
-</ul>
-
-<p>
- Allocation tracking records app memory allocations and lists all allocations for the
- profiling cycle, including the call stack, size, and allocating code. It helps you to:
-</p>
-
-<ul>
- <li>Identify where many similar object types, from roughly the same call stack, are allocated and
- deallocated over a very short period of time.
- </li>
-
- <li>Find the places in your code that may contribute to inefficient memory use.
- </li>
-</ul>
-
-<h3 id="treeroot">
- Garbage collection roots and dominator trees
-</h3>
-
-<p>
- When you dump the Java heap, the Memory Monitor creates an Android-specific Heap/CPU Profiling
- (HPROF) file that you can view in the HPROF Viewer. The HPROF Viewer indicates a garbage
- collection root with the <img src="{@docRoot}images/tools/am-igcroot.png"
- style="vertical-align:sub;margin:0;height:17px" alt="GC Root icon" /> icon (and a depth of zero)
- and a
- dominator with the <img src="{@docRoot}images/tools/am-idom.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Dominator icon" /> icon.
-</p>
-
-<p>
- There are several kinds of garbage collection roots in Java:
-</p>
-
-<ul>
-<li>references on the stack</li>
-<li>Java Native Interface (JNI) native objects and memory</li>
-<li>static variables and functions</li>
-<li>threads and objects that can be referenced </li>
-<li>classes loaded by the bootstrap loader</li>
-<li>finalizers and unfinalized objects</li>
-<li>busy monitor objects</li>
-</ul>
-
-<p>
- The HPROF file provides the list of roots to the HPROF Viewer.
-</p>
-
-<p>
- A dominator tree traces paths to objects created by the app. An object dominates another object
- if the only way to reach the other object is, directly or indirectly, through the dominator
- object. When you examine objects and paths created by an app in an effort to optimize memory use,
- try to remove objects that are no longer needed. You can release a dominator object to
- release all subordinate objects. For example, in the following figure, if you were to
- remove object B, that would also release the memory used by the objects it dominates, which are
- objects C, D, E, and F. In fact, if objects C, D, E, and F were marked for removal, but object B
- was still referring to them, that could be the reason that they weren’t released.
-</p>
-
- <img src="{@docRoot}images/tools/am-domtree.png" height="200" />
-
-<h3 id="analysis">
- Memory leak and use analysis
-</h3>
-
-<p>
- An app performs better if it uses memory efficiently and releases the memory when it’s no longer
- needed.
- Memory leaks that are large or that grow over time are the most important to correct.
-</p>
-
-<p>
- One way to optimize memory usage is to analyze large arrays. For example, can you reduce the size
- of individual elements in the array to save memory?
-</p>
-
-<p>
- Another area that deserves attention is objects that the app no longer needs but continues to
- reference. You can gather heap dumps over different periods of time and compare them to determine
- if you have a growing memory leak, such as an object type that your code creates multiple times
- but doesn’t destroy. These objects could be part of a growing array or an object tree, for
- example. To track down this problem, compare the heap dumps and see if you have a particular
- object type that continues to have more and more instances over time.
-</p>
-
-<p>
- Continually growing object trees that contain root or dominator objects can prevent subordinate
- objects from being garbage-collected. This issue is a common cause of memory leaks, out-of-memory
- errors,
- and crashes. Your app could have a small number of objects that are preventing a large number of
- subordinate objects from being destroyed, so it runs out of memory quickly. To find these issues,
- get a heap dump and examine the amount of memory held by root and dominator objects. If the
- memory is substantial, you’ve likely found a good place to start optimizing your memory use.
-</p>
-
-<p>
- As you start narrowing down memory issues, you should also use the Allocation Tracker to get a
- better understanding of where your memory-hogging objects are allocated. The Allocation Tracker
- can be valuable not only for looking at specific uses of memory, but also for analyzing critical
- code paths, such as loading and scrolling. For example, tracking allocations when flinging a list
- in your app
- allows you to see all of the allocations that need to be done for that behavior, what thread they
- are on, and where they came from. This information is extremely valuable for tightening up these
- paths to reduce the work they need and improve the overall smoothness of the UI.
-</p>
-
-<p>
- It’s useful to examine your algorithms for allocations that are unnecessary or that create the
- same object many times instead of reusing them. For example, do you create temporary objects and
- variables within recursive loops? If so, try creating an object or variable before
- the loop for use within the loop. Otherwise, your app might needlessly allocate many objects and
- variables, depending on the number of recursions.
-</p>
-
-<p>
- It’s important to perform allocation tests on portions of your code that create the most and
- largest objects, as those areas offer the most optimization opportunities. In addition to unit
- tests, you should test your app with production-realistic data loads, especially those algorithms
- that are data-driven. Also, make sure to account for the app caching and startup phase, which can
- sometimes be slow; allocation analysis is best done after that phase to produce accurate results.
-</p>
-
-<p>
- After you optimize code, be sure to test that it worked. You need to test under different load
- conditions and also without running the Memory Monitor tools. Compare results before and after
- optimization to make sure that performance has actually improved.
-</p>
-
-<h3 id="vm">
- Memory management for different virtual machines
-</h3>
-
-<p>
- Android Monitor uses the Virtual Machine (VM) that the device or emulator uses:
-</p>
-
-<ul>
- <li>Android 4.3 (API level 18) and lower uses the Dalvik VM.
- </li>
-
- <li>In Android 4.4 (API level 19), the Android RunTime (ART) VM is an option, while the Dalvik VM
- is the default.
- </li>
-
- <li>Android 5.0 (API level 21) and higher uses the ART VM.
- </li>
-</ul>
-
-<p>
- The VM handles garbage collection. The Dalvik VM uses a mark-and-sweep scheme for garbage
- collection. The ART VM uses a generational scheme, combined with mark-and-sweep when memory needs
- a more thorough garbage collection, such as when memory becomes excessively fragmented. The
- logcat Monitor displays some messages that indicate the type of garbage collection that occurred
- and why.
-</p>
-
-<p>
- Memory Monitor results can vary between the different VMs. As a result, if you’re supporting both
- VMs, you might want to test with both. In addition, the VMs available for different API levels
- can have different behavior. For example, the Dalvik VM in Android 2.3 (API level 10) and lower
- uses externally allocated memory while higher versions allocate in the Dalvik heap only.
-</p>
-
-<p>
- You can’t reconfigure the Dalvik and ART VMs to tune performance. Instead, you should examine
- your app code to determine how to improve its operation, for example, reducing the size of very
- large arrays.
-</p>
-
-<p>
- There are programmatic ways to manipulate when the VM performs garbage collection, although it’s
- not a best practice. These techniques can be specific to the VM. For more information, see
- <a href=
- "{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing
- Garbage Collection (GC) Issues</a> and <a href=
- "{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM
- Usage</a>.
-</p>
-
-<p>
- The ART VM adds a number of performance, development, and debugging improvements over the Dalvik
- VM. For more information, see <a href=
- "https://source.android.com/devices/tech/dalvik/index.html">ART and Dalvik</a>.
-</p>
-
-<h2 id="displaying">
- Displaying a Running App in the Memory Monitor
-</h2>
-
-<p>
- To display an app running on a particular device or emulator in the Memory Monitor:
-</p>
-
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on a hardware device or
- emulator.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
- <li>Click the <strong>Monitors</strong> tab and <a href=
- "{@docRoot}tools/help/am-basics.html#rearranging">display the Memory Monitor</a>.
- </li>
-
-
- <li>Enable the Memory Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect it.
- </li>
-
-
-<p>
- In the graph, the y-axis displays the free and allocated RAM in megabytes. The x-axis shows the
- time elapsed; it starts with seconds, and then minutes and seconds, and so on. The amount of free
- memory, measured in megabytes,
- is shown in a light color, and allocated memory is a darker color. When there’s a sharp drop in
- allocated memory, that indicates a garbage collection event. </p>
-
-
-
-<p>
- To force a garbage collection event, click Initiate GC <img src="{@docRoot}images/tools/am-igc.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Initiate GC icon" />.
-</p>
-
- <p>In the following figure, the VM initiated the first garbage collection event, while the
- developer forced the second.
-</p>
-<img src="{@docRoot}images/tools/am-gc2.png" />
-
- <li>Interact with your app and watch how it affects memory usage in the Memory Monitor. You can
- identify garbage collection patterns for your app and determine whether they're healthy and what
- you expect.
- </li>
-
-
-<p>
- The graph can show you potential issues:
-</p>
-
-<ul>
- <li>Excessive garbage collection events slow down the app.
- </li>
-
- <li>The app runs out of memory, which causes it to crash.
- </li>
-
- <li>Potential memory leaks.
- </li>
-</ul>
-
-<p>
- For example, you might see the following signs of problems:
-</p>
-
-<ul>
- <li>Your app is static, but you see memory being allocated in the monitor.
- </li>
-
- <li>You see spikes of memory allocations in the monitor, but you don’t think there’s any app
- logic to cause this behavior.
- </li>
-</ul>
- <li>To stop the Memory Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select it.
- </li>
-
-</ol>
-
-<h2 id="forcing">
- Forcing a Garbage Collection Event
-</h2>
-
-<p>
- Normally, VMs perform garbage collection only when absolutely needed, since it’s expensive.
- However, it can be useful to force garbage collection in certain circumstances. For example, when
- locating memory leaks, if you want to determine whether a large object was successfully released
- already, you can initiate garbage collection much more aggressively than usual.
-</p>
-
-<p>
- To force a garbage collection event:
-</p>
-
-<ul>
- <li>While the <a href="#displaying">Memory Monitor is running</a>, click Initiate GC
- <img src="{@docRoot}images/tools/am-igc.png" style="vertical-align:sub;margin:0;height:17px"
- alt="Initiate GC icon" />.
- </li>
-</ul>
-
-<h2 id="snapshot">
- Taking a Snapshot of the Java Heap and Memory Allocation
-</h2>
-
-<p>
- You can take snapshots while the Memory Monitor is running or paused:
-</p>
-
-<ul>
- <li>To take and display a snapshot of the Java heap, see <a href=
- "{@docRoot}tools/help/am-hprof.html">HPROF Viewer and Analyzer</a>.
- </li>
- <li>To take and display a snapshot of memory allocation, see <a href=
- "{@docRoot}tools/help/am-allocation.html">Allocation Tracker</a>.
- </li>
-</ul>
-
diff --git a/docs/html/tools/help/am-methodtrace.jd b/docs/html/tools/help/am-methodtrace.jd
deleted file mode 100644
index 7d5f070..0000000
--- a/docs/html/tools/help/am-methodtrace.jd
+++ /dev/null
@@ -1,266 +0,0 @@
-page.title=Method Trace
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the CPU Monitor to perform a method trace on your app. View call stack and timing information in the method trace display.
-page.image=tools/help/thumbnails/am_methodtrace.png
-page.article=true
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
-<li><a href="#display">Understanding the Method Trace Display</a></li>
- <li><a href="#trace">Performing a Method Trace in the CPU Monitor</a></li>
- <li><a href="#viewtrace">Viewing a Saved Method Trace</a></li>
- <li><a href="#sorttrace">Sorting Method Trace Data</a></li>
- <li><a href="#trace-files">Working with Method Trace Files</a></li>
-</ol>
-
-</div>
-</div>
-
-
-<p>
- You can start a method trace from the CPU Monitor. It lets you view the call stack and timing
- information for your app. This information can help you optimize and debug your app.
-</p>
-
-<h2 id="display">
- Understanding the Method Trace Display
-</h2>
-
-<p>
- The method trace looks similar to the following figure:
-</p>
-<img src="{@docRoot}images/tools/am-methodtrace.png" alt="Method Trace" />
-<p></p>
-
-<p>The display shows the following information:</p>
-
-<table>
- <tr>
- <th scope="col">Field</th>
- <th scope="col">Description</th>
- </tr>
-
- <tr>
- <td><strong>Name</strong></td>
- <td>The name of the method.</td>
- </tr>
-
- <tr>
- <td><strong>Invocation Count</strong></td>
- <td>How many times the method was called.</td>
- </tr>
-
- <tr>
- <td><strong>Inclusive Time (microseconds)</strong></td>
- <td>Time spent in the method and all of its children, either wall clock or thread time,
- depending on your selection in the <strong>x-axis</strong> menu.</td>
- </tr>
-
- <tr>
- <td><strong>Exclusive Time (microseconds)</strong></td>
- <td>Time spent just in the method (excluding time spent in its children), either wall clock
- or thread time, depending on your selection in the <strong>x-axis</strong> menu.</td>
- </tr>
-</table>
-
-<p class="note"><strong>Note:</strong> Running the method trace significantly affects CPU timings.
- Use the method trace to understand the flow of the program, but not for performance timings.</p>
-
-<h2 id="trace">
- Performing a Method Trace in the CPU Monitor
-</h2>
-
-<p>
- To perform a method trace:
-</p>
-
-<ol>
- <li>
- <a href="{@docRoot}tools/help/am-cpu.html#running">Display a running app in the CPU
- Monitor</a>.
- </li>
-
- <li>Start a trace by clicking Start Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Start Method Tracing icon" /> to
- select it.
- </li>
-
- <li>To stop the trace, click Stop Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Stop Method Tracing icon" /> to
- deselect it.
- </li>
-
-<p>
- The method trace appears in the Code Editor area.
-</p>
-
-<p>
- Android Studio creates the method trace file
- with the filename <code><em>package_yyyy.mm.dd_hh.mm.ss</em>.trace</code>
- using the activity package (or project) name, year, month, day, hour, minute, and second of
- the capture, for example,
- <code>com.android.calc_2015.11.17_14.58.48.trace</code>.
-</p>
- <li>Specify display options:
- <ul>
- <li>Select a <strong>Thread</strong>.
- </li>
-
- <li>Select an <strong>x-axis</strong> time for the graphic and the method list:
- </li>
-
- <ul>
- <li>
- <strong>Wall Clock Time</strong> - Total CPU time elapsed between the method call and
- return.
- </li>
-
- <li>
- <strong>Thread Time</strong> - Total time during which the JRE scheduled the
- thread during call processing. It’s less than or equal to the Wall Clock Time: less if
- the JRE interrupted the thread, and equal if it didn’t.
- The thread might not run continuously; when it’s not executing, that time is excluded.
- If threads are interrupted often and it’s not by design, the interruptions affect app
- performance. However, an example of a by-design use is synchronous operations that take
- a long time, such as file transfers and reads from disk, where the method could be the
- asynchronous wrapper for the synchronous reader.
- </li>
- </ul>
-
- <li>
- Optionally select <strong>Color by inclusive time</strong>.
- </li>
- </ul>
-
-
-
- <p>
- The graphic represents the wall clock or thread time for each method. Hover the cursor
- over the display to receive information about the method. This information also appears
- in the table.
- </p>
-</ol>
- <h2 id="viewtrace">
- Viewing a Saved Method Trace
- </h2>
-
- <p>
- After you do a method trace, Android Studio automatically stores it so you can view it
- again.</p>
-
- <p>To examine a saved method trace:
- </p>
-
- <ol>
- <li>Click
- <img src="{@docRoot}images/tools/am-icaptures.png"
- style="vertical-align:sub;margin:0;height:17px"
- alt="Captures icon" /> in the main window.
- </li>
- <p>Or select <strong>View</strong> > <strong>Tools Windows</strong> >
- <strong>Captures</strong>.</p>
-
- <p>
- The <em>Captures</em> window appears.
- </p>
-
- <li>Open the <strong>Methods Tracing</strong> folder.
- </li>
-
- <li>Double-click the file to view it.
- </li>
-</ol>
-
-<h2 id="sorttrace">
- Sorting Method Trace Data
-</h2>
-
-<p>
- You can sort the data by method name, count, inclusive time, and exclusive
- time.</p>
-
- <p>To sort method trace data:</p>
-
-
-<ul>
- <li>Click a column heading to sort the table by ascending or descending order.
- </li>
-</ul>
-
-<h2 id="trace-files">Working with Method Trace Files</h2>
-<p>You can rename, locate, and delete a method trace file from within Android
-Studio.</p>
-
-<h3 id="renametrace">
- Renaming a method trace file
-</h3>
-
-<p>
- Rename a method trace file from within Android Studio so it
- continues to appear in the <em>Captures</em> window.</p>
-
- <p>To rename a method trace file:
-</p>
-
-<ol>
- <li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>.
- </li>
-
- <li>In the dialog, specify the name of the file and click <strong>OK</strong>.
- </li>
-</ol>
-
-<h3 id="locatetrace">
- Locating a method trace file on disk
-</h3>
-
-<p>
- You can quickly discover where Android Studio stored method trace files on
- disk.</p>
-
- <p>To locate a method trace file on disk:
-</p>
-
-
-
-<ul>
- <li>In the <em>Captures</em> window, right-click a method trace file and
- select <strong>Show</strong> or <strong>Reveal</strong>.
- </li>
-
-<p>
- Android Studio opens an operating system file browser displaying the location where the file
- resides.
-</p>
-</ul>
-<p class="note">
- <strong>Note:</strong> If you move a method trace file, Android Studio no longer displays the file
- in the <em>Captures</em> window. To display it, use <strong>File</strong> >
- <strong>Open</strong>. Also, rename a file from the <em>Captures</em>
- window and not in the operating system file browser.
-</p>
-
-<h3 id="deletetrace">
- Deleting a method trace file
-</h3>
-
-<p>
- To delete a method trace file:
-</p>
-
-<ul>
- <li>In the <em>Captures</em> window, right-click a method trace file and select
- <strong>Delete</strong>.
- </li>
-</ul>
-
-<p>
- Android Studio deletes the file from the <em>Captures</em> dialog and from disk.
-</p>
\ No newline at end of file
diff --git a/docs/html/tools/help/am-network.jd b/docs/html/tools/help/am-network.jd
deleted file mode 100644
index 8129992..0000000
--- a/docs/html/tools/help/am-network.jd
+++ /dev/null
@@ -1,87 +0,0 @@
-page.title=Network Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the Network Monitor to analyze network requests, including how and when your app transfers data. Preserve battery life by optimizing network use.
-page.image=tools/help/thumbnails/am-networkmon.png
-page.article=true
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#running">Displaying a Running App in the Network Monitor</a></li>
-</ol>
-
-<h2>Video</h2>
- <ol>
- <li><a href="https://www.youtube.com/watch?v=fEEulSk1kNY"
- class="external-link">Battery Drain and Networking</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>
- The Network Monitor makes it possible to track when your application is making network requests.
- Using this tool, you can monitor how and when your app transfers data, and optimize the underlying
- code appropriately.
-</p>
-
-<p>
- By monitoring the frequency of data transfers, and the amount of data transferred during each
- connection, you can identify areas of your app that can be made more efficient and use less
- battery power.
- Generally, you should look for short spikes that can be delayed, or that could cause a later
- transfer to be preempted.
-</p>
-
-
-<h2 id="running">
- Displaying a Running App in the Network Monitor
-</h2>
-
-<p>
- To display an app running on a particular device in the Network Monitor:
-</p>
-
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <p>Connect a hardware device; the Network Monitor doesn't monitor an emulator.
- </p>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on the hardware device.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
- <li>Click the <strong>Monitors</strong> tab and <a href=
- "{@docRoot}tools/help/am-basics.html#rearranging">display the Network Monitor</a>.
- </li>
-
- <li>Enable the Network Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect it.
- </li>
-
-<p>
- Any network traffic begins to appear in the Network Monitor:
-</p>
- <img src="{@docRoot}images/tools/am-networkmon2.png" style="vertical-align:sub;margin:0" />
-<p>
- The Network Monitor adds up the amount of time it takes for the device to transmit and receive
- kilobytes of data.
- The y-axis is in kilobytes per second. The x-axis starts with seconds, and then minutes and
- seconds, and so on.
-</p>
- <li>To stop the Network Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to
- select it.
- </li>
-</ol>
\ No newline at end of file
diff --git a/docs/html/tools/help/am-screenshot.jd b/docs/html/tools/help/am-screenshot.jd
deleted file mode 100644
index 322616e..0000000
--- a/docs/html/tools/help/am-screenshot.jd
+++ /dev/null
@@ -1,89 +0,0 @@
-page.title=Screen Capture
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the Screen Capture tool to take a screenshot of the display on a hardware device or the emulator. Optionally display the screenshot within a graphic of a device.
-page.image=tools/help/thumbnails/am_screenshot.png
-page.article=true
-@jd:body
-
-
-<p>
- You can take a PNG screenshot of the display on a connected device or the emulator. You can use
- the images for your marketing materials as well as for debugging, for example.
-</p>
-
-
-<h2 id="screencapture">
- Taking a Screen Capture of the Device
-</h2>
-
-
-<p>
- To take a screen capture:
-</p>
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on
- a hardware device or emulator.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
-
- <li>Interact with the display on the device or emulator to stage the image you want.
- </li>
-
- <li>Click Screen Capture <img src="{@docRoot}images/tools/am-iscreencapture.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Screen Capture icon" /> in the
- Android Monitor toolbar.
- </li>
- <p>The screenshot appears in a <em>Screenshot Editor</em> window.</p>
-
-<img src="{@docRoot}images/tools/am-screenshot.png" alt="Screen Capture" />
-
- <li>Optionally change the image:
- <ul>
- <li>
- <strong>Recapture</strong> - Click to take a new screenshot.
- </li>
-
- <li>
- <strong>Rotate</strong> - Click to rotate the image 90 degrees clockwise.
- </li>
-
- <li>
- <strong>Frame Screenshot</strong> - Select this option and choose a device to add an image
- of the device to the outside of the screenshot. Select <strong>Drop Shadow</strong>,
- <strong>Screen Glare</strong>, or both to add these effects to your image.
- </li>
-
- <li>
- <strong>Chessboard</strong> and <strong>Grid</strong> - Select an option to display these
- behind your image.
- </li>
-
- <li>
- <strong>Zoom In</strong>, <strong>Zoom Out</strong>, or <strong>Actual Size</strong> -
- Click these options to get different perspectives of your image without changing the image
- itself.
- </li>
- </ul>
- </li>
- <li>Click <strong>Save</strong> to save the image.
- </li>
- </li>
- <li>In the <em>Save as PNG</em> dialog, specify the location and filename,
- and then click <strong>OK</strong>.
- </li>
- <p>The screenshot file appears in the Code Editor area.</p>
-</ol>
-
-
-
diff --git a/docs/html/tools/help/am-sysinfo.jd b/docs/html/tools/help/am-sysinfo.jd
deleted file mode 100644
index 166cc08..0000000
--- a/docs/html/tools/help/am-sysinfo.jd
+++ /dev/null
@@ -1,205 +0,0 @@
-page.title=System Information
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the System Information tool to capture <code>dumpsys</code> information about your app. View activity manager, package, memory usage, and graphics state information.
-page.image=tools/help/thumbnails/am_sysinfo.png
-page.article=true
-@jd:body
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#sysinfo">Examining System Information for a Running App</a></li>
- <li><a href="#viewsysinfo">Viewing Saved System Information</a></li>
- <li><a href="#sysinfo-files">Working with System Information Files</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>
- You can capture <code>dumpsys</code> output from within Android Monitor and
- display the file in the Code Editor. The <em>Captures</em> window lists the
- system information files so you can retrieve the information later for
- analysis.
-</p>
-
-
-
-<h2 id="sysinfo">
- Examining System Information for a Running App
-</h2>
-<p>
- To capture and view a snapshot of system information:
-</p>
-
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on
- a hardware device or emulator.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
-
- <li>In the toolbar of the Android Monitor main window, click System Information
- <img src="{@docRoot}images/tools/am-isysteminfo.png"
- style="vertical-align:sub;margin:0;height:17px" alt="System Information icon" />
- and then select a menu item.
- </li>
-
-<p>
- The menu items display different types of <code><a href=
- "https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></code>
- output:
-</p>
-
-<ul>
- <li>
- <strong>Activity Manager State</strong> - <code>dumpsys activity</code>
- </li>
-
- <li>
- <strong>Package Information</strong> - <code>dumpsys package</code>
- </li>
-
- <li>
- <strong>Memory Usage</strong> - <code><a href=
- "{@docRoot}tools/debugging/debugging-memory.html#ViewingAllocations">dumpsys
- meminfo</a></code>
- </li>
-
- <li>
- <strong>Memory Use Over Time</strong> - <code><a href=
- "http://android-developers.blogspot.com/2014/01/process-stats-understanding-how-your.html">dumpsys
- procstats</a></code>
- </li>
-
- <li>
- <strong>Graphics State</strong> - <code><a href=
- "{@docRoot}training/testing/performance.html">dumpsys gfxinfo</a></code>
- </li>
-</ul>
-
-<p>
- The information appears in an editable text file in the Code Editor.
-</p>
-<img src="{@docRoot}images/tools/am-sysinfo.png" alt="System Information" />
-<p>Android Studio creates the system information file with the
- filename <code><em>package_yyyy.mm.dd_hh.mm.ss</em>.txt</code> using the
- activity package (or project) name, year, month, day,
- hour, minute, and second of the capture, for example,
- <code>com.android.calc_2015.11.17_14.58.48.txt</code>.</p>
-</ol>
-
-<h2 id="viewsysinfo">
-Viewing Saved System Information
-</h2>
-
-<p>
-After you take a snapshot of system information, Android Studio automatically
-stores it so you can view it again.</p>
-
-<p>To examine a saved system information file:</p>
-
-<ol>
- <li>Click
- <img src="{@docRoot}images/tools/am-icaptures.png"
- style="vertical-align:sub;margin:0;height:17px"
- alt="Captures icon" /> in the main window.
- </li>
- <p>Or select <strong>View</strong> > <strong>Tools Windows</strong> >
- <strong>Captures</strong>.</p>
-
- <p>
- The <em>Captures</em> window appears.
- </p>
-
- <li>Open the <strong>System Information</strong> folder.
- </li>
-
- <li>Double-click the file to view it.
- </li>
-</ol>
-
-
-<h2 id="sysinfo-files">Working with System Information Files</h2>
-<p>You can rename, locate, and delete a system information file from within
-Android Studio.</p>
-
-<h3 id="renamesysinfo">
- Renaming a system information file
-</h3>
-
-<p>
- Rename a system information file from within Android Studio so it
- continues to appear in the <em>Captures</em> window.</p>
-
- <p>To rename a system information file:
-</p>
-
-<ol>
- <li>In the <em>Captures</em> window, right-click the file and select
- <strong>Rename</strong>.
- </li>
-
- <li>In the dialog, specify the name of the file and click <strong>OK</strong>.
- </li>
-</ol>
-
-<h3 id="locatesysinfo">
- Locating a system information file on disk
-</h3>
-
-<p>
- You can quickly discover where Android Studio stored system information files
- on disk.</p>
-
- <p>To locate a system information file on disk:
-</p>
-
-
-
-<ul>
- <li>In the <em>Captures</em> window, right-click a system information file and
- select <strong>Show</strong> or <strong>Reveal</strong>.
- </li>
-
-<p>
- Android Studio opens an operating system file browser displaying the location
- where the file resides.
-</p>
-</ul>
-<p class="note">
- <strong>Note:</strong> If you move a system information file, Android Studio
- no longer displays the file
- in the <em>Captures</em> window. To display it, use <strong>File</strong> >
- <strong>Open</strong>. Also, rename a file from the <em>Captures</em>
- window and not in the operating system file browser.
-</p>
-
-<h3 id="deletesysinfo">
- Deleting a system information file
-</h3>
-
-<p>
- To delete a system information file:
-</p>
-
-<ul>
- <li>In the <em>Captures</em> window, right-click a system information file
- and select <strong>Delete</strong>.
- </li>
-</ul>
-
-<p>
- Android Studio deletes the file from the <em>Captures</em> dialog and from
- disk.
-</p>
diff --git a/docs/html/tools/help/am-video.jd b/docs/html/tools/help/am-video.jd
deleted file mode 100644
index 5ecdd11..0000000
--- a/docs/html/tools/help/am-video.jd
+++ /dev/null
@@ -1,78 +0,0 @@
-page.title=Video Capture
-parent.title=Android Monitor
-parent.link=android-monitor.html
-meta.tags="android, performance, profiling, tools, monitor"
-page.tags="android", "performance", "profiling", "tools", "monitor"
-page.metaDescription=Use the Video tool to make a video of the display on a hardware device.
-page.image=tools/help/thumbnails/am_video.png
-page.article=true
-@jd:body
-
-
-<p>
- Android Studio lets you record an MP4 video from your hardware device for a maximum of three
- minutes. You can use the video for your marketing materials as well as for debugging, for
- example.
-</p>
-<img src="{@docRoot}images/tools/am-video.png" width="230" alt="Device Video" />
-
-
-
-<h2 id="video">
- Recording a Video from the Screen
-</h2>
-
-<p>
- To record a video from a hardware device:
-</p>
-<ol>
- <li>Meet the <a href=
- "{@docRoot}tools/help/am-basics.html#byb">prerequisites and dependencies</a>.
- </li>
- <li>Open an app project.
- </li>
- <li><a href=
- "{@docRoot}tools/building/building-studio.html#RunningApp">Run the app</a> on
- a hardware device.
- </li>
- <li>
- <a href="{@docRoot}tools/help/am-basics.html#displaying">Display Android Monitor</a>.
- </li>
-
- <li>Interact with the display on the hardware device to stage the start of the video.
- </li>
-
- <li>Click Screen Record <img src="{@docRoot}images/tools/am-ivideo.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Screen Record icon" /> in the
- Android Monitor toolbar.
- </li>
- <p>The screenshot appears in a Screenshot Editor window.</p>
-
- <li>In the <em>Screen Recorder Options</em> dialog, optionally change the recording options:
- </li>
-<ul>
- <li>
- <strong>Bit Rate</strong> - Type a bit rate. The default is 4 Mbps.
- </li>
-
- <li>
- <strong>Resolution</strong> - Type a width and height value in pixels. The value must be a
- multiple of 16. The default is the resolution of the device.
- </li>
-</ul>
- <li>Click <strong>Start Recording</strong> to start the recording.
- </li>
-
- <li>Click <strong>Stop Recording</strong> to stop the recording.
- </li>
-
- <li>In the <em>Save As</em> dialog, save the MP4 file.
- </li>
-
- <li>In the <em>Screen Recorder</em> dialog, click one of the buttons to show the file location,
- open the recording in a player, or to dismiss the dialog.
- </li>
-</ol>
-
-
-
diff --git a/docs/html/tools/help/android-monitor.jd b/docs/html/tools/help/android-monitor.jd
deleted file mode 100644
index 2820db8..0000000
--- a/docs/html/tools/help/android-monitor.jd
+++ /dev/null
@@ -1,106 +0,0 @@
-page.title=Android Monitor
-parent.title=Tools
-parent.link=index.html
-page.tags=monitor
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#logcat">Log Messages</a></li>
- <li><a href="#monitors">Performance Monitors</a></li>
- <li><a href="#data">Data Analysis</a></li>
- <li><a href="#shots">Screen and Video Captures</a></li>
- <li><a href="#getstarted">Get Started</a></li>
-</ol>
-
-
-
-
-
-</div>
-</div>
-
-<p>
- Android Monitor helps you to profile the performance of your apps so you can optimize, debug, and
- improve them. It lets you monitor the following aspects of your apps from a hardware device or
- the <a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a>:
-</p>
-
-<ul>
- <li>
- <a href="{@docRoot}reference/android/util/Log.html">Log</a> messages, either
- system- or user-defined
- </li>
-
- <li>Memory, CPU, and GPU usage
- </li>
-
- <li>Network traffic (hardware device only)
- </li>
-</ul>
-
-
-<p>Android Monitor provides various tools that provide real-time information about your app. It
- lets you capture data as your app runs and stores it in a file that you can analyze in various
- viewers. You can also capture screen shots and videos of your app as it runs.</p>
-
-<h2 id="logcat">Log Messages</h2>
-
-<p>View log messages — in real time and historically — which is useful for debugging.</p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/help/log"
- data-cardSizes="12x6"
- data-maxResults="6">
- </div>
-</div>
-
-
-<h2 id="monitors">Performance Monitors</h2>
-
-<p>Visualize the behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/help/monitor"
- data-cardSizes="9x6"
- data-maxResults="6">
- </div>
-</div>
-
-<h2 id="data">Data Analysis</h2>
-
-<p>Android Monitor lets you capture various types of data about your app while it's running and
- stores it in a file, which you can access whenever is convenient.
- It lists these files in the <em>Captures</em> window.</p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/help/data"
- data-cardSizes="9x6"
- data-maxResults="6">
- </div>
-</div>
-
-<h2 id="shots">Screen and Video Captures</h2>
-
-<p>Create screen captures and videos of your app to help with marketing and debugging.
- </p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/help/shot"
- data-cardSizes="9x3"
- data-maxResults="2">
- </div>
-</div>
-
-<h2 id="getstarted">Get Started</h2>
-<p>To begin using Android Monitor, start with <a href=
- "{@docRoot}tools/help/am-basics.html">Android Monitor Basics</a>.
- </p>
-
-
diff --git a/docs/html/tools/help/android.jd b/docs/html/tools/help/android.jd
deleted file mode 100755
index fa359e9..0000000
--- a/docs/html/tools/help/android.jd
+++ /dev/null
@@ -1,418 +0,0 @@
-page.title=android
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>{@code android} is an important development tool that lets you:</p>
-
- <ul>
- <li>Create, delete, and view Android Virtual Devices (AVDs). See <a href=
- "{@docRoot}tools/devices/managing-avds-cmdline.html">Managing AVDs from the Command Line</a>.</li>
-
- <li>Create and update Android projects. See <a href=
- "{@docRoot}tools/projects/projects-cmdline.html">Managing Projects from
- the Command Line</a>.</li>
-
- <li>Update your Android SDK with new platforms, add-ons, and documentation. See <a href=
- "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.</li>
- </ul>
-
-<p>If you are using Android Studio, the <code>android</code> tool's features are
-integrated into the IDE, so you should not need to use this tool directly. </p>
-
- <p class="note"><strong>Note:</strong> The documentation of options below is not exhaustive
-and may be out of date. For the most current list of options, execute <code>android
---help</code>.</p>
-
-
-
-
- <h2>Syntax</h2>
- <pre>android [global options] action [action options]</pre>
-
- <h3>Global Options</h3>
-
- <dl>
- <dt><code>-s</code></dt>
-
- <dd>Silent mode: only errors are printed out</dd>
-
- <dt><code>-h</code></dt>
-
- <dd>Usage help</dd>
-
- <dt><code>-v</code></dt>
-
- <dd>Verbose mode: errors, warnings and informational messages are printed.</dd>
- </dl>
-
- <h3>AVD actions and options</h3>
-
- <table>
- <tr>
- <th width="15%">Action</th>
-
- <th width="20%">Option</th>
-
- <th width="30%">Description</th>
-
- <th>Comments</th>
- </tr>
-
- <tr>
- <td><code>avd</code></td>
-
- <td>None</td>
-
- <td>Launch the AVD Manager</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>sdk</code></td>
-
- <td>None</td>
-
- <td>Launch the Android SDK Manager</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td rowspan="6"><code>create avd</code></td>
-
- <td><code>-n <name></code></td>
-
- <td>The name for the AVD.</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-t <targetID></code></td>
-
- <td>Target ID of the system image to use with the new AVD. To obtain a list of available
- targets, use <code>android list targets</code></td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-c <path>|<size>[K|M]</code></td>
-
- <td>The path to the SD card image to use with this AVD or the size of a new SD card image to
- create for this AVD. For example, <code>-c path/to/sdcard</code> or <code>-c
- 1000M</code>.</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-f</code></td>
-
- <td>Force creation of the AVD</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-p <path></code></td>
-
- <td>Path to the location at which to create the directory for this AVD's files.</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-s <name>|<width>-<height></code></td>
-
- <td>The skin to use for this AVD, identified by name or dimensions. The <code>android</code>
- tool scans for a matching skin by name or dimension in the <code>skins/</code> directory of
- the target referenced in the <code>-t <targetID></code> argument. For example, <code>-s
- HVGA-L</code></td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>delete avd</code></td>
-
- <td><code>-n <name></code></td>
-
- <td>The name of the AVD to delete</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td rowspan="3"><code>move avd</code></td>
-
- <td><code>-n <name></code></td>
-
- <td>The name of the AVD to move</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-p <path></code></td>
-
- <td>Path to the location at which to create the directory for this AVD's files.</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-r <new-name></code></td>
-
- <td>New name of the AVD if you want to rename it</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>update avd</code></td>
-
- <td><code>-n <name></code></td>
-
- <td>The name of the AVD to move</td>
-
- <td>Required</td>
- </tr>
- </table>
-
- <h3>Project actions and options</h3>
-
- <table>
- <tr>
- <th width="15%">Action</th>
-
- <th width="20%">Option</th>
-
- <th width="30%">Description</th>
-
- <th>Comments</th>
- </tr>
-
- <tr>
- <td rowspan="5"><code>create project</code></td>
-
- <td><code>-n <name></code></td>
-
- <td>The name for the project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-t <targetID></code></td>
-
- <td>Target ID of the system image to use with the new AVD. To obtain a list of available
- targets, use <code>android list targets</code></td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-k <path>|<size>[K|M]</code></td>
-
- <td>Package namespace</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-a</code></td>
-
- <td>Name for the default Activity class</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-p <path></code></td>
-
- <td>Location of your project directory</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td rowspan="5"><code>update project</code></td>
-
- <td><code>-n <name></code></td>
-
- <td>The name of the project to update</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-p <path></code></td>
-
- <td>Location path of the project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-l <library path></code></td>
-
- <td>Location path of an Android Library to add, relative to the main project</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-s <subprojects></code></td>
-
- <td>Update any projects in subfolders such as test projects</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-t <targetID></code></td>
-
- <td>Target id to set for the project</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td rowspan="3"><code>create test-project</code></td>
-
- <td><code>-n <name></code></td>
-
- <td>The name of the project</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-p <path></code></td>
-
- <td>Location path of the project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-m <main></code></td>
-
- <td>The name of the project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td rowspan="2"><code>update test-project</code></td>
-
- <td><code>-p <path></code></td>
-
- <td>Location path of the project to test, relative to the new project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-m <main></code></td>
-
- <td>The main class of the project to test</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td rowspan="4"><code>create lib-project</code></td>
-
- <td><code>-k <packageName></code></td>
-
- <td>(Required) Package name of the library project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-p <path></code></td>
-
- <td>Location path of the project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-t <targetID></code></td>
-
- <td>Target ID of the library project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-n <name></code></td>
-
- <td>The name of the project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td rowspan="3"><code>update lib-project</code></td>
-
- <td><code>-p <path></code></td>
-
- <td>Location path of the project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-l <libraryPath></code></td>
-
- <td>Location path of an Android Library to add, relative to the main project</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td><code>-t <name></code></td>
-
- <td>Target ID of the library project</td>
-
- <td></td>
- </tr>
-
- <tr>
- <td rowspan="3"><code>create uitest-project</code></td>
- <td><code>-n <name></code></td>
- <td>The name of the UI test project</td>
- <td></td>
- </tr>
-
- <tr>
- <td><code>-t <name></code></td>
-
- <td>Target ID of the UI test project</td>
-
- <td>Required</td>
- </tr>
-
- <tr>
- <td><code>-p <path></code></td>
-
- <td>Location path of the UI test project</td>
-
- <td>Required</td>
- </tr>
-
- </table>
-
- <h3>Update actions</h3>
- <dl>
- <dt><code>update adb</code></dt>
- <dd>Updates adb to support the USB devices declared in the SDK add-ons.</dd>
-
- <dt><code>update sdk</code></dt>
- <dd>Updates the SDK by suggesting new platforms to install if available.</dd>
diff --git a/docs/html/tools/help/app-link-indexing.jd b/docs/html/tools/help/app-link-indexing.jd
deleted file mode 100644
index 5b76059..0000000
--- a/docs/html/tools/help/app-link-indexing.jd
+++ /dev/null
@@ -1,609 +0,0 @@
-page.title=Supporting URLs and App Indexing in Android Studio
-parent.title=Tools
-parent.link=index.html
-page.tags=app indexing
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#workflow">Typical Workflow</a></li>
- <li><a href="#intent">Adding an Intent Filter for URL Support and Google Search</a></li>
- <li><a href="#indexing">Adding App Indexing API Skeleton Code to an Activity</a></li>
- <li><a href="#testintent">Testing a URL</a></li>
- <li><a href="#testindexing">Viewing App Indexing API Messages in the logcat Monitor</a></li>
- <li><a href="#lint">Configuring Lint</a></li>
- <li><a href="#appindexingtest">Performing a Google App Indexing Test</a></li>
-
-</ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="https://developers.google.com/app-indexing/introduction"
- class="external-link">App Indexing</a></li>
- <li><a href="{@docRoot}training/app-indexing/index.html"
- >Making Your App Content Searchable by Google</a></li>
- <li><a href="{@docRoot}training/app-links/index.html">Handling App Links</a></li>
- <li><a href="{@docRoot}tools/debugging/improving-w-lint.html"
- >Improving Your Code with lint</a></li>
- <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a></li>
- <li><a href="https://www.google.com/webmasters/tools/home"
- class="external-link">Google Search Console</a></li>
- <li><a href="https://developers.google.com/android/guides/overview"
- class="external-link">Google Play Services</a></li>
- </ol>
-
- <h2>Video</h2>
- <ol>
- <li><a href="https://www.youtube.com/watch?v=aISUYHTkTOU"
- class="external-link">DevBytes: App Indexing</a></li>
- </ol>
-
- <h2>Dependencies and prerequisites</h2>
- <ul>
- <li>Android 2.3 (API level 9) or higher</li>
- <li>Android Studio 1.5 or higher</li>
- <li>Google Play Services 8.1.0 or higher</li>
- </ul>
-
-</div>
-</div>
-
-<p>Android Studio helps you add support for URLs, app indexing, and search
-functionality to your apps.
- These features can help to drive more traffic to your
- app, discover which app content is used most, make it easier for users to find content in an
- installed app, and attract new users.</p>
-
-<h2 id="workflow">Typical Workflow</h2>
-
-<p>To use Android Studio to add support for URL, app indexing, and search
-features to your app:</p>
-
-<ol>
-<li>Add intent filters and code to handle incoming intents.</li>
-<li>Associate a website with your app.</li>
-<li>Add App Indexing API code.</li>
-</ol>
-
-<p>Intent filters and the App Indexing API are ways to implement URL support
-and app indexing, but
- there are other possible implementations as well. See
- <a href="https://developers.google.com/app-indexing/reference/deeplinks"
- class="external-link">Alternate Android Indexing Methods</a>
- for more information.</p>
-
-<h3 id="aboutintent">Intent filters for URLs</h3>
-
-<p>Android Studio can create a basic intent filter in your manifest that you can customize to
- define URLs for your app. You can then write Java code in an activity to handle the
- intent. This implementation lets users directly open the specified app activity by
- clicking a URL. Users can see the URLs in google.com in a browser, in the
- Google Search app, and in Google Now on Tap. </p>
-
-<h3 id="aboutassociation">Website association with URLs</h3>
-
-<p>After setting up URL support for your app, you can associate your website
-with your app by using
- the Google Search Console and Google Play Developer Console. Afterward, Google indexes your app
- for URLs defined in
- your intent filters and begins to include them in search results. In addition, you can optionally
- exclude app content from Google Search. After you associate a website with your app, features
- such as Now on Tap and enhanced search result display (like including your app icon)
- become available.</p>
-
-<p>As an alternative to associating your app with a website,
- for Android 6.0 (API level 23) and higher, you can add
- <a href="{@docRoot}training/app-links/index.html"
- >default handlers and verification for URLs</a>
- instead.</p>
-
-<p>Chrome displaying google.com serves search results with URLs that are accessible to both
- signed-in users and those who aren't. Google Search app users must be signed in to see URLs
- in their search results. </p>
-
-<h3 id="aboutapi">App Indexing API code in activities</h3>
-
-<p>Next, if you want to support additional search features, such as autocompletions, you can
- add App Indexing API code to your app. Android Studio can create skeleton code in an activity
- that you can then customize to support app indexing. The App Indexing API allows app indexing
- even if
- <a href="https://developers.google.com/app-indexing/reference/deeplinks#allow-access-by-googlebot-optional"
- class="external-link">Googlebot</a>
- can’t get content from your app.</p>
-
-<h3 id="abouttest">URL support and App Indexing API testing</h3>
-
-<p>Android Studio helps you test your code with the following features:</p>
-
-<ul>
-<li>URL support testing helps you verify that a specified URL can launch an app.
-</li>
-<li>The logcat Monitor helps you test App Indexing API calls in an activity. </li>
-<li>The Android Lint tool has warnings for certain issues involving URL support
-and the App Indexing
- API. These warnings and errors appear in the Code Editor and in Lint inspection results.</li>
- <li>A Google App Indexing test checks whether Google can index a URL by
- either crawling your app page or using the App Indexing API.</li>
-</ul>
-
-<p>The details for implementing URL support and app indexing are described next.
-
-
-<h2 id="intent">Adding an Intent Filter for URL Support and Google Search</h2>
-
-<p>To use Android Studio features to add an intent filter defining a URL:</p>
-
-<ol>
-<li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
- of the <em>Project</em> window, double-click the <code>AndroidManifest.xml</code> file to open it
- in the Code Editor.</li>
-<li>Insert an intent filter in one of the following ways:</li>
-<ul>
-<li>In an <code><activity></code> element, click in the left column so the light bulb
- <img src="{@docRoot}images/tools/ai-ilightbulb.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" /> appears. Click
- <img src="{@docRoot}images/tools/ai-ilightbulb.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" />
- and select <strong>Create URL</strong>.</li>
-<li>Right-click in an <code><activity></code> element and select <strong>Generate</strong>
- > <strong>URL</strong>.</li>
-<li>Place your cursor in an activity, and then select <strong>Code</strong> >
- <strong>Generate</strong> > <strong>URL</strong>.</li>
-</ul>
-
-<p>The Code Editor adds skeleton code using the
- <a href="https://www.jetbrains.com/idea/help/intention-actions.html"
- class="external-link">intention action</a> and
- <a href="https://www.jetbrains.com/idea/help/generating-code.html"
- class="external-link">generate code</a> mechanisms.</p>
-
-<p>The Code Editor adds an intent filter similar to the following:</p>
-<pre>
-<!-- ATTENTION: This intent was auto-generated. Follow instructions at
- https://g.co/AppIndexing/AndroidStudio to publish your URLs. -->
-<intent-filter>
- <action android:name="android.intent.action.VIEW" />
-
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <!-- ATTENTION: This data URL was auto-generated.
- We recommend that you use the HTTP scheme.
- TODO: Change the host or pathPrefix as necessary. -->
- <data
- android:host="www.example.com"
- android:pathPrefix="/gizmos"
- android:scheme="http" />
-</intent-filter>
-</pre>
-
-<li><a href="{@docRoot}training/app-indexing/deep-linking.html#adding-filters">Modify the
- <code><data></code> element</a>
- and optionally the <code><category></code> element, as needed.</li>
-
-
-<p>We recommend that you define a <code><data></code> element that supports URLs that you’ll
- add in the future. In the previous sample code, for example, Google will index any URLs starting
- with <code>http://www.example.com/gizmos</code>. Also, remember to
- include a URL for your app home screen so it’s included in search results. </p>
-
-<p>The URLs you specify in your intent filters can be the same as the URLs of
-the comparable pages on your website.</p>
-
-<li>In the corresponding activity,
- <a href="{@docRoot}training/app-indexing/deep-linking.html#handling-intents">add Java code</a>
- to read data from the intent filter and direct the app to respond accordingly. </li>
-<li><a href="#testintent">Test your URL</a>.</li>
-
-</ol>
-
-<p>To support Google Search for your URLs:</p>
-<ol>
-<li><a href="https://developers.google.com/app-indexing/android/app#declare-a-website-association"
- class="external-link">Define an association</a>
- between your app and your website.</li>
-<p>Alternatively, for Android 6.0 (API level 23) and higher, add
- <a href="{@docRoot}training/app-links/index.html">link default handling and verification</a>.</p>
-<li>Optionally
- <a href="https://developers.google.com/app-indexing/android/app#create-the-noindexxml-file"
- class="external-link">exclude certain URLs</a>
- from the Google index.</li>
-<li>Optionally <a href="#indexing">add App Indexing API code</a> to support additional search
- features.</li>
-</ol>
-
-
-<p>To test and debug your links, you can use the following Android Studio features:</p>
-<ul>
-<li><a href="#testintent">Launch your URL</a> in Android Studio to test that it works.</li>
-<li><a href="#lint">Enable the following Android Lint categories</a>:</li>
-<ul>
-<li><strong>Missing support for Google App Indexing</strong></li>
-<li><strong>URL not supported by app for Google App Indexing</strong></li>
-</ul>
-<li><a href="#appindexingtest">Perform a Google App Indexing Test</a>.</li>
-</ul>
-
-<p>In addition, you can
- <a href="https://developers.google.com/app-indexing/android/test#preview-your-apk-on-search-console"
- class="external-link">preview your APK in the Google Search Console</a>
- to test your URLs, whether the app is associated with a website or not. </p>
-
-
-
-<h2 id="indexing">Adding App Indexing API Skeleton Code to an Activity</h2>
-
-<p>After adding URL support to your app, you can add App Indexing API code to
-an activity to support additional search features. </p>
-
-<p>To add App Indexing API code to an activity:</p>
-<ol>
-<li>In <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
- in the <em>Project</em> window, double-click the activity Java file to open it in the
- Code Editor.</li>
-<li>Insert skeleton code in one of the following ways:</li>
-<ul>
-<li>In an activity definition, click in the Java code so the light bulb
- <img src="{@docRoot}images/tools/ai-ilightbulb.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" /> appears.
- Click <img src="{@docRoot}images/tools/ai-ilightbulb.png"
- style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" />
- and select <strong>Insert App Indexing API Code</strong>.</li>
-<li>Right-click in an activity definition and select <strong>Generate</strong> >
- <strong>App Indexing API Code</strong>.</li>
-<li>Place the cursor in an activity, and then select <strong>Code</strong> >
- <strong>Generate</strong> >
- <strong>App Indexing API Code</strong>.</li>
-</ul>
-
-
-<p>The Code Editor adds skeleton code using the
- <a href="https://www.jetbrains.com/idea/help/intention-actions.html"
- class="external-link">intention action</a> and
- <a href="https://www.jetbrains.com/idea/help/generating-code.html"
- class="external-link">generate code</a>
- mechanisms.</p>
-
-<p>If you don’t see the <strong>App Indexing API Code</strong> menu item, make sure your cursor is
- within an activity, and check your code for App Indexing API methods. The Code Editor can insert
- skeleton Java code into an activity in the following circumstances:</p>
-
-<ul>
-<li>The activity doesn’t have an <code>onStart()</code> method, or the <code>onStart()</code>
- method doesn’t contain an <code>AppIndexApi.start()</code> or <code>AppIndexApi.view()</code>
- call.</li>
-<li>The activity doesn’t have an <code>onStop()</code> method, or the <code>onStop()</code>
- method doesn’t contain an <code>AppIndexApi.end()</code> or <code>AppIndexApi.viewEnd()</code>
- call.</li>
-</ul>
-
-
-<p>The Code Editor adds Java code similar to the following:</p>
-<pre>
- /**
- * ATTENTION: This was auto-generated to implement the App Indexing API.
- * See https://g.co/AppIndexing/AndroidStudio for more information.
- */
- private GoogleApiClient client;
-
- // ATTENTION: This was auto-generated to implement the App Indexing API.
- // See https://g.co/AppIndexing/AndroidStudio for more information.
- client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
- }
-
-
- @Override
- public void onStart() {
- super.onStart();
-
- // ATTENTION: This was auto-generated to implement the App Indexing API.
- // See https://g.co/AppIndexing/AndroidStudio for more information.
- client.connect();
- Action viewAction = Action.newAction(
- Action.TYPE_VIEW, // TODO: choose an action type.
- "Main Page", // TODO: Define a title for the content shown.
- // TODO: If you have web page content that matches
- // this app activity's content,
- // make sure this auto-generated web page URL is correct.
- // Otherwise, set the URL to null.
- Uri.parse("http://www.example.com/gizmos"),
- // TODO: Make sure this auto-generated app URL is correct.
- Uri.parse("android-app://com.example/http/www.example.com/gizmos")
- );
- AppIndex.AppIndexApi.start(client, viewAction);
- }
-
- @Override
- public void onStop() {
- super.onStop();
-
- // ATTENTION: This was auto-generated to implement the App Indexing API.
- // See https://g.co/AppIndexing/AndroidStudio for more information.
- Action viewAction = Action.newAction(
- Action.TYPE_VIEW, // TODO: choose an action type.
- "Main Page", // TODO: Define a title for the content shown.
- // TODO: If you have web page content that matches
- // this app activity's content,
- // make sure this auto-generated web page URL is correct.
- // Otherwise, set the URL to null.
- Uri.parse("http://www.example.com/gizmos"),
- // TODO: Make sure this auto-generated app URL is correct.
- Uri.parse("android-app://com.example/http/www.example.com/gizmos")
- );
- AppIndex.AppIndexApi.end(client, viewAction);
- client.disconnect();
- }
-}
-</pre>
-
-<p>For more information about the App Indexing API methods, see
- <a href="https://developers.google.com/app-indexing/reference/package-summary"
- class="external-link">Android API for App Indexing</a>.
- For information about the action types, see the
- <a href="https://developers.google.com/android/reference/com/google/android/gms/appindexing/Action#constant-summary"
- class="external-link">Action Class Constant Summary</a>.
-</p>
-
-<p>If your app isn’t already configured for the Google Play Services App Indexing API, the Code
- Editor also modifies your <code>build.gradle</code> and <code>AndroidManifest.xml</code> files
- to include it. If your app already depends on it but the version is lower than 8.1.0, your app
- is upgraded to version 8.1.0. For more information and to correct any issues, see
- <a href="https://developers.google.com/app-indexing/android/publish#add-google-play-services"
- class="external-link">Add Google Play Services</a>
- and <a href="https://developers.google.com/android/guides/setup"
- class="external-link">Setting Up Google Play Services</a>.
-</p>
-
-<li>Customize the skeleton code, as needed.</li>
-
-<p>Pay attention to the comments, which help you find areas that need work, such as setting the
- title and URLs. For more information, see
- <a href="https://developers.google.com/app-indexing/android/publish"
- class="external-link">Add the App Indexing API</a>.
-</p>
-<li><a href="#testindexing">Verify that your app indexing code is working</a> by using
- the logcat Monitor.</li>
-</ol>
-
-
-
-<p>To test and debug your App Indexing API code, you can use the following Android Studio
- features:</p>
-<ul>
-<li><a href="#testindexing">Examine logcat Monitor Messages</a>.</li>
-<li><a href="#lint">Enable the following Android Lint category</a>:
- <strong>Missing support for Google App Indexing API</strong></li>
-
-<li><a href="#appindexingtest">Perform a Google App Indexing Test</a>.</li>
-</ul>
-
-<p>In addition, you can
- <a href="https://developers.google.com/app-indexing/android/test#preview-your-apk-on-search-console"
- class="external-link">preview your APK in the Google Search Console</a>.</p>
-
-
-<h2 id="testintent">Testing a URL</h2>
-
-<p>When you run your app from Android Studio, you can specify a URL to launch so you can
- test it.</p>
-
-<p>To launch a URL from Android Studio:</p>
-<ol>
-<li>In Android Studio, open your project in
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
-<li>After opening a project, select <strong>Run</strong> > <strong>Edit Configurations</strong>.
-</li>
-<li>In the <em>Run/Debug Configurations</em> dialog, beneath <strong>Android Application,</strong>
- select the module you want to test.</li>
-<li>Select the <strong>General</strong> tab. </li>
-<li>In the <strong>Launch</strong> field, select <strong>URL</strong>. </li>
-<li>In the <strong>URL</strong> field, click <strong>…</strong> to select from a list of
- defined URLs.</li>
-
-<p>Or type the URL you want to test, for example, <code>http://example.com/gizmos</code>. </p>
-<li>Click <strong>OK</strong>.</li>
-<li>Select <strong>Run</strong> > <strong>Run app</strong> or <strong>Debug app</strong>.</li>
-<li>If the <em>Select Deployment Target</em> dialog appears, select a connected device or an
- emulator, and click <strong>OK</strong>.</li>
-
-<p>If the link is successful, the app launches in the device or emulator, and displays the app at
- the specified activity. Otherwise, an error message appears in the <em>Run</em> window.</p>
-</ol>
-
-<p>For more information about creating run configurations at the project, default, and module
- levels, see
- <a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.
-</p>
-
-<p>You can view App Indexing API log messages while the app is running, as described next.</p>
-
-
-<h2 id="testindexing">Viewing App Indexing API Messages in the logcat Monitor</h2>
-
-<p>The logcat Monitor can display app indexing log messages to determine if your App Indexing API
- code is pushing the correct data to the cloud. For example, you can check the app title and the
- URL. The logcat Monitor is part of Android Monitor in Android Studio.</p>
-
-<p>To view App Indexing API messages in the logcat Monitor:</p>
-<ol>
-<li>Run your app in Android Studio so it <a href="#testintent">launches a URL</a>.</li>
-<li><a href="{@docRoot}tools/help/am-logcat.html#running">Display Android Monitor</a>
- and click the <strong>logcat</strong> tab.</li>
-<li><a href="{@docRoot}tools/help/am-logcat.html#level">Set the log level</a> to
- <strong>Verbose</strong>.</li>
-<li>In the filter menu, select <strong>No Filters</strong>.</li>
-<li><a href="{@docRoot}tools/help/am-logcat.html#searching">Search the log</a> for the string
- "appindex".</li>
-
-<p>App indexing log messages should appear. If they don’t, check the following items:</p>
-<ul>
-<li>Is Google Play Services installed on the device or emulator? You can check the settings on
- the device. </li>
-<li>Is the Google Play Services version on the device or emulator lower than the version specified
- in the <code>build.gradle</code> file? If so, it might be out-of-date and should be upgraded to
- a higher version. </li>
-</ul>
-
-<p>For more information, see the
- <a href="https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en"
- class="external-link">Google Play Services Download</a>
- page and <a href="https://developers.google.com/android/guides/setup"
- class="external-link">Setting Up Google Play Services</a>.
-</p>
-<li>Visit app pages that trigger App Indexing API calls. </li>
-</ol>
-
-
-<h2 id="lint">Configuring Lint</h2>
-
-<p>You can use the Android Studio built-in Lint tool to check whether you have valid URLs
- defined in the manifest and have implemented the App Indexing API correctly in activities.</p>
-
-<p>You can view URL and app indexing warnings and errors in two ways: </p>
-<ul>
-<li>As pop-up text in the Code Editor. When Lint finds a problem, it highlights the problematic
- code in yellow, or underlines the code in red for more serious issues.</li>
-<li>In the Lint <em>Inspection Results</em> window after you select <strong>Analyze</strong> >
- <strong>Inspect Code</strong>.</li>
-</ul>
-
-
-
-<p>To set default Lint checks for URLs and the App Indexing API:</p>
-<ol>
-<li>In Android Studio, open your project in
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.
-</li>
-<li>Select <strong>File</strong> > <strong>Other Settings</strong> >
- <strong>Default Settings</strong>.</li>
-<li>In the <em>Default Preferences</em> dialog, select <strong>Editor</strong> >
- <strong>Inspections</strong>. </li>
-<li>In the <strong>Profile</strong> field, select <strong>Default</strong> or
- <strong>Project Default</strong> to set the scope for Android Studio or just for this project,
- respectively. </li>
-<li>Expand the <strong>Android Lint</strong> category and change the Lint settings as needed:</li>
-<ul>
-<li><strong>Missing support for Google App Indexing</strong> - Reports a warning if the app hasn’t
- implemented URLs, which are used by Google Search. This warning setting is enabled by
- default.</li>
-<li><strong>Missing support for Google App Indexing API</strong> - Reports if an app hasn’t
- implemented the App Indexing API at all. This warning setting is disabled by default.</li>
-<li><strong>URL not supported by app for Google App Indexing</strong> - Reports URL
- errors in manifest code. This error setting is enabled by default.</li>
-</ul>
-
-<p>For example, the following Lint warning appears for the first setting:</p>
-<p><img src="{@docRoot}images/tools/ai-lint.png" alt="Lint warning" /></p>
-
-<li>Click <strong>OK</strong>.</li>
-</ol>
-
-
-
-<p>To produce a list of Lint checks displayed in the <em>Inspection Results</em> window:</p>
-<ol>
-<li>In Android Studio, open your project in
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
- and select a portion of your project that you want to test.</li>
-<li>Select <strong>Analyze</strong> > <strong>Inspect Code</strong>.</li>
-<li>In the <em>Specify Inspection Scope </em>dialog, select the inspection scope and profile. </li>
-
-<p>The scope specifies the files you want to analyze, and the profile specifies the Lint checks
- you’d like to perform.</p>
-<li>If you want to change the Lint settings, click <strong>…</strong>. In the <em>Inspections</em>
- dialog, optionally click <strong>Manage</strong> to define a new profile, specify the Lint
- settings you want, and then click <strong>OK</strong>.</li>
-<p>In the <em>Inspections</em> dialog, you can search for the string "app indexing"
-to find the URL and App Indexing API Lint checks. Note that changing Lint settings for a
-profile in the <em>Inspections</em> dialog doesn’t change the default settings, as described in
-the previous procedure. It does change the settings for profiles displayed in the
-<em>Inspections</em> dialog, however.</p>
-<li>Click <strong>OK</strong>.</li>
-<p>The results appear in the <em>Inspection Results</em> window.</p>
-
-</ol>
-
-
-<h2 id="appindexingtest">Performing a Google App Indexing Test</h2>
-
-<p>You can use a Google App Indexing Test to check whether Google can index
-a URL by either crawling your app page or using the App Indexing API.
-Google can index the URL if your app supports at least one of the following:
-</p>
-<ul>
-<li>Googlebot can open and crawl the page identified by the URL.</li>
-<li>Your app sends the correct data by using the App Indexing API.</li>
-</ul>
-
-<p>To perform a Google App Indexing Test: </p>
-<ol>
-<li>Add <a href="#intent">URL</a> and
-<a href="#indexing">App Indexing API</a> support to your app.
-</li>
-<li>While your project is open in Android Studio, select <strong>Tools</strong>
-> <strong>Android</strong> > <strong>Google App Indexing Test</strong>.
-</li>
-<li>In the <em>Google App Indexing Test</em> dialog, select a
-<strong>Module</strong>, <strong>URL</strong>, and <strong>Language</strong>.
-</li>
-<li>Log in if you see a message asking you to log into a Google Cloud Platform
-account.</li>
-<li>In the <em>Google App Indexing Test</em> dialog, click <strong>OK</strong>.
-</li>
-
-<p>Android Studio builds the APK and starts the test. The test can take a few
-minutes to complete. The results appear in a new tab in the Code Editor.</p>
-<p><img src="{@docRoot}images/tools/ai-appindexingtest.png"
-alt="Google App Indexing Test results" /></p>
-
-<p>If the app preview on the right shows the screen that corresponds to the URL
-you're testing, then Googlebot can find the URL.</p>
-
-<li>Correct any issues the test identifies, and repeat the test as often as
-needed.</li>
-</li>
-</ol>
-
-<p>The following table lists common errors and warnings you might encounter.</p>
-
-<table>
- <tr>
- <th scope="col">Warning or Error</th>
- <th scope="col">Description</th>
- </tr>
-
- <tr>
- <td>Error: Google cannot index this page.</td>
- <td>Your app can't be crawled by Googlebot or using the App Indexing API,
- so Google isn't able to index this app.</td>
- </tr>
- <tr>
- <td>Warning: The App URL you sent by using the App Indexing API doesn't
- match the URL opened.</td>
- <td>When calling the App Indexing API, the URL specified in the app must
- match the opened URL.</td>
- </tr>
- <tr>
- <td>Warning: Google cannot index this page using the App Indexing API
- because the title is empty.</td>
- <td>When calling the App Indexing API, the title shouldn't be empty.</td>
- </tr>
- <tr>
- <td>Warning: Google can index this page using Googlebot crawling but
- identified blocked resources.</td>
- <td>The app references other resources, and some of them are blocked or
- temporarily unavailable. If these resources aren't critical, it might not
- matter. Check the preview on the right to see whether the content
- displays correctly. To fix this issue, make sure the resources aren't
- blocked by <a href="https://support.google.com/webmasters/answer/6062608"
- class="external-link"><code>robots.txt</code></a>.</td>
- </tr>
- <tr>
- <td>Warning: Google cannot index this page using the App Indexing API.</td>
- <td>Your app isn’t using the App Indexing API. We recommended adding App
- Indexing API support to your app.</td>
- </tr>
-
-</table>
-
diff --git a/docs/html/tools/help/avd-manager.jd b/docs/html/tools/help/avd-manager.jd
deleted file mode 100755
index b3dcad5..0000000
--- a/docs/html/tools/help/avd-manager.jd
+++ /dev/null
@@ -1,19 +0,0 @@
-page.title=AVD Manager
-@jd:body
-
-
-<p>The AVD Manager provides a graphical user interface in which you can create
-and manage Android Virtual Devices (AVDs), which are required by the
-<a href="{@docRoot}tools/help/emulator.html">Android Emulator</a>.</p>
-
-<p>You can launch the AVD Manager in one of the following ways:</p>
-<ul>
- <li>In Android Studio: select <strong>Tools > Android > AVD Manager</strong>, or click
- the AVD Manager icon in the toolbar.</li>
-
- <li>In other IDEs: Navigate to your SDK's <code>tools/</code> directory and execute
- <code>android avd</code>.</li>
-</ul>
-
-<p>For more information, see <a href="{@docRoot}tools/devices/managing-avds.html">Managing
-AVDs with AVD Manager</a>.
diff --git a/docs/html/tools/help/bmgr.jd b/docs/html/tools/help/bmgr.jd
deleted file mode 100644
index 8823f33..0000000
--- a/docs/html/tools/help/bmgr.jd
+++ /dev/null
@@ -1,190 +0,0 @@
-page.title=bmgr
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<!-- quickview box content here -->
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
- <ol>
-<li><a href="#backup">Forcing a Backup Operation</a></li>
-<li><a href="#restore">Forcing a Restore Operation</a></li>
-<li><a href="#other">Other Commands</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}guide/topics/data/backup.html">Data Backup</a></li>
- </ol>
-
-</div>
-</div>
-
-<!-- normal page content here -->
-
-<p><code>bmgr</code> is a shell tool you can use to interact with the Backup Manager
-on Android devices supporting API Level 8 or greater. It provides commands to induce backup
-and restore operations so that you don't need to repeatedly wipe data or take similar
-intrusive steps in order to test your application's backup agent. These commands are
-accessed via the <a href="{@docRoot}tools/help/adb.html">adb</a> shell.
-
-<p>For information about adding support for backup in your application, read <a
-href="{@docRoot}guide/topics/data/backup.html">Data Backup</a>, which includes a guide to testing
-your application using {@code bmgr}.</p>
-
-
-<h2 id="backup">Forcing a Backup Operation</h2>
-
-<p>Normally, your application must notify the Backup Manager when its data has changed, via {@link
-android.app.backup.BackupManager#dataChanged()}. The Backup Manager will then invoke your
-backup agent's {@link
-android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
-onBackup()} implementation at some time in the future. However, instead of calling {@link
-android.app.backup.BackupManager#dataChanged()}, you can invoke a backup request from the command
-line by running the <code>bmgr backup</code> command:
-
- <pre class="no-pretty-print">adb shell bmgr backup <em><package></em></pre>
-
-<p><code><em><package></em></code> is the formal package name of the application you wish to
-schedule for
-backup. When you execute this backup command, your application's backup agent will be invoked to
-perform a backup operation at some time in the future (via your {@link
-android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
-onBackup()} method), though there is no guarantee when it will occur. However, you can force all
-pending backup operations to run immediately by using the <code>bmgr run</code> command:
-
- <pre class="no-pretty-print">adb shell bmgr run</pre>
-
-<p>This causes a backup pass to execute immediately, invoking the backup agents of all applications
-that had previously called {@link android.app.backup.BackupManager#dataChanged()} since the
-last backup operation, plus any applications which had been manually scheduled for
-backup via <code>bmgr backup</code>.
-
-
-
-<h2 id="restore">Forcing a Restore Operation</h2>
-
-<p>Unlike backup operations, which are batched together and run on an occasional basis, restore
-operations execute immediately. The Backup Manager currently provides two kinds of restore
-operations. The first kind restores an entire device with the data that has been backed up. This
-is typically performed only when a device is first provisioned (to replicate settings and other
-saved state from the user's previous device) and is an operation that only the system can
-perform. The second kind of restore operation restores
-a single application to its "active" data set; that is, the application will abandon its current
-data and revert to the last-known-good data that is held in the current backup image. You can
-invoke this second restore operation with the {@link
-android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method. The
-Backup Manager will then invoke your backup agent's {@link
-android.app.backup.BackupAgent#onRestore(BackupDataInput,int,ParcelFileDescriptor)
-onRestore()} implementation.
-
-<p>While testing your application, you can immediately invoke the restore operation (bypassing the
-{@link android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method)
-for your application by using the <code>bmgr restore</code> command:
-
- <pre class="no-pretty-print">adb shell bmgr restore <em><package></em></pre>
-
-<p><code><em><package></em></code> is the formal Java-style package name of the application
-participating in the backup/restore mechanism, which you would like to restore. The Backup
-Manager will immediately instantiate the application's backup agent and invoke it for restore. This
-will happen even if your application is not currently running.
-
-
-
-
-
-<h2 id="other">Other Commands</h2>
-
-<h3>Wiping data</h3>
-
-<p>The data for a single application can be erased from the active data set on demand. This is
-very useful while you're developing a backup agent, in case bugs lead you to write corrupt data
-or saved state information. You can wipe an application's data with the <code>bmgr wipe</code>
-command:
-
- <pre class="no-pretty-print">adb shell bmgr wipe <em><package></em></pre>
-
-<p><code><em><package></em></code> is the formal package name of the application whose data
-you wish to
-erase. The next backup operation that the application's agent processes will look as
-though the application had never backed anything up before.
-
-
-<h3>Enabling and disabling backup</h3>
-
-<p>You can see whether the Backup Manager is operational at all with the <code>bmgr
-enabled</code> command:
-
- <pre class="no-pretty-print">adb shell bmgr enabled</pre>
-
-<p>This might be useful if your application's backup agent is never being invoked for backup, to
-verify whether the operating system thinks it should be performing such operations at all.</p>
-
-<p>You can also directly disable or enable the Backup Manager with this command:
-
- <pre class="no-pretty-print">adb shell bmgr enable <em><boolean></em></pre>
-
-<p><code><em><boolean></em></code> is either <code>true</code> or <code>false</code>.
-This is equivalent to disabling or enabling backup in the device's main Settings UI.</p>
-
-<p class="warning"><strong>Warning!</strong> When backup is disabled, the current backup transport
-will explicitly wipe
-the entire active data set from its backend storage. This is so that when a user says
-they do <em>not</em> want their data backed up, the Backup Manager respects that wish. No further
-data will be saved from the device, and no restore operations will be possible, unless the Backup
-Manager is re-enabled (either through Settings or through the above <code>bmgr</code> command).
-
-
-
-
-<!-- The following is not useful to applications, but may be some useful information some day...
-
-
-<h2 id="transports">Applying a Backup Transport</h2>
-
-<p>A "backup transport" is the code module responsible for moving backup and restore data
-to and from some storage location. A device can have multipe transports installed, though only
-one is active at any given time. Transports are identified by name. You can see what
-transports are available on your device or emulator by running the
-<code>bmgr list transports</code> command:
-
- <pre class="no-pretty-print">adb shell bmgr list transports</pre>
-
-<p>The output of this command is a list of the transports available on the device. The currently
-active transport is flagged with a <code>*</code> character. Transport names may look like
-component names (for example, <code>android/com.android.internal.backup.LocalTransport</code>),
-but they need not be, and the strings are never used as direct class references. The use of
-a component-like naming scheme is simply for purposes of preventing name collisions.
-
-<p>You can change which transport is currently active from the command line as well:
-
- <pre class="no-pretty-print">adb shell bmgr transport <em><name></em></pre>
-
-<p><code><em><name></em></code> is one of the names as printed by the <code>bmgr list
-transports</code>
-command. From this point forward, backup and restore operations will be directed through the
-newly-selected transport. Backup state tracking is managed separately for each transport, so
-switching back and forth between them will not corrupt the saved state.
-
-
-
-
-<h2 id="restoresets">Viewing Restore Sets</h2>
-
-<p>All of the application data that a device has written to its backup transport is tracked
-as a group that is collectively called a "restore set," because each data set is
-most often manipulated during a restore operation. When a device is provisioned for the first
-time, a new restore set is established. You can get a listing of all the restore sets available to
-the current transport by running the <code>bmgr list sets</code> command:
-
- <pre class="no-pretty-print">adb shell bmgr list sets</pre>
-
-<p>The output is a listing of available restore sets, one per line. The first item on each line is
-a token (a hexadecimal value that identifies the restore set to the transport). Following
-the token is a string that briefly identifies the restore set.
-Only the token is used within the backup and restore mechanism.
-
-
--->
diff --git a/docs/html/tools/help/ddms.html b/docs/html/tools/help/ddms.html
deleted file mode 100644
index d885d56..0000000
--- a/docs/html/tools/help/ddms.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/debugging/ddms.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/debugging/ddms.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/help/desktop-head-unit.jd b/docs/html/tools/help/desktop-head-unit.jd
deleted file mode 100644
index a2b71e6..0000000
--- a/docs/html/tools/help/desktop-head-unit.jd
+++ /dev/null
@@ -1,439 +0,0 @@
-page.title=Desktop Head Unit
-page.tags="auto", "car", "testing","dhu"
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#launching-dhu">Launching the DHU</a></li>
- <li><a href="#dhu-commands">Issuing DHU Commands</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/auto/start/index.html#test-it-dhu">Run and Test Auto Apps</a></li>
- </ol>
-
-</div>
-</div>
-
-
-<p>The Desktop Head Unit (DHU) enables your development machine to emulate an Android Auto
-head unit, so you can easily run and test Android Auto apps. The DHU runs on
-Windows, Mac, and Linux hosts and replaces previous Android Auto simulators,
-such as the Android Media Browser and Messaging
-simulators.</p>
-
-<p class="note"><strong>Note:</strong> For other information about testing Auto apps, see the
-training lesson
-<a href="{@docRoot}training/auto/start/index.html#test-it-dhu">Run and Test Auto Apps</a>. </p>
-
-
-<h2 id="launching-dhu">Launching the DHU</h2>
-
-<p>
- To launch the DHU, run the <code>desktop-head-unit.exe</code> (on Windows)
- or <code>desktop-head-unit</code> (on Mac or Linux) command, as described in
- <a href="{@docRoot}training/auto/start/index.html#connecting-dhu">Connecting
- the DHU to your mobile device</a>.
-</p>
-
-<p>
- By default, the DHU emulates the most common form of Android Auto-compatible
- head unit, which uses a touch screen user interface. You can simulate user
- touches by clicking the DHU with a mouse. To emulate head units which use
- a rotary controller for input, you can use the <code>-i controller</code> flag,
- as in this example:
-</p>
-
-<pre class="no-pretty-print">$ ./desktop-head-unit -i controller</pre>
-
-<p>
- When the DHU is in rotary-controller mode you can simulate controller
- operations by using keyboard shortcuts, as described in <a href=
- "#cmd-bindings">DHU commands and key bindings</a>. If the DHU is in rotary
- controller mode, it ignores mouse clicks; you must operate Android Auto with
- the simulated rotary controller operations.
-</p>
-
-<h2 id="dhu-commands">Issuing DHU Commands</h2>
-
-<p>
- DHU commands allow you to test your app with Android Auto features, such as
- playing voice input or switching between night and day display mode. You can issue commands to
- the DHU by running commands from the terminal window where you launched DHU.
- You can also issue commands by selecting the DHU window and
- using keyboard shortcuts. The DHU commands
- and key bindings for all controls are listed in <a href="#cmd-bindings">DHU
- commands and key bindings</a>.
-</p>
-
-
-<h3 id="day-night">Switching between day and night mode</h3>
-
-<p>
- Android Auto supports different color schemes for day and night. You should test your app in both
- day and night mode. You can switch between night and day mode in either of the
- following ways:
-</p>
-
-<ul>
- <li>Run the command <code>daynight</code> in the terminal where you launched the DHU.
- </li>
-
- <li>Select the DHU window and press the <strong>N</strong> key.
- </li>
-</ul>
-
-<h3>Microphone testing</h3>
-
-<p>The DHU supports using a microphone for voice input. You can also instruct the DHU to treat
-a pre-recorded voice track as input, as if the DHU had heard the track through the microphone.</p>
-
-<p>To use a pre-recorded sound file as input, enter this command: </p>
-<pre class="no-pretty-print">
-$ mic play <sound_file_path>/<sound_file>.wav
-</pre>
-
-<p>For your convenience, we have provided the following sound files for common
-voice commands. These sound files are installed in the
-<code><sdk>/extras/google/auto/voice/</code> directory.</p>
-
-<dl>
- <dt>
- <code>exitnav.wav</code>
- </dt>
-
- <dd>
- "Exit navigation."
- </dd>
-
- <dt>
- <code>navgoogle.wav</code>
- </dt>
-
- <dd>
- "Navigate to 1600 Amphitheatre Parkway, Mountain View."
- </dd>
-
- <dt>
- <code>navsoh.wav</code>
- </dt>
-
- <dd>
- "Navigate to Sydney Opera House."
- </dd>
-
- <dt>
- <code>nextturn.wav</code>
- </dt>
-
- <dd>
- "When is my next turn?"
- </dd>
-
- <dt>
- <code>showalternateroute.wav</code>
- </dt>
-
- <dd>
- "Show alternate routes.""
- </dd>
-
- <dt>
- <code>howlong.wav</code>
- </dt>
-
- <dd>
- "How long until I get there?"
- </dd>
-
- <dt>
- <code>navhome.wav</code>
- </dt>
-
- <dd>
- "Navigate to home."
- </dd>
-
- <dt>
- <code>navwork.wav</code>
- </dt>
-
- <dd>
- "Navigate to work.""
- </dd>
-
- <dt>
- <code>pause.wav</code>
- </dt>
-
- <dd>
- "Pause music."
- </dd>
-
- <dt>
- <code>showtraffic.wav</code>
- </dt>
-
- <dd>
- "Show traffic."
- </dd>
-</dl>
-<h3 id="cmd-bindings">DHU commands and key bindings</h3>
-
-<p>The DHU supports the following commands.</p>
-
-<p class="table-caption" id="table-commands"><strong>Table 1.</strong> Commands and key bindings</p>
-<table>
-<tr>
- <th>Category</th>
- <th>Command</th>
- <th>Subcommand</th>
- <th>Argument(s)</th>
- <th>Keyboard Shortcut(s)</th>
- <th>Description</th>
-</tr>
-
-<!--system-->
-
-<tr>
-<td rowspan="4">System</td>
-<td>help</td>
-<td></td>
-<td>[command]</td>
-<td></td>
-<td>Shows the full command set. Specifying a command name (for example, <code>help day</code>)
- causes the system to show help for that command.</td>
-</tr>
-
-<tr>
-
-<td>quit</td>
-<td></td>
-<td></td>
-<td>Alt+q</td>
-<td>Quits the head unit.</td>
-</tr>
-
-<tr>
-
-<td>sleep</td>
-<td></td>
-<td>[seconds]</td>
-<td></td>
-<td>Sleeps for one second. Specifying an argument (for example, <code>sleep 30</code>) causes the
-system to sleep the specified number of seconds. This command
-is useful if you are writing scripts for the DHU. (You can run a script by using I/O redirection
-from the command line: <code>./desktop-head-unit < script.txt</code> loads commands from the
-file <code>script.txt</code>.)</td>
-</tr>
-
-<tr>
-
-<td>screenshot</td>
-<td></td>
-<td>filename.png</td>
-<td></td>
-<td>Saves a screenshot to <code>filename.png</code>.</td>
-</tr>
-
-
-<!--microphone-->
-
-<tr>
-<td rowspan="3">Microphone</td>
-<td rowspan="3">mic</td>
-<td>begin</td>
-<td></td>
-<td>m </td>
-<td>Activates the microphone (equivalent to clicking the steering wheel's microphone button) and
-waits for input from the computer microphone.</td>
-</tr>
-
-<tr>
-
-
-<td>play</td>
-<td>filename.wav</td>
-<td></td>
-<td>Causes the DHU to treat <code>filename.wav</code> as voice input, as if it had heard that sound
- through the microphone. You do not hear the sound file being played, but you do hear
- the response from Android Auto.</td>
-</tr>
-
-<tr>
-
-
-<td>repeat</td>
-<td></td>
-<td></td>
-<td>Repeats the last <code>mic play</code> command, as if you had called <code>mic play</code>
- again with the same sound file parameter.</td>
-</tr>
-
-<!--Input-->
-
-<tr>
-<td rowspan="7">Input</td>
-<td rowspan="6">dpad</td>
-<td>up <br> down <br> left <br> right</td>
-<td></td>
-<td>Arrow keys</td>
-<td>Simulates moving the rotary controller.</td>
-</tr>
-
-<tr>
-
-
-<td>soft left <br> soft right</td>
-<td></td>
-<td>Shift+Arrow keys</td>
-<td>Simulates pressing the side buttons available on some rotary controllers.</td>
-</tr>
-
-<tr>
-
-
-<td>click</td>
-<td></td>
-<td>Return</td>
-<td>Simulates pressing the rotary controller.</td>
-</tr>
-
-<tr>
-
-
-<td>back</td>
-<td></td>
-<td>Backspace</td>
-<td>Simulates pressing the <strong>back</strong> button available below some rotary
- controllers.</td>
-</tr>
-
-<tr>
-
-
-<td>rotate left <br> rotate right</td>
-<td></td>
-<td>1 <br> 2</td>
-<td>Simulates rotating the rotary controller left (counter-clockwise) or right (clockwise).</td>
-</tr>
-
-<tr>
-
-
-<td>flick left <br> flick right</td>
-<td></td>
-<td>Shift+1 <br> Shift+2</td>
-<td>Simulates a fast spin of the rotary controller to the left (counter-clockwise) or right
- (clockwise).</td>
-</tr>
-
-<tr>
-
-<td>tap</td>
-<td></td>
-<td>x y</td>
-<td></td>
-<td>Simulates a touch event at the specified coordinates. For example, <code>tap 50 100</code></td>
-</tr>
-
-
-<!--Day/Night-->
-
-<tr>
-<td rowspan="3">Day/Night</td>
-<td>day</td>
-<td></td>
-<td></td>
-<td>Shift+n</td>
-<td>Activates day mode (high brightness, full color).</td>
-</tr>
-
-<tr>
-
-<td>night</td>
-<td></td>
-<td> </td>
-<td>Ctrl+n </td>
-<td>Activates night mode (low brightness, high contrast).</td>
-</tr>
-
-<tr>
-
-<td>daynight</td>
-<td></td>
-<td></td>
-<td>n </td>
-<td>Toggles current day/night mode.</td>
-</tr>
-
-</table>
-
-
-
-
-<h2 id="auto-simulators">Media Browser and Messaging Simulators</h2>
-
-<p class="caution"><strong>Important:</strong> Use of the Android Media Browser and Messaging
-Simulators for testing Android Auto apps is deprecated. Instead, we recommend using the
-Desktop Head Unit, which enables your development machine to act as if it were an Android Auto head
-unit.</p>
-
-<p>To get the simulators, open the
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> and download
-them from <strong>Extras > Android Auto API Simulators</strong>.</p>
-
-<p>Before you begin testing, compile your app in your development environment.
-Install your app and the Android simulator for the features you want to test
-(that is, audio or messaging) on a physical or virtual device running Android
-5.0 (API level 21) or higher. To check the version of Android on the device, go
-to <strong>Settings > About phone</strong> (or <strong>About tablet</strong>)
-<strong>> Android Version</strong>.</p>
-
-<h3 id="testing-audio-apps">Testing audio apps</h3>
-<p>To run and test audio apps:</p>
-
-<ol>
-<li>Install the Android Media Browser simulator
-({@code <sdk>/extras/google/simulators/media-browser-simulator.apk}) on
-the test device. You can do this using
-the <a href="{@docRoot}tools/help/adb.html#move">adb</a> command line tool.</li>
-<li>Enable <a href="{@docRoot}tools/device.html#developer-device-options">
-developer options</a> on the test device.</li>
-<li>Install your app on the test device.</li>
-<li>Launch the Android Media Browser simulator to see how your audio app
-appears in Auto. If your app does not appear, stop the simulator from
-<strong>Settings > Apps</strong> and restart it.</li>
-</ol>
-
-
-<h3 id="testing-messaging-apps">Testing messaging apps</h3>
-<p>To run and test messaging apps:</p>
-
-<ol>
-<li>Install the Android Messaging simulator
- ({@code <sdk>/extras/google/simulators/messaging-simulator.apk})
-on the test device. You can do this using the
-<a href="{@docRoot}tools/help/adb.html#move">adb</a> command line tool.</li>
-<li>Enable the simulator to read notifications posted on the system:
-<ol type="a">
- <li>Enable <a href="{@docRoot}tools/device.html#developer-device-options">
-developer options</a> on the test device.</li>
- <li>Click <strong>Settings > Sounds & Notifications > Notification
- Access</strong> and check the box labeled
- <strong>Messaging Simulator</strong>.</li>
-</ol>
-<li>Install your app on the test device.</li>
-<li>Launch the Android Messaging Simulator to see how your messaging app appears
-in Auto. If your app does not appear, stop the simulator from
-<strong>Settings > Apps</strong> and restart it.</li>
-</ol>
-
-
-
-
diff --git a/docs/html/tools/help/dmtracedump.jd b/docs/html/tools/help/dmtracedump.jd
deleted file mode 100644
index bdc820d..0000000
--- a/docs/html/tools/help/dmtracedump.jd
+++ /dev/null
@@ -1,66 +0,0 @@
-page.title=dmtracedump
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
- <p><code>dmtracedump</code> is a tool that gives you an alternate way of generating
- graphical call-stack diagrams from trace log files (instead of using Traceview).</p>
-
- <p>This document is a reference to the available command line options. For more information on generating trace
- logs, see <a href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with
- Traceview and dmtracedump</a>.</p>
-
- <p>The usage for <code>dmtracedump</code> is:</p>
- <pre>
-dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] <trace-base-name>
-</pre>
-
- <p>The tool then loads trace log data from <code><trace-base-name>.data</code> and
- <trace-base-name>.key. The table below lists the options for dmtracedump.</p>
-
- <table>
- <tr>
- <th>Option</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><nobr><code>-d <em><trace-base-name></em></code></nobr></td>
-
- <td>Diff with this trace name</td>
- </tr>
-
- <tr>
- <td><code>-g <em><outfile></em></code></td>
-
- <td>Generate output to <outfile></td>
- </tr>
-
- <tr>
- <td><code>-h</code></td>
-
- <td>Turn on HTML output</td>
- </tr>
-
- <tr>
- <td><code>-o</code></td>
-
- <td>Dump the trace file instead of profiling</td>
- </tr>
-
- <tr>
- <td><code>-d <em><trace-base-name></em></code></td>
-
- <td>URL base to the location of the sortable javascript file</td>
- </tr>
-
- <tr>
- <td><code>-t <percent></code></td>
-
- <td>Minimum threshold for including child nodes in the graph (child's inclusive time as a
- percentage of parent inclusive time). If this option is not used, the default threshold is
- 20%.</td>
- </tr>
- </table>
\ No newline at end of file
diff --git a/docs/html/tools/help/draw9patch.jd b/docs/html/tools/help/draw9patch.jd
deleted file mode 100644
index 7c26441..0000000
--- a/docs/html/tools/help/draw9patch.jd
+++ /dev/null
@@ -1,66 +0,0 @@
-page.title=Draw 9-patch
-page.tags=NinePatch
-@jd:body
-
-<p>The Draw 9-patch tool is a WYSIWYG editor that allows you to create bitmap images that
-automatically resize to accommodate the contents of the view and the size of the screen. Selected
-parts of the image are scaled horizontally or vertically based indicators drawn within the image. </p>
-<p>For an introduction to NinePatch graphics and how they work, please read
-the section about NinePatch Drawables in the
-<a href="{@docRoot}guide/topics/graphics/2d-graphics.html#nine-patch">Canvas and Drawables</a>
-document.</p>
-
-<img src="{@docRoot}images/draw9patch-norm.png" style="float:right" alt="" height="300" width="341"
-/>
-
-<p>Here's a quick guide to create a NinePatch graphic using the Draw 9-patch tool.
-You'll need the PNG image with which you'd like to create a NinePatch image.</p>
-
-<ol>
- <li>From a terminal, run the <code>draw9patch</code> command from your SDK
- <code>sdk/tools</code> directory to launch the Draw 9-patch tool.
- </li>
- <li>Drag your PNG image into the Draw 9-patch window
- (or <strong>File</strong> > <strong>Open 9-patch...</strong> to locate the file).
- Your workspace will now open.
- <p>The left pane is your drawing area, in which you can edit the lines for the
- stretchable patches and content area. The right
- pane is the preview area, where you can preview your graphic when stretched.</p>
- </li>
- <li>Click within the 1-pixel perimeter to draw the lines that define the stretchable
- patches and (optional) content area. Right-click (or hold Shift and click, on Mac) to erase
- previously drawn lines.
- </li>
- <li>When done, select <strong>File</strong> > <strong>Save 9-patch...</strong>
- <p>Your image will be saved with the <code>.9.png</code> file name.</p>
- </li>
-</ol>
-
- <p>To make sure that your NinePatch graphics scale down properly, verify that any
- stretchable regions are at least 2x2 pixels in size.
- Otherwise, they may disappear when scaled down. Also, provide one pixel of extra safe space in
- the graphics before and after stretchable regions to avoid interpolation during scaling that may
- cause the color at the boundaries to change. </p>
-
- <p class="note"><strong>Note:</strong> A normal PNG file (<code>*.png</code>) will be
- loaded with an empty one-pixel border added around the image, in which you can draw
- the stretchable patches and content area.
- A previously saved NinePatch file (<code>*.9.png</code>) will be loaded as-is,
- with no drawing area added, because it already exists.</p>
-
-<img src="{@docRoot}images/draw9patch-bad.png" style="float:right;clear:both" alt="" height="300" width="341"
-/>
-
-<p>Optional controls include:</p>
-<ul>
- <li><strong>Zoom</strong>: Adjust the zoom level of the graphic in the drawing area.</li>
- <li><strong>Patch scale</strong>: Adjust the scale of the images in the preview area.</li>
- <li><strong>Show lock</strong>: Visualize the non-drawable area of the graphic on mouse-over.</li>
- <li><strong>Show patches</strong>: Preview the stretchable patches in the drawing area (pink is a
- stretchable patch).</li>
- <li><strong>Show content</strong>: Highlight the content area in the preview images
- (purple is the area in which content is allowed).</li>
- <li><strong>Show bad patches</strong>: Adds a red border around patch areas that may
- produce artifacts in the graphic when stretched. Visual coherence of your stretched
- image will be maintained if you eliminate all bad patches.</li>
-<ul>
diff --git a/docs/html/tools/help/emulator.jd b/docs/html/tools/help/emulator.jd
deleted file mode 100644
index 7b3b04f..0000000
--- a/docs/html/tools/help/emulator.jd
+++ /dev/null
@@ -1,1934 +0,0 @@
-page.title=Using Android Emulator Command-Line Features
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#starting">Starting and Stopping the Emulator</a></li>
- <li><a href="#apps">Installing Applications on the Emulator</a></li>
- <li><a href="#startup-options">Using Command Line Parameters</a></li>
- <li><a href="#acceleration">Using Hardware Acceleration</a>
- <ol>
- <li><a href="#accel-graphics">Configuring Graphics Acceleration</a></li>
- <li><a href="#accel-vm">Configuring Virtual Machine Acceleration</a></li>
- </ol>
- </li>
- <li><a href="#sdcard">Using SD Card Emulation</a>
- <ol>
- <li><a href="#sdcard-creating">Creating an SD card image</a></li>
- <li><a href="#sdcard-files">Copying files to an SD card image</a></li>
- <li><a href="#sdcard-loading">Loading an SD card image</a></li>
- </ol>
- </li>
- <li><a href="#diskimages">Working With Emulator Disk Images</a>
- <ol>
- <li><a href="#defaultimages">Default image files</a></li>
- <li><a href="#runtimeimages">Runtime images: user data and SD card</a></li>
- <li><a href="#temporaryimages">Temporary images</a></li>
- </ol>
- </li>
- <li><a href="#emulatornetworking">Setting Up Emulator Networking</a>
- <ol>
- <li><a href="#networkaddresses">Network Address Space</a></li>
- <li><a href="#networkinglimitations">Local Networking Limitations</a></li>
- <li><a href="#redirection">Using Network Redirection</a></li>
- <li><a href="#dns">Configuring the Emulator's DNS Settings</a></li>
- <li><a href="#proxy">Using the Emulator with a Proxy</a></li>
- <li><a href="#connecting">Interconnecting Emulator Instances</a></li>
- <li><a href="#calling">Sending a Voice Call or SMS to Another Emulator Instance</a></li>
- </ol>
- </li>
- <li><a href="#console">Using the Emulator Console</a>
- <ol>
- <li><a href="#portredirection">Port Redirection</a></li>
- <li><a href="#geo">Geo Location Provider Emulation</a></li>
- <li><a href="#events">Hardware Events Emulation</a></li>
- <li><a href="#power">Device Power Characteristics</a></li>
- <li><a href="#netstatus">Network Status</a></li>
- <li><a href="#netdelay">Network Delay Emulation</a></li>
- <li><a href="#netspeed">Network Speed Emulation</a></li>
- <li><a href="#telephony">Telephony Emulation</a></li>
- <li><a href="#sms">SMS Emulation</a></li>
- <li><a href="#vm">VM State</a></li>
- <li><a href="#window">Emulator Window</a></li>
- <li><a href="#terminating">Terminating an Emulator Instance</a></li>
- </ol>
- </li>
- <li><a href="#troubleshooting">Troubleshooting Emulator Problems</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/devices/emulator.html">Running Apps in the Android Emulator</a></li>
- <li><a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with the AVD Manager</a></li>
- </ol>
-
-</div>
-</div>
-
-
-<p>The Android SDK includes a mobile device emulator — a virtual mobile device
-that runs on your computer. The emulator lets you develop and test
-Android applications without using a physical device.</p>
-
-<p>This page describes command line features that you can use with the
-Android Emulator.
-For information about using the Android Emulator UI, see
-<a href="{@docRoot}tools/devices/emulator.html">Using the Android Emulator</a>.
-</p>
-
-
-<h2 id="starting">Starting and Stopping the Emulator</h2>
-
-<p>During development and testing of your application, you install and run your
-application in the Android Emulator. You can launch the emulator as a standalone
-application from a command line, or you can run it from within your Android Studio
-development environment. In either case, you specify the AVD configuration to
-load and any startup options you want to use, as described in this document.
-</p>
-
-<p>You can run your application on a single instance of the emulator or,
-depending on your needs, you can start multiple emulator instances and run your
-application in more than one emulated device. You can use the emulator's
-built-in commands to simulate GSM phone calling or SMS between emulator
-instances, and you can set up network redirection that allows emulators to send
-data to one another. For more information, see <a href="#telephony">Telephony
-Emulation</a>, <a href="#sms">SMS Emulation</a>, and
-<a href="#emulatornetworking">Emulator Networking</a></p>
-
-<p>To start an instance of the emulator from the command line, navigate to the
-<code>tools/</code> folder of the SDK. Enter <code>emulator</code> command
-like this: </p>
-
-<pre>emulator -avd <avd_name> [<options>]</pre>
-
-<p>This initializes the emulator, loads an AVD configuration and displays the emulator
-window. For more information about command line options for the emulator, see the
-<a href="{@docRoot}tools/help/emulator.html">Android Emulator</a> tool reference.</p>
-
-<p class="note"><strong>Note:</strong> You can run multiple
-instances of the emulator concurrently, each with its own AVD configuration and
-storage area for user data, SD card, and so on.</p>
-
-<p>When you run your app from Android Studio, it installs and launches the
-app on your connected device or emulator (launching the emulator, if necessary).
-You can specify emulator startup options in the Run/Debug
-dialog, in the Target tab. When the emulator is running, you can issue
-console commands as described later in this document.</p>
-
-<p>If you are not working in Android Studio, see <a href="#apps">Installing Applications
-on the Emulator</a> for information about how to install your application.</p>
-
-<p>To stop an emulator instance, just close the emulator's window.</p>
-
-<p>For a reference of the emulator's startup commands and keyboard mapping, see
-the <a href="{@docRoot}tools/help/emulator.html">Android Emulator</a> tool
-reference.</p>
-
-
-<h2 id="apps">Installing Applications on the Emulator</h2>
-
-<p>If you don't have access to Android Studio, you can install your application on the
-emulator using the <a href="{@docRoot}tools/help/adb.html#move">adb</a> utility. Before
-installing the application, you need to build and package it into an <code>.apk</code> as described
-in <a href="{@docRoot}tools/building/index.html">Building and
-Running Apps</a>. Once the application is installed, you can start the emulator from the command
-line as described previously, using any startup options necessary.
-When the emulator is running, you can also connect to the emulator instance's
-<a href="#console">console</a> to issue commands as needed.</p>
-
-<p>As you update your code, you periodically package and install it on the emulator.
-The emulator preserves the application and its state data across restarts,
-in a user-data disk partition. To ensure that the application runs properly
-as you update it, you may need to delete the emulator's user-data partition.
-To do so, start the emulator with the <code>-wipe-data</code> option.
-For more information about the user-data partition and other emulator storage,
-see <a href="#diskimages">Working with Emulator Disk Images</a>.</p>
-
-<h2 id="startup-options">Using Command Line Parameters</h2>
-
-<p>The emulator supports a variety of options that you can specify
-when launching the emulator, to control its appearance or behavior.
-Here's the command-line syntax of the options available to the {@code emulator} program:</p>
-
-<pre>emulator -avd <avd_name> [-<option> [<value>]] ... [-<qemu args>]</pre>
-
-<p class="table-caption"><strong>Table 2.</strong> Emulator command line parameters</p>
-<table>
-<tr>
- <th width="10%" >Category</th>
- <th width="20%" >Option</th>
- <th width="30%" >Description</th>
- <th width="40%" >Comments</th>
-</tr>
-
-<tr>
- <td>AVD</td>
- <td><code>-avd <avd_name></code> or <br>
- <code>@<avd_name></code></td>
- <td><strong>Required</strong>. Specifies the AVD to load for this emulator
- instance.</td>
- <td>You must create an AVD configuration before launching the emulator. For
- information, see <a href="{@docRoot}tools/devices/managing-avds.html">Managing
- AVDs with AVD Manager</a>.</td>
-<tr>
- <td rowspan="7">Disk Images</td>
- <td><code>-cache <filepath></code></td>
- <td>Use <filepath> as the working cache partition image. </td>
- <td>An absolute or relative path to the current working directory.
- If no cache file is specified, the emulator's default behavior is to use a temporary file instead.
- <p>For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td></tr>
-<tr>
- <td><code>-data <filepath></code></td>
- <td>Use {@code <filepath>} as the working user-data disk image. </td>
- <td>Optionally, you can specify a path relative to the current working directory.
- If <code>-data</code> is not used, the emulator looks for a file named {@code userdata-qemu.img}
- in the storage area of the AVD being used (see <code>-avd</code>).
-</td></tr>
-<!--
-<tr>
- <td><code>-datadir <dir></code></td>
- <td>Search for the user-data disk image specified in <code>-data</code> in <dir></td>
- <td><code><dir></code> is a path relative to the current working directory.
-
-<p>If you do not specify <code>-datadir</code>, the emulator looks for the user-data image
-in the storage area of the AVD being used (see <code>-avd</code>)</p><p>For more information
-on disk images, use <code>-help-disk-images</code>.</p>
-</td></tr>
--->
-<!--
-<tr>
- <td><code>-image <filepath></code></td>
- <td>Use <filepath> as the system image.</td>
- <td>Optionally, you can specify a path relative to the current working directory.
- Default is <system>/system.img.</td>
-</tr>
--->
-<tr>
- <td><code>-initdata <filepath></code></td>
- <td>When resetting the user-data image (through <code>-wipe-data</code>), copy the contents
- of this file to the new user-data disk image. By default, the emulator copies the <code><system>/userdata.img</code>.</td>
- <td>Optionally, you can specify a path relative to the current working directory. See also <code>-wipe-data</code>.
- <p>For more information on disk images, use <code>-help-disk-images</code>.</p></td>
-</tr>
-<tr>
- <td><code>-nocache</code></td>
- <td>Start the emulator without a cache partition.</td>
- <td>See also <code>-cache <file></code>.</td>
-</tr>
-<tr>
- <td><code>-ramdisk <filepath></code></td>
- <td>Use <filepath> as the ramdisk image.</td>
- <td>Default value is <code><system>/ramdisk.img</code>.
- <p>Optionally, you can specify a path relative to the current working directory.
- For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<tr>
- <td><code>-sdcard <filepath></code></td>
- <td>Use <file> as the SD card image.</td>
- <td>Default value is <code><system>/sdcard.img</code>.
- <p>Optionally, you can specify a path relative to the current working directory. For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<!--
-<tr>
- <td><code>-system <dirpath></code></td>
- <td>Search for system, ramdisk and user data images in <dir>.</td>
- <td><code><dir></code> is a directory path relative to the current
- working directory.</td>
-</tr>
--->
-<tr>
- <td><code>-wipe-data</code></td>
- <td>Reset the current user-data disk image (that is, the file specified by <code>-datadir</code> and
- <code>-data</code>, or the default file). The emulator deletes all data from the user data image file,
- then copies the contents of the file at <code>-inidata</code> data to the image file before starting.
- </td>
- <td>See also <code>-initdata</code>.
- <p>For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<tr>
- <td rowspan="9">Debug</td>
- <td><code>-debug <tags></code></td>
- <td>Enable/disable debug messages for the specified debug tags.</td>
- <td><code><tags></code> is a space/comma/column-separated list of debug component names.
- Use <code>-help-debug-tags</code> to print a list of debug component names that you can use. </td>
-</tr>
-<tr>
- <td><code>-debug-<tag></code></td>
- <td>Enable/disable debug messages for the specified debug tag.</td>
- <td rowspan="2">Use <code>-help-debug-tags</code> to print a list of debug component names that you can use in <code><tag></code>. </td>
-</tr>
-<tr>
- <td><code>-debug-no-<tag></code></td>
- <td>Disable debug messages for the specified debug tag.</td>
-</tr>
-<tr>
- <td><code>-logcat <logtags></code></td>
- <td>Enable logcat output with given tags.</td>
- <td>If the environment variable ANDROID_LOG_TAGS is defined and not
- empty, its value will be used to enable logcat output by default.</td>
-</tr>
-<tr>
- <td><code>-shell</code></td>
- <td>Create a root shell console on the current terminal.</td>
- <td>You can use this command even if the adb daemon in the emulated system is broken.
- Pressing Ctrl-c from the shell stops the emulator instead of the shell.</td>
-</tr>
-<tr>
- <td><code>-shell-serial <device></code></td>
- <td>Enable the root shell (as in <code>-shell</code> and specify the QEMU character
- device to use for communication with the shell.</td>
- <td><device> must be a QEMU device type. See the documentation for '-serial <em>dev</em>' at
- <a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>
- for a list of device types.
-
-<p>Here are some examples: </p>
-<ul>
- <li><code>-shell-serial stdio</code> is identical to <code>-shell</code></li>
- <li><code>-shell-serial tcp::4444,server,nowait</code> lets you communicate with the shell over TCP port 4444</li>
- <li><code>-shell-serial fdpair:3:6</code> lets a parent process communicate with the shell using fds 3 (in) and 6 (out)</li>
- <li><code>-shell-serial fdpair:0:1</code> uses the normal stdin and stdout fds, except that QEMU won't tty-cook the data.</li>
- </ul>
-</td>
-</tr>
-<tr>
- <td><code>-show-kernel <name></code></td>
- <td>Display kernel messages.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-trace <name></code></td>
- <td>Enable code profiling (press F9 to start), written to a specified file.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-verbose</code></td>
- <td>Enable verbose output.</td>
- <td>Equivalent to <code>-debug-init</code>.
-<p>You can define the default verbose output options used by emulator instances in the Android environment variable
-ANDROID_VERBOSE. Define the options you want to use in a comma-delimited list, specifying only the stem of each option:
-<code>-debug-<tags>.</code> </p>
-<p>Here's an example showing ANDROID_VERBOSE defined with the <code>-debug-init</code> and <code>-debug-modem</code> options:
-<p><code>ANDROID_VERBOSE=init,modem</code></p>
-<p>For more information about debug tags, use <code><-help-debug-tags></code>.</p>
-</td>
-</tr>
-<tr>
- <td rowspan="6">Media</td>
- <td><code>-audio <backend></code></td>
- <td>Use the specified audio backend.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-audio-in <backend></code></td>
- <td>Use the specified audio-input backend.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-audio-out <backend></code></td>
- <td>Use the specified audio-output backend.</td>
- <td> </td>
-</tr>
-<!--<tr>
- <td><code>-mic <device or file></code></td>
- <td>Use device or WAV file for audio input.</td>
- <td> </td>
-</tr>
--->
-<tr>
- <td><code>-noaudio</code></td>
- <td>Disable audio support in the current emulator instance.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-radio <device></code></td>
- <td>Redirect radio modem interface to a host character device.</td>
- <td> </td></tr>
-<tr>
- <td><code>-useaudio</code></td>
- <td>Enable audio support in the current emulator instance.</td>
- <td>Enabled by default. </td>
-</tr>
-
-<tr>
- <td rowspan="7">Network</td>
- <td><code>-dns-server <servers></code></td>
- <td>Use the specified DNS server(s). </td>
- <td>The value of <code><servers></code> must be a comma-separated list of up to 4 DNS server names or
- IP addresses.</td>
-</tr>
-<tr>
- <td><code>-http-proxy <proxy></code></td>
- <td>Make all TCP connections through a specified HTTP/HTTPS proxy</td>
- <td>The value of <code><proxy></code> can be one of the following:<br>
- <code>http://<server>:<port></code><br>
- <code>http://<username>:<password>@<server>:<port></code>
- <p>The <code>http://</code> prefix can be omitted. If the <code>-http-proxy <proxy></code> command is not supplied,
- the emulator looks up the <code>http_proxy</code> environment variable and automatically uses any value matching
- the <code><proxy></code> format described above.</p></td>
-</tr>
-<tr>
- <td><code>-netdelay <delay></code></td>
- <td>Set network latency emulation to <delay>.</td>
- <td>Default value is <code>none</code>. See the table in
- <a href="{@docRoot}tools/devices/emulator.html#netdelay">Network Delay Emulation</a>
- for supported <code><delay></code> values. </td>
-</tr>
-<tr>
- <td><code>-netfast</code></td>
- <td>Shortcut for <code>-netspeed full -netdelay none</code></td>
- <td> </td></tr>
-<tr>
- <td><code>-netspeed <speed></code></td>
- <td>Set network speed emulation to <speed>.</td>
- <td>Default value is <code>full</code>. See the table in
- <a href="{@docRoot}tools/devices/emulator.html#netspeed">Network Speed Emulation</a> for
- supported <code><speed></code> values. </td>
-</tr>
-<tr>
- <td><code>-port <port></code></td>
- <td>Set the console port number for this emulator instance to <code><port></code>.</td>
- <td>The console port number must be an even integer between 5554 and 5584, inclusive. <code><port></code>+1
- must also be free and will be reserved for ADB.</td>
-</tr>
-<tr>
- <td><code>-report-console <socket></code></td>
- <td>Report the assigned console port for this emulator instance to a remote third party
- before starting the emulation. </td>
- <td><code><socket></code> must use one of these formats:
-
-<p><code>tcp:<port>[,server][,max=<seconds>]</code></br>
-<code>unix:<port>[,server][,max=<seconds>]</code></p>
-
-<p>Use <code>-help-report-console</code></p> to view more information about this topic. </td>
-</tr>
-<tr>
- <td rowspan="10">System</td>
- <td><code>-cpu-delay <delay></code></td>
- <td>Slow down emulated CPU speed by <delay> </td>
- <td>Supported values for <delay> are integers between 0 and 1000.
-
-<p>Note that the <delay> does not correlate to clock speed or other absolute metrics
-— it simply represents an abstract, relative delay factor applied non-deterministically
-in the emulator. Effective performance does not always
-scale in direct relationship with <delay> values.</p>
-</td>
-</tr>
-<tr>
- <td><code>-gps <device></code></td>
- <td>Redirect NMEA GPS to character device.</td>
- <td>Use this command to emulate an NMEA-compatible GPS unit connected to
- an external character device or socket. The format of <code><device></code> must be QEMU-specific
- serial device specification. See the documentation for 'serial -dev' at
- <a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>.
-</td>
-</tr>
-<tr>
- <td><code>-nojni</code></td>
- <td>Disable JNI checks in the Dalvik runtime.</td><td> </td></tr>
-<tr>
- <td><code>-qemu</code></td>
- <td>Pass arguments to the qemu emulator software.</td>
- <td><p class="caution"><strong>Important:</strong> When using this option, make sure it is the
- <em>last option</em> specified, since all options after it are interpretted as qemu-specific
- options.</p></td></tr>
-<tr>
- <td><code>-qemu -enable-kvm</code></td>
- <td>Enable KVM acceleration of the emulator virtual machine.</td>
- <td>This option is only effective when your system is set up to use
- <a href="{@docRoot}tools/devices/emulator.html#vm-linux">KVM-based VM acceleration</a>.
- You can optionally specify a memory size ({@code -m <size>}) for the VM, which should match
- your emulator's memory size:</p>
- {@code -qemu -m 512 -enable-kvm}<br>
- {@code -qemu -m 1024 -enable-kvm}
- </td></tr>
-<tr>
- <td><code>-qemu -h</code></td>
- <td>Display qemu help.</td>
- <td></td></tr>
-<tr>
- <td><code>-gpu on</code></td>
- <td>Turn on graphics acceleration for the emulator.</td>
- <td>This option is only available for emulators using a system image with API Level 15, revision 3
- and higher. For more information, see
- <a href="{@docRoot}tools/devices/emulator.html#accel-graphics">Using the Android
- Emulator</a>.</td></tr>
-<tr>
- <td><code>-radio <device></code></td>
- <td>Redirect radio mode to the specified character device.</td>
- <td>The format of <code><device></code> must be QEMU-specific
- serial device specification. See the documentation for 'serial -dev' at
-<a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>.
-</td>
-</tr>
-<tr>
- <td><code>-timezone <timezone></code></td>
- <td>Set the timezone for the emulated device to <timezone>, instead of the host's timezone.</td>
- <td><code><timezone></code> must be specified in zoneinfo format. For example:
-<p>"America/Los_Angeles"<br>
-"Europe/Paris"</p>
-</td>
-</tr>
-<tr>
- <td><code>-version</code></td>
- <td>Display the emulator's version number.</td>
- <td> </td>
-</tr>
-<tr>
- <td rowspan="12">UI</td>
- <td><code>-dpi-device <dpi></code></td>
- <td>Scale the resolution of the emulator to match the screen size
- of a physical device.</td>
- <td>The default value is 165. See also <code>-scale</code>.</td>
-</tr>
-<tr>
- <td><code>-no-boot-anim</code></td>
- <td>Disable the boot animation during emulator startup.</td>
- <td>Disabling the boot animation can speed the startup time for the emulator.</td>
-</tr>
-<tr>
- <td><code>-no-window</code></td>
- <td>Disable the emulator's graphical window display.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-scale <scale></code></td>
- <td>Scale the emulator window. </td>
- <td><code><scale></code> is a number between 0.1 and 3 that represents the desired scaling factor. You can
- also specify scale as a DPI value if you add the suffix "dpi" to the scale value. A value of "auto"
- tells the emulator to select the best window size.</td>
-</tr>
-<tr>
- <td><code>-raw-keys</code></td>
- <td>Disable Unicode keyboard reverse-mapping.</td>
- <td> </td></tr>
-<tr>
- <td><code>-noskin</code></td>
- <td>Don't use any emulator skin.</td>
- <td> </td></tr>
-<tr>
- <td><code>-keyset <file></code></td>
- <td>Use the specified keyset file instead of the default.</td>
- <td>The keyset file defines the list of key bindings between the emulator and the host keyboard.
- For more information, use <code>-help-keyset</code> to print information about this topic.
-</td>
-</tr>
-<tr>
- <td><code>-onion <image></code></td>
- <td>Use overlay image over screen.</td>
- <td>No support for JPEG. Only PNG is supported.</td></tr>
-<tr>
- <td><code>-onion-alpha <percent></code></td>
- <td>Specify onion skin translucency value (as percent).
- <td>Default is 50.</td>
-</tr>
-<tr>
- <td><code>-onion-rotation <position></code></td>
- <td>Specify onion skin rotation.
- <td><code><position></code> must be one of the values 0, 1, 2, 3.</td>
-</tr>
-<tr>
- <td><code>-skin <skinID></code></td>
- <td>This emulator option is deprecated. </td>
- <td>Please set skin options using AVDs, rather than by using this emulator
-option. Using this option may yield unexpected and in some cases misleading
-results, since the density with which to render the skin may not be defined.
-AVDs let you associate each skin with a default density and override the default
-as needed. For more information, see <a
-href="{@docRoot}tools/devices/managing-avds.html">Managing Virtual Devices
-with AVD Manager</a>.
-</td>
-</tr>
-<tr>
- <td><code>-skindir <dir></code></td>
- <td>This emulator option is deprecated. </td>
- <td>See comments for <code>-skin</code>, above.</td>
-</tr>
-<tr>
- <td rowspan="9">Help</td>
- <td><code>-help</code></td>
- <td>Print a list of all emulator options.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-help-all</code></td>
- <td>Print help for all startup options.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-help-<option></code></td>
- <td>Print help for a specific startup option.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-help-debug-tags</code></td>
- <td>Print a list of all tags for <code>-debug <tags></code>.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-help-disk-images</code></td>
- <td>Print help for using emulator disk images.</td>
- <td> </td>
- </tr>
-<tr>
- <td><code>-help-environment</code></td>
- <td>Print help for emulator environment variables.</td>
- <td> </td>s
-</tr><tr>
- <td><code>-help-keys</code></td>
- <td>Print the current mapping of keys.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-help-keyset-file</code></td>
- <td>Print help for defining a custom key mappings file.</td>
- <td> </td>
-</tr>
-<tr>
- <td><code>-help-virtual-device</code></td>
- <td>Print help for Android Virtual Device usage.</td>
- <td> </td>
-</tr>
-</table>
-
-
-<h2 id="acceleration">Using Hardware Acceleration</h2>
-
-<p>To make the Android emulator run faster and be more responsive, you can configure it to
-take advantage of hardware acceleration, using a combination of configuration options, specific
-Android system images and hardware drivers.</p>
-
-
-<h3 id="accel-graphics">Configuring Graphics Acceleration</h3>
-
-<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the graphics
-acceleration feature for the emulator is experimental; be alert for incompatibilities and
-errors when using this feature. </p>
-
-<p>Graphics acceleration for the emulator takes advantage of your development computer's graphics
-hardware, specifically its graphics processing unit (GPU), to make screen drawing faster. To use
-the graphics acceleration feature, you must have the following versions of the Android development
-tools installed:</p>
-
-<ul>
- <li>Android SDK Tools, Revision 17 or higher</li>
- <li>Android SDK Platform API 15, Revision 3 or higher</li>
-</ul>
-
-<p>Use the <a href="{@docRoot}sdk/installing/index.html#AddingComponents">Android SDK
-Manager</a> to install these components:</p>
-
-<p class="note"><strong>Note:</strong> Not all applications are compatible with graphics hardware
-acceleration. In particular, the Browser application and applications using the {@link
-android.webkit.WebView} component are not compatible with graphics acceleration.</p>
-
-<p>To configure an AVD to use graphics acceleration:</p>
-
-<ol>
- <li>Make sure you have the required SDK components installed (listed above).</li>
- <li>Start the AVD Manager and create a new AVD with the <strong>Target</strong> value of
-<strong>Android 4.0.3 (API Level 15)</strong>, revision 3 or higher.</li>
- <li>If you want to have graphics acceleration enabled by default for this AVD, in the
-<strong>Hardware</strong> section, click <strong>New</strong>, select <strong>GPU emulation</strong>
-and set the value to <strong>Yes</strong>.
- <p class="note"><strong>Note:</strong> You can also enable graphics acceleration when you
-start an emulator using command line options as describe in the next section.</p>
- </li>
- <li>Name the AVD instance and select any other configuration options.
- <p class="caution"><strong>Caution:</strong> Do not select the <strong>Snapshot: Enabled</strong>
-option. Snapshots are not supported for emulators with graphics acceleration enabled.</p>
- </li>
- <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
-</ol>
-
-<p>If you set <strong>GPU emulation</strong> to <strong>Yes</strong> for your AVD, then graphics
-acceleration is automatically enabled when you run it. If you did not enable <strong>GPU
-emulation</strong> when you created the AVD, you can still enable it at runtime.</p>
-
-<p>To enable graphics acceleration at runtime for an AVD:</p>
-
-<ul>
- <li>If you are running the emulator from the command line, just include the {@code -gpu on}
-option:
-<pre>emulator -avd <avd_name> -gpu on</pre>
- <p class="note"><strong>Note:</strong> You must specify an AVD configuration that uses
-Android 4.0.3 (API Level 15, revision 3) or higher system image target. Graphics acceleration is not
-available for earlier system images.</p>
- </li>
- <li>If you are running the emulator from Android Studio, run your Android application using an AVD
-with the {@code -gpu on} option enabled:
- <ol>
- <li>In Android Studio, click your Android application module folder and then select
- <strong>Run > Edit Configurations...</strong></li>
- <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
- run configuration or create a new configuration.</li>
- <li>Under the <strong>Target Device </strong> options,
- select the AVD you created in the previous procedure.</li>
- <li>In the <strong>Emulator</strong> tab, in the
- <strong>Additional command line options</strong> field, enter:<br>
- {@code -gpu on}</li>
- <li>Run your Android project using this run configuration.</li>
- </ol>
- </li>
-</ul>
-
-
-<h3 id="accel-vm">Configuring Virtual Machine Acceleration</h2>
-
-<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the virtual machine
-acceleration feature for the emulator is experimental; be alert for incompatibilities and errors
-when using this feature.</p>
-
-<p>Many modern CPUs provide extensions for running virtual machines (VMs) more efficiently. Taking
-advantage of these extensions with the Android emulator requires some additional configuration of
-your development system, but can significantly improve the execution speed. Before attempting to use
-this type of acceleration, you should first determine if your development system’s CPU supports one
-of the following virtualization extensions technologies:</p>
-
-<ul>
- <li>Intel Virtualization Technology (VT, VT-x, vmx) extensions</li>
- <li>AMD Virtualization (AMD-V, SVM) extensions (only supported for Linux)</li>
-</ul>
-
-<p>The specifications from the manufacturer of your CPU should indicate if it supports
-virtualization extensions. If your CPU does not support one of these virtualization technologies,
-then you cannot use virtual machine acceleration.</p>
-
-<p class="note"><strong>Note:</strong> Virtualization extensions are typically enabled through
-your computer's BIOS and are frequently turned off by default. Check the documentation for your
-system's motherboard to find out how to enable virtualization extensions.</p>
-
-<p>Once you have determined that your CPU supports virtualization extensions, make sure you can work
-within these additional requirements of running an emulator inside an accelerated virtual
-machine:</p>
-
-<ul>
- <li><strong>x86 AVD Only</strong> - You must use an AVD that is uses an x86 system image target.
-AVDs that use ARM-based system images cannot be accelerated using the emulator configurations
-described here.</li>
- <li><strong>Not Inside a VM</strong> - You cannot run a VM-accelerated emulator inside another
-virtual machine, such as a VirtualBox or VMWare-hosted virtual machine. You must run the emulator
-directly on your system hardware.</li>
- <li><strong>Other VM Drivers</strong> - If you are running another virtualization technology on
-your system such as VirtualBox or VMWare, you may need to unload the driver for that virtual machine
-hosting software before running an accelerated emulator.</li>
- <li><strong>OpenGL® Graphics</strong> - Emulation of OpenGL ES graphics may not perform at the
-same level as an actual device.</li>
-</ul>
-
-<p>To use virtual machine acceleration with the emulator, you need the following version of Android
-development tools. Use the <a href="{@docRoot}sdk/installing/index.html#AddingComponents">Android SDK
-Manager</a> to install these components:</p>
-
-<ul>
- <li>Android SDK Tools, Revision 17 or higher</li>
- <li>Android x86-based system image</li>
-</ul>
-
-<p>If your development environment meets all of the requirements for running a VM-accelerated
-emulator, you can use the AVD Manager to create an x86-based AVD configuration:</p>
-
-<ol>
- <li>In the Android SDK Manager, make sure you have an x86-based <strong>System Image</strong>
- installed for your target Android version. If you do not have an x86 <strong>System
- Image</strong> installed, select one in the Android SDK Manager and install it.
- <p class="note"><strong>Tip:</strong> System images are listed under each API Level in the SDK
- Manager. An x86 system image may not be available for all API levels.</p>
- </li>
- <li>Start the AVD Manager and create a new AVD with an x86 value for the
-<strong>CPU/ABI</strong> field. You may need to select a specific <strong>Target</strong> value, or
-select a <strong>Target</strong> value and then select a specific <strong>CPU/ABI</strong>
-option.</li>
- <li>Name the emulator instance and select any other configuration options.</li>
- <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
-</ol>
-
-<h4 id="vm-windows">Configuring VM Acceleration on Windows</h4>
-
-<p>Virtual machine acceleration for Windows requires the installation of the Intel Hardware
-Accelerated Execution Manager (Intel HAXM). The software requires an Intel CPU with
-Virtualization Technology (VT) support and one of the following operating systems:</p>
-
-<ul>
- <li>Windows 7 (32/64-bit)</li>
- <li>Windows Vista (32/64-bit)</li>
- <li>Windows XP (32-bit only)</li>
-</ul>
-
-<p>To install the virtualization driver:</p>
-
-<ol>
- <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
-Hardware Accelerated Execution Manager</strong>.</li>
- <li>After the download completes, execute {@code
-<sdk>/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.exe}.</li>
- <li>Follow the on-screen instructions to complete installation.</li>
- <li>After installation completes, confirm that the virtualization driver is operating correctly by
-opening a command prompt window and running the following command:
- <pre>sc query intelhaxm</pre>
- <p>You should see a status message including the following information:</p>
-<pre>
-SERVICE_NAME: intelhaxm
- ...
- STATE : 4 RUNNING
- ...
-</pre>
- </li>
-</ol>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-<ul>
- <li>If you are running the emulator from the command line, just specify an x86-based AVD:
-<pre>emulator -avd <avd_name></pre>
- <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
- </li>
- <li>If you are running the emulator from Android Studio, run your Android application with an x86-based
-AVD:
- <ol>
- <li>In Android Studio, click your Android project folder and then select <strong>Run > Edit
-Configurations...</strong></li>
- <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
-run configuration or create a new configuration.</li>
- <li>Under the <strong>Target Device</strong> options, select the x86-based AVD you created
-previously.</li>
- <li>Run your Android project using this run configuration.</li>
- </ol>
- </li>
-</ul>
-
-<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
-its installer.</p>
-
-<p>You can stop using the virtualization driver by uninstalling it. Re-run the installer or use
-the Control Panel to remove the software.</p>
-
-
-<h4 id="vm-mac">Configuring VM Acceleration on Mac</h4>
-
-<p>Virtual machine acceleration on a Mac requires the installation of the Intel Hardware Accelerated
-Execution Manager (Intel HAXM) kernel extension to allow the Android emulator to make use of CPU
-virtualization extensions. The kernel extension is compatible with Mac OS X Snow Leopard (version
-10.6.0) and higher.</p>
-
-<p>To install the Intel HAXM kernel extension:</p>
-
-<ol>
- <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
-Hardware Accelerated Execution Manager</strong>.
- <li>After the download completes, execute
- {@code <sdk>/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg}.</li>
- <li>Double click the <strong>IntelHAXM.mpkg</strong> icon to begin installation.</li>
- <li>Follow the on-screen instructions to complete installation.</li>
- <li>After installation completes, confirm that the new kernel extension is operating correctly by
-opening a terminal window and running the following command:
- <pre>kextstat | grep intel</pre>
- <p>You should see a status message containing the following extension name, indicating that the
- kernel extension is loaded:</p>
- <pre>com.intel.kext.intelhaxm</pre>
- </li>
-</ol>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-<ul>
- <li>If you are running the emulator from the command line, just specify an x86-based AVD:
-<pre>emulator -avd <avd_name></pre>
- <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
- </li>
- <li>If you are running the emulator from Andriod Studio, run your Android application with an x86-based
-AVD:
- <ol>
- <li>In Android Studio, click your Android module folder and then select <strong>Run > Edit
-Configurations...</strong></li>
- <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
-run configuration or create a new configuration.</li>
- <li>Under the <strong>Target Device</strong> options,
- select the x86-based AVD you created previously.</li>
- <li>Run your Android project using this run configuration.</li>
- </ol>
- </li>
-</ul>
-
-<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
-the installer.</p>
-
-<p>You can stop using the virtualization kernel driver by uninstalling it. Before removing it, shut
-down any running x86 emulators. To unload the virtualization kernel driver, run the following
-command in a terminal window:</p>
-
-<pre>sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh</pre>
-
-<h4 id="vm-linux">Configuring VM Acceleration on Linux</h4>
-
-<p>Linux-based systems support virtual machine acceleration through the KVM software package. Follow
-<a href="https://www.google.com/?q=kvm+installation">instructions for installing KVM</a> on your
-Linux system, and verify that KVM is enabled. In addition to following the installation
-instructions, be aware of these configuration requirements:</p>
-
-<ul>
- <li>Running KVM requires specific user permissions, make sure you have sufficient permissions
-according to the KVM installation instructions.</li>
- <li>If you use another virtualization technology in your Linux platform, unload its kernel driver
-before running the x86 emulator. For example, the VirtualBox driver program is {@code vboxdrv}.</li>
-</ul>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-
-<ul>
- <li>If you are running the emulator from the command line, start the emulator with an x86-based
-AVD and include the KVM options:
-<pre>emulator -avd <avd_name> -qemu -m 512 -enable-kvm</pre>
- <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
- </li>
- <li>If you are running the emulator from Android Studio, run your Android application with an
- x86-based AVD and include the KVM options:
- <ol>
- <li>In Android Studio, click your Android module folder and then select <strong>Run > Edit
-Configurations...</strong></li>
- <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
-run configuration or create a new configuration.</li>
- <li>Under the <strong>Target Device</strong> options, select the x86-based AVD you created
-previously.</li>
- <li>In the <strong>Emulator</strong> tab, in the
- <strong>Additional command line options</strong> field, enter:
- <pre>-qemu -m 512 -enable-kvm</pre>
- </li>
- <li>Run your Android project using this run configuration.</li>
- </ol>
- </li>
-</ul>
-
-<p class="note"><strong>Important:</strong> When using the {@code -qemu} command line option, make sure
-it is the last parameter in your command. All subsequent options are interpreted as qemu-specific
-parameters.</p>
-
-
-<h2 id="sdcard">Using SD Card Emulation</h2>
-
-<p>You can create a disk image and then load it to the emulator at startup, to
-simulate the presence of a user's SD card in the device. To do this, you can specify
-an SD card image when you create an AVD, or you can use the mksdcard utility included
-in the SDK.</p>
-
-<p>The following sections describe how to create an SD card disk image, how to copy
-files to it, and how to load it in the emulator at startup. </p>
-
-<p>Note that you can only load a disk image at emulator startup. Similarly, you
-can not remove a simulated SD card from a running emulator. However, you can
-browse, send files to, and copy/remove files from a simulated SD card either
-with adb or the emulator. </p>
-
-<p>The emulator supports emulated SDHC cards, so you can create an SD card image
-of any size up to 128 gigabytes.</p>
-
-
-<h3 id="sdcard-creating">Creating an SD card image</h3>
-
-<p>There are several ways of creating an SD card image. The easiest way is to use the
-<strong>AVD Manager</strong> to create a new SD card by specifying a size when you create an AVD.
-You can also use the {@code android} command line tool when creating an AVD. Just add the
-<code>-c</code> option to your command: </p>
-
-<pre>android create avd -n <avd_name> -t <targetID> -c <size>[K|M]</pre>
-
-<p>The <code>-c</code> option can also be used to to specify a path to an SD card
-image for the new AVD. For more information, see <a
-href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing Virtual Devices
-from the Command Line</a>.
-</p>
-
-<p>You can also use the mksdcard tool, included in the SDK, to create a FAT32 disk
-image that you can load in the emulator at startup. You can access mksdcard in
-the tools/ directory of the SDK and create a disk image like this: </p>
-
-<pre>mksdcard <size> <file></pre>
-
-<p>For example:</p>
-
-<pre>mksdcard 1024M sdcard1.iso</pre>
-
-<p>For more information, see <a
-href="{@docRoot}tools/help/mksdcard.html"><code>mksdcard</code></a>.</p>
-
-
-<h3 id="sdcard-files">Copying files to an SD card image</h3>
-
-<p>Once you have created the disk image, you can copy files to it prior to
-loading it in the emulator. To copy files, you can mount the image as a loop
-device and then copy the files to it, or you can use a utility such as {@code mtools} to
-copy the files directly to the image. The {@code mtools} package is available for Linux,
-Mac, and Windows.</p>
-
-<p>Alternatively, you can use the {@code adb push} command to move files onto an SD card image
-while it is loaded in an emulator. For more information see the <a
-href="{@docRoot}tools/help/adb.html#copyfiles">{@code adb push}</a> documentation.</p>
-
-<h3 id="sdcard-loading">Loading an SD card image</h3>
-
-<p>By default, the emulator loads the SD card image that is stored with the active
-AVD (see the <code>-avd</code> startup option).</p>
-
-<p>Alternatively, you can start the emulator with the
-<code>-sdcard</code> flag and specify the name and path of your image (relative
-to the current working directory): </p>
-
-<pre>emulator -sdcard <filepath></pre>
-
-
-<h2 id="diskimages">Working With Emulator Disk Images</h2>
-
-<p>The emulator uses mountable disk images stored on your development machine to
-simulate flash (or similar) partitions on an actual device. For example, it uses a
-disk image containing an emulator-specific kernel, the Android system, a
-ramdisk image, and writeable images for user data and simulated SD card.</p>
-
-<p>To run properly, the emulator requires access to a specific set of disk image
-files. By default, the Emulator always looks for the disk images in the
-private storage area of the AVD in use. If no images exist there when
-the Emulator is launched, it creates the images in the AVD directory based on
-default versions stored in the SDK. </p>
-
-<p class="note"><strong>Note:</strong> The default storage location for
-AVDs is in <code>~/.android/avd</code> on OS X and Linux, <code>C:\Documents and
-Settings\<user>\.android\</code> on Windows XP, and
-<code>C:\Users\<user>\.android\</code>
-on Windows Vista.</p>
-
-<p>To let you use alternate or custom versions of the image files, the emulator
-provides startup options that override the default locations and filenames of
-the image files. When you use one of these options, the emulator searches for the image
-file under the image name or location that you specify; if it can not locate the
-image, it reverts to using the default names and location.</p>
-
-<p>The emulator uses three types of image files: default image files, runtime
-image files, and temporary image files. The sections below describe how to
-override the location/name of each type of file. </p>
-
-<h3 id="defaultimages">Default image files</h3>
-
-<p>When the emulator launches, but does not find an existing user data image in
-the active AVD's storage area, it creates a new one from a default version
-included in the SDK. The default user data image is read-only. The image
-files are read-only.</p>
-
-<p>The emulator provides the <code>-system <dir></code> startup option to
-let you override the location where the emulator looks for the default
-user data image. </p>
-
-<p>The emulator also provides a startup option that lets you override the name
-of the default user data image, as described in the following table. When you use the
-option, the emulator looks in the default directory, or in a custom location
-(if you specified <code>-system <dir></code>). </p>
-
-
-<table>
-<tr>
- <th width="10%" >Name</th>
- <th width="30%" >Description</th>
- <th width="40%" >Comments</th>
-</tr>
-
-<!--
-<tr>
- <td><code>kernel-qemu.img</code></td>
- <td>The emulator-specific Linux kernel image</td>
- <td>Override using <code>-kernel <file></code></td>
-</tr>
-
-<tr>
- <td><code>ramdisk.img</code></td>
- <td>The ramdisk image used to boot the system.</td>
- <td>Override using <code>-ramdisk <file></code></td>
-</tr>
-
-<tr>
- <td><code>system.img</code></td>
- <td>The <em>initial</em> Android system image.</td>
- <td>Override using <code>-image <file></code></td>
-</tr>
--->
-<tr>
- <td><code>userdata.img</code></td>
- <td>The <em>initial</em> user-data disk image</td>
- <td>Override using <code>-initdata <file></code>. Also see
-<code>-data <file></code>, below.</td>
-</tr>
-
-</table>
-
-<h3 id="runtimeimages">Runtime images: user data and SD card</h3>
-
-<p>At runtime, the emulator reads and writes data to two disk images: a
-user-data image and (optionally) an SD card image. These images emulate the user-data
-partition and removable storage media on actual device. </p>
-
-<p>The emulator provides a default user-data disk image. At startup, the emulator
-creates the default image as a copy of the system user-data image (user-data.img),
-described above. The emulator stores the new image with the files of the active AVD.</p>
-
-<!--
-<p>The emulator provides a startup option, <code>-datadir <dir></code>,
-that you can use to override the location under which the emulator looks for the runtime
-image files. </p>
--->
-
-<p>The emulator provides startup options to let you override the actual names and storage
-locations of the runtime images to load, as described in the following table. When you use one
-of these options, the emulator looks for the specified file(s) in the current working directory,
-in the AVD directory, or in a custom location (if you specified a path with the filename). </p>
-
-<table>
-<tr>
- <th width="10%" >Name</th>
- <th width="30%" >Description</th>
- <th width="40%" >Comments</th>
-</tr>
-<tr>
- <td><code>userdata-qemu.img</code></td>
- <td>An image to which the emulator writes runtime user-data for a unique user.</td>
- <td>Override using <code>-data <filepath></code>, where <code><filepath></code> is the
-path the image, relative to the current working directory. If you supply a filename only,
-the emulator looks for the file in the current working directory. If the file at <code><filepath></code> does
-not exist, the emulator creates an image from the default <code>userdata.img</code>, stores it under the name you
-specified, and persists user data to it at shutdown. </td>
-</tr>
-
-<tr>
- <td><code>sdcard.img</code></td>
- <td>An image representing an SD card inserted into the emulated device.</td>
- <td>Override using <code>-sdcard <filepath></code>, where <code><filepath></code> is the
-path the image, relative to the current working directory. If you supply a filename only,
-the emulator looks for the file in the current working directory. </td>
-</tr>
-
-</table>
-
-<h4>User-Data Image</h4>
-
-<p>Each emulator instance uses a writeable user-data image to store user- and
-session-specific data. For example, it uses the image to store a unique user's
-installed application data, settings, databases, and files. </p>
-
-<p>At startup, the emulator attempts to load a user-data image stored during
-a previous session. It looks for the file in the current working directory,
-in the AVD directory described in a previous section and at the custom location/name
-that you specified at startup. </p>
-
-<ul>
-<li>If it finds a user-data image, it mounts the image and makes it available
-to the system for reading and writing of user data. </li>
-<li>If it does not find one, it creates an image by copying the system user-data
-image (userdata.img), described above. At device power-off, the system persists
-the user data to the image, so that it will be available in the next session.
-Note that the emulator stores the new disk image at the location/name that you
-specify in <code>-data</code> startup option.</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Because of the AVD configurations used in the emulator,
-each emulator instance gets its own dedicated storage. There is no longer a need
-to use the <code>-d</code> option to specify an instance-specific storage area.</p>
-
-<h4>SD Card</h4>
-
-<P>Optionally, you can create a writeable disk image that the emulator can use
-to simulate removeable storage in an actual device. For information about how to create an
-emulated SD card and load it in the emulator, see <a href="#sdcard">SD Card Emulation</a></p>
-
-<p>You can also use the android tool to automatically create an SD Card image
-for you, when creating an AVD. For more information, see <a
-href="{@docRoot}tools/devices/managing-avds.html">Managing Virtual Devices with AVD
-Manager</a>.
-
-
-<h3 id="temporaryimages">Temporary Images</h3>
-
-<p>The emulator creates two writeable images at startup that it deletes at
-device power-off. The images are: </p>
-
-<ul>
- <li>A writable copy of the Android system image</li>
- <li>The <code>/cache</code> partition image</li>
-</ul>
-
-<p>The emulator does not permit renaming the temporary system image or
-persisting it at device power-off. </p>
-
-<p>The <code>/cache</code> partition image is initially empty, and is used by
-the browser to cache downloaded web pages and images. The emulator provides an
-<code>-cache <file></code>, which specifies the name of the file in which
-to persist the <code>/cache</code> image at device power-off. If <code><file>
-</code> does not exist, the emulator creates it as an empty file. </p>
-
-<p>You can also disable the use of the cache partition by specifying the
-<code>-nocache</code> option at startup. </p>
-
-
-<h2 id="emulatornetworking">Setting Up Emulator Networking</h2>
-
-<p>The emulator provides versatile networking capabilities that you can use to
-set up complex modeling and testing environments for your application. The
-sections below introduce the emulator's network architecture and capabilities.
-</p>
-
-<h3 id="networkaddresses">Network Address Space</h3>
-
-<p>Each instance of the emulator runs behind a virtual router/firewall service
-that isolates it from your development machine's network interfaces and settings
-and from the internet. An emulated device can not see your development machine
-or other emulator instances on the network. Instead, it sees only that it is
-connected through Ethernet to a router/firewall.</p>
-
-<p>The virtual router for each instance manages the 10.0.2/24 network address
-space — all addresses managed by the router are in the form of
-10.0.2.<xx>, where <xx> is a number. Addresses within this space are
-pre-allocated by the emulator/router as follows:</p>
-
-<table>
- <tr>
- <th>Network Address</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>10.0.2.1</td>
- <td>Router/gateway address </td>
- </tr>
- <tr>
- <td>10.0.2.2</td>
- <td>Special alias to your host loopback interface (i.e., 127.0.0.1 on your
-development machine)</td>
- </tr>
- <tr>
- <td>10.0.2.3</td>
- <td>First DNS server</td>
- </tr>
- <tr>
- <td>10.0.2.4 / 10.0.2.5 / 10.0.2.6</td>
- <td>Optional second, third and fourth DNS server (if any) </td>
- </tr>
- <tr>
- <td>10.0.2.15</td>
- <td>The emulated device's own network/ethernet interface</td>
- </tr>
- <tr>
- <td>127.0.0.1</td>
- <td>The emulated device's own loopback interface </td>
- </tr>
-</table>
-
-<p>Note that the same address assignments are used by all running emulator
-instances. That means that if you have two instances running concurrently on
-your machine, each will have its own router and, behind that, each will have an
-IP address of 10.0.2.15. The instances are isolated by a router and can
-<em>not</em> see each other on the same network. For information about how to
-let emulator instances communicate over TCP/UDP, see <a
-href="#connecting">Connecting Emulator Instances</a>.</p>
-
-<p>Also note that the address 127.0.0.1 on your development machine corresponds
-to the emulator's own loopback interface. If you want to access services running
-on your development machine's loopback interface (a.k.a. 127.0.0.1 on your
-machine), you should use the special address 10.0.2.2 instead.</p>
-
-<p>Finally, note that each emulated device's pre-allocated addresses are
-specific to the Android emulator and will probably be very different on real
-devices (which are also very likely to be NAT-ed, i.e., behind a
-router/firewall)</p>
-
-
-<h3 id="networkinglimitations">Local Networking Limitations</h3>
-
-<p>Android applications running in an emulator can connect to the network available on your
-workstation. However, they connect through the emulator, not directly to hardware, and the emulator
-acts like a normal application on your workstation. This means that the emulator, and thus your
-Android applications, are subject to some limitations:</p>
-
-<ul>
- <li>Communication with the emulated device may be blocked by a firewall
-program running on your machine.</li>
- <li>Communication with the emulated device may be blocked by another
-(physical) firewall/router to which your machine is connected.</li>
-</ul>
-
-<p>The emulator's virtual router should be able to handle all outbound TCP and
-UDP connections/messages on behalf of the emulated device, provided your
-development machine's network environment allows it to do so. There are no
-built-in limitations on port numbers or ranges except the one imposed by your
-host operating system and network.</p>
-
-<p>Depending on the environment, the emulator may not be able to support other
-protocols (such as ICMP, used for "ping") might not be supported. Currently, the
-emulator does not support IGMP or multicast. </p>
-
-<h3 id="redirection">Using Network Redirection</h3>
-
-<p>To communicate with an emulator instance behind its virtual router, you need
-to set up network redirection on the virtual router. Clients can then connect
-to a specified guest port on the router, while the router directs traffic
-to/from that port to the emulated device's host port. </p>
-
-<p>To set up the network redirection, you create a mapping of host and guest
-ports/addresses on the emulator instance. There are two ways to set up
-network redirection: using emulator console commands and using the ADB tool, as
-described below. </p>
-
-
-<h4 id="consoleredir">Setting up Redirection through the Emulator Console</h4>
-
-<p>Each emulator instance provides a control console the you can connect to, to
-issue commands that are specific to that instance. You can use the
-<code>redir</code> console command to set up redirection as needed for an
-emulator instance. </p>
-
-<p>First, determine the console port number for the target emulator instance.
-For example, the console port number for the first emulator instance launched is
-5554. Next, connect to the console of the target emulator instance, specifying
-its console port number, as follows: </p>
-
-<pre><code>telnet localhost 5554</code></pre>
-
-<p>Once connected, use the <code>redir</code> command to work with redirection.
-To add a redirection, use:</p>
-
-<pre><code>add <protocol>:<host-port>:<guest-port></code>
-</pre>
-
-<p>where <code><protocol></code> is either <code>tcp</code> or <code>udp</code>,
-and <code><host-port></code> and <code><guest-port></code> sets the
-mapping between your own machine and the emulated system, respectively. </p>
-
-<p>For example, the following command sets up a redirection that handles all
-incoming TCP connections to your host (development) machine on 127.0.0.1:5000
-and will pass them through to the emulated system's 10.0.2.15:6000.:</p>
-
-<pre>redir add tcp:5000:6000</pre>
-
-<p>To delete a redirection, you can use the <code>redir del</code> command. To
-list all redirection for a specific instance, you can use <code>redir
-list</code>. For more information about these and other console commands, see
-<a href="#console">Using the Emulator Console</a>. </p>
-
-<p>Note that port numbers are restricted by your local environment. this typically
-means that you cannot use host port numbers under 1024 without special
-administrator privileges. Also, you won't be able to set up a redirection for a
-host port that is already in use by another process on your machine. In that
-case, <code>redir</code> generates an error message to that effect. </p>
-
-<h4 id="adbredir">Setting Up Redirection through ADB</h4>
-
-<p>The Android Debug Bridge (ADB) tool provides port forwarding, an alternate
-way for you to set up network redirection. For more information, see <a
-href="{@docRoot}tools/help/adb.html#forwardports">Forwarding Ports</a> in the ADB
-documentation.</p>
-
-<p>Note that ADB does not currently offer any way to remove a redirection,
-except by killing the ADB server.</p>
-
-
-<h3 id="dns">Configuring the Emulator's DNS Settings</h3>
-
-<p>At startup, the emulator reads the list of DNS servers that your system is
-currently using. It then stores the IP addresses of up to four servers on this
-list and sets up aliases to them on the emulated addresses 10.0.2.3, 10.0.2.4,
-10.0.2.5 and 10.0.2.6 as needed. </p>
-
-<p>On Linux and OS X, the emulator obtains the DNS server addresses by parsing
-the file <code>/etc/resolv.conf</code>. On Windows, the emulator obtains the
-addresses by calling the <code>GetNetworkParams()</code> API. Note that this
-usually means that the emulator ignores the content of your "hosts" file
-(<code>/etc/hosts</code> on Linux/OS X, <code>%WINDOWS%/system32/HOSTS</code>
- on Windows).</P>
-
-<p>When starting the emulator at the command line, you can also use the
-<code>-dns-server <serverList></code> option to manually specify the
-addresses of DNS servers to use, where <serverList> is a comma-separated
-list of server names or IP addresses. You might find this option useful if you
-encounter DNS resolution problems in the emulated network (for example, an
-"Unknown Host error" message that appears when using the web browser).</p>
-
-
-<h3 id="proxy">Using the Emulator with a Proxy</h3>
-
-<p>If your emulator must access the Internet through a proxy server, you can use
-the <code>-http-proxy <proxy></code> option when starting the emulator, to
-set up the appropriate redirection. In this case, you specify proxy information
-in <code><proxy></code> in one of these formats:</p>
-
-<pre>http://<machineName>:<port></pre>
-
-<p>or</p>
-
-<pre>http://<username>:<password>@<machineName>:<port></pre>
-
-<p>The <code>-http-proxy</code> option forces the emulator to use the specified
-HTTP/HTTPS proxy for all outgoing TCP connections. Redirection for UDP is not
-currently supported.</p>
-
-<p>Alternatively, you can define the environment variable
-<code>http_proxy</code> to the value you want to use for
-<code><proxy></code>. In this case, you do not need to specify a value for
-<code><proxy></code> in the <code>-http-proxy</code> command — the
-emulator checks the value of the <code>http_proxy</code> environment variable at
-startup and uses its value automatically, if defined. </p>
-
-<p>You can use the <code>-verbose-proxy</code> option to diagnose proxy
-connection problems.</p>
-
-
-<h3 id="connecting">Interconnecting Emulator Instances</h3>
-
-<p>To allow one emulator instance to communicate with another, you must set up
-the necessary network redirection as illustrated below. </p>
-
-<p>Assume that your environment is</p>
-
-<ul>
- <li>A is you development machine</li>
- <li>B is your first emulator instance, running on A</li>
- <li>C is your second emulator instance, also running on A</li>
-</ul>
-
-<p>and you want to run a server on B, to which C will connect, here is how you
-could set it up: </p>
-
-<ol>
- <li>Set up the server on B, listening to
-<code>10.0.2.15:<serverPort></code></li>
- <li>On B's console, set up a redirection from
-<code>A:localhost:<localPort></code> to <code>
-B:10.0.2.15:<serverPort></code></li>
- <li>On C, have the client connect to <code>10.0.2.2:<localPort></code></li>
-</ol>
-
-<p>For example, if you wanted to run an HTTP server, you can select
-<code><serverPort></code> as 80 and <code><localPort></code> as
-8080:</p>
-
-<ul>
- <li>B listens on 10.0.2.15:80</li>
- <li>On B's console, issue <code>redir add tcp:8080:80</code></li>
- <li>C connects to 10.0.2.2:8080</li>
-</ul>
-
-<h3 id="calling">Sending a Voice Call or SMS to Another Emulator Instance</h3>
-
-<p>The emulator automatically forwards simulated voice calls and SMS messages from one instance to
-another. To send a voice call or SMS, use the dialer application or SMS application, respectively,
-from one of the emulators.</p>
-
-<p>To initiate a simulated voice call to another emulator instance:</p>
-<ol>
-<li>Launch the dialer application on the originating emulator instance.</li>
-<li>As the number to dial, enter the console port number of the instance you'd like to call. You can determine
- the console port number of the target instance by checking its window title, where the
- console port number is reported as "Android Emulator (<port>). </li>
-<li>Press "Dial". A new inbound call appears in the target emulator instance. </li>
-</ol>
-
-<p>To send an SMS message to another emulator instance, launch the SMS application (if available). Specify the console port number of the target emulator instance as as the SMS address, enter the message text, and send the message. The message is delivered to the target emulator instance. </p>
-
-<p>You can also connect to an emulator instance's console to simulate an incoming voice call or SMS. For more information, see <a href="#telephony">Telephony Emulation</a> and <a href="#sms">SMS Emulation</a>.
-
-
-<h2 id="console">Using the Emulator Console</h2>
-
-<p>Each running emulator instance provides a console that lets you query and control the emulated
-device environment. For example, you can use the console to manage port redirection, network
-characteristics, and telephony events while your application is running on the emulator. To
-access the console and enter commands, use telnet to connect to the console's port number.</p>
-
-<p>To connect to the console of any running emulator instance at any time, use this command: </p>
-
-<pre>telnet localhost <console-port></pre>
-
-<p>An emulator instance occupies a pair of adjacent ports: a console port and an {@code adb} port.
-The port numbers differ by 1, with the {@code adb} port having the higher port number. The console
-of the first emulator instance running on a given machine uses console port 5554 and {@code adb}
-port 5555. Subsequent instances use port numbers increasing by two — for example, 5556/5557,
-5558/5559, and so on. Up to 16 concurrent emulator instances can run a console facility. </p>
-
-<p>To connect to the emulator console, you must specify a valid console port. If multiple emulator instances are running, you need to determine the console port of the emulator instance you want to connect to. You can find the instance's console port listed in the title of the instance window. For example, here's the window title for an instance whose console port is 5554:</p>
-
-<p><code>Android Emulator (5554)</code></p>
-
-<p>Alternatively, you can use the <code>adb devices</code> command, which prints a list of running emulator instances and their console port numbers. For more information, see <a href="{@docRoot}tools/help/adb.html#devicestatus">Querying for Emulator/Device Instances</a> in the adb documentation.</p>
-
-<p class="note">Note: The emulator listens for connections on ports 5554-5587 and accepts connections only from localhost.</p>
-
-<p>Once you are connected to the console, you can then enter <code>help [command]</code> to see a list of console commands and learn about specific commands. </p>
-
-<p>To exit the console session, use <code>quit</code> or <code>exit</code>.</p>
-
-<p>The following sections below describe the major functional areas of the console.</p>
-
-
-<h3 id="portredirection">Port Redirection</h3>
-
-<p>You can use the console to add and remove port redirection while the emulator is running. After
-you connect to the console, manage port redirection by entering the following command:</p>
-
-<pre>redir <list|add|del> </pre>
-
-<p>The <code>redir</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
- <th width="25%" >Subcommand
- <th width="30%" >Description</th>
- <th width="35%">Comments</th>
-</tr>
-
- <tr>
- <td><code>list</code></td>
- <td>List the current port redirection.</td>
- <td> </td>
- </tr>
-
-
-<tr>
- <td><code>add <protocol>:<host-port>:<guest-port></code></td>
- <td>Add a new port redirection.</td>
-<td><ul><li><protocol> must be either "tcp" or "udp"</li>
-<li><host-port> is the port number to open on the host</li>
-<li><guest-port> is the port number to route data to on the emulator/device</li>
-</ul></td>
-</tr>
-<tr>
- <td><code>del <protocol>:<host-port></code></td>
- <td>Delete a port redirection.</td>
-<td>The meanings of <protocol> and <host-port> are listed in the previous row.</td>
-</tr>
-</table>
-
-
-<h3 id="geo">Geo Location Provider Emulation</h3>
-
-<p>You can use the console to set the geographic location reported to the applications running
-inside an emulator. Use the <code>geo</code> command to send a simple GPS fix to the
-emulator, with or without NMEA 1083 formatting:</p>
-
-<pre>geo <fix|nmea></pre>
-
-<p>The <code>geo</code> command supports the subcommands listed in the table below.</p>
-
-<table>
-<tr>
- <th width="25%">Subcommand</th>
- <th width="30%">Description</th>
- <th width="35%">Comments</th>
-</tr>
-
- <tr>
- <td><code>fix <longitude> <latitude> [<altitude>]</code></td>
- <td>Send a simple GPS fix to the emulator instance.</td>
- <td>Specify longitude and latitude in decimal degrees. Specify altitude in meters.</td>
- </tr>
-<tr>
- <td><code>nmea <sentence></code></td>
- <td>Send an NMEA 0183 sentence to the emulated device, as if it were sent from an emulated GPS modem.</td>
-<td><code><sentence></code> must begin with '$GP'. Only '$GPGGA' and '$GPRCM' sentences are currently supported.</td>
-</tr>
-</table>
-
-<p>You can issue the <code>geo</code> command as soon as an emulator instance is running. The
-emulator sets the location you enter by creating a mock location provider. This provider responds to
-location listeners set by applications, and also supplies the location to the {@link
-android.location.LocationManager}. Any application can query the location manager to obtain the
-current GPS fix for the emulated device by calling:
-
-<pre>LocationManager.getLastKnownLocation("gps")</pre>
-
-<p>For more information about the Location Manager, see {@link android.location.LocationManager}.
-</p>
-
-<h3 id="events">Hardware Events Emulation</h3>
-
-<p>The {@code event} console commands sends hardware events to the emulator. The syntax for this
-command is as follows:</p>
-
-<pre>event <send|types|codes|text></pre>
-
-<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
- <th width="25%" >Subcommand
- <th width="30%" >Description</th>
- <th width="35%">Comments</th>
-</tr>
-
- <tr>
- <td><code>send <type>:<code>:<value> [...]</code></td>
- <td>Send one or more events to the Android kernel. </td>
- <td>You can use text names or integers for <code><type></code> and <code><value></code>.</td>
- </tr>
-<tr>
- <td><code>types</code></td>
- <td>List all <code><type></code> string aliases supported by the <code>event</code> subcommands.</td>
-<td> </td>
-</tr>
-<tr>
- <td><code>codes <type></code></td>
- <td>List all <code><codes></code> string aliases supported by the <code>event</code>
- subcommands for the specified <code><type></code>.</td>
-<td> </td>
-</tr>
-<tr>
- <td><code>event text <message></code></td>
- <td>Simulate keypresses to send the specified string of characters as a message,</td>
-<td>The message must be a UTF-8 string. Unicode posts will be reverse-mapped according to the current device keyboard. Unsupported characters will be discarded silently.</td>
-</tr>
-</table>
-
-
-<h3 id="power">Device Power Characteristics</h3>
-
-<p>The {@code power} command controls the power state reported by the emulator to applications. The
-syntax for this command is as follows: </p>
-
-<pre>power <display|ac|status|present|health|capacity></pre>
-
-<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
- <th width="25%" >Subcommand </th>
- <th width="30%" >Description</th>
- <th width="35%">Comments</th>
-</tr>
-
- <tr>
- <td><code>display</code></td>
- <td>Display battery and charger state.</td>
- <td> </td>
- </tr>
-<tr>
- <td><code>ac <on|off></code></td>
- <td>Set AC charging state to on or off. </td>
-<td> </td>
-</tr>
-<tr>
- <td><code>status <unknown|charging|discharging|not-charging|full></code></td>
- <td>Change battery status as specified.</td>
-<td> </td>
-</tr>
-
-<tr>
- <td><code>present <true|false></code></td>
- <td>Set battery presence state.</td>
-<td> </td>
-</tr>
-<tr>
- <td><code>health <unknown|good|overheat|dead|overvoltage|failure></code></td>
- <td>Set battery health state.</td>
-<td> </td>
-</tr>
-<tr>
- <td><code>capacity <percent></code></td>
- <td>Set remaining battery capacity state (0-100).</td>
-<td> </td>
-</tr>
-</table>
-
-
-<h3 id="netstatus">Network Status</h3>
-
-<p>You can use the console to check the network status and current delay and speed characteristics. To do so, connect to the console and use the <code>netstatus</code> command. Here's an example of the command and its output. </p>
-
-<pre>network status
-</pre>
-
-
-<h3 id="netdelay">Network Delay Emulation</h3>
-
-<p>The emulator lets you simulate various network latency levels, so that you can test your
-application in an environment more typical of the actual conditions in which it will run. You can
-set a latency level or range at emulator startup or you can use the console to change the latency,
-while the application is running in the emulator. </p>
-
-<p>To set latency at emulator startup, use the <code>-netdelay</code> emulator option with a
-supported <code><delay></code> value, as listed in the table below. Here are some
-examples:</p>
-
-<pre>emulator -netdelay gprs
-emulator -netdelay 40 100</pre>
-
-<p>To make changes to network delay while the emulator is running, connect to the console and use
-the <code>netdelay</code> command with a supported <code><delay></code> value from the table
-below.</p>
-
-<pre>network delay gprs</pre>
-
-<p>The format of network <delay> is one of the following (numbers are milliseconds):</p>
-
-<table style="clear:right;width:100%;">
-<tr>
- <th width="30%" >Value</th>
- <th width="35%" >Description</th><th width="35%">Comments</th></tr>
-
- <tr><td><code>gprs</code></td><td>GPRS</td>
- <td>(min 150, max 550)</td>
- </tr>
-
-<tr><td><code>edge</code></td><td>EDGE/EGPRS</td>
-<td>(min 80, max 400)</td>
-</tr>
-<tr><td><code>umts</code></td><td>UMTS/3G</td>
-<td>(min 35, max 200)</td>
-</tr>
-<tr><td><code>none</code></td><td>No latency</td><td>(min 0, max 0)</td></tr>
-<tr><td><code><num></code></td>
-<td>Emulate an exact latency (milliseconds).</td>
-<td> </td></tr>
-<tr><td><code><min>:<max></code></td>
-<td>Emulate an specified latency range (min, max milliseconds).</td>
-<td> </td></tr>
-</table>
-
-
-<h3 id="netspeed">Network Speed Emulation</h3>
-
-<p>The emulator also lets you simulate various network transfer rates.
-You can set a transfer rate or range at emulator startup or you can use the console to change the
-rate, while the application is running in the emulator.</p>
-
-<p>To set the network speed at emulator startup, use the <code>-netspeed</code> emulator option with a supported
-<code><speed></code> value, as listed in the table below. Here are some examples:</p>
-
-<pre>emulator -netspeed gsm
-emulator -netspeed 14.4 80</pre>
-
-<p>To make changes to network speed while the emulator is running, connect to the console and use
-the <code>netspeed</code> command with a supported <code><speed></code> value from the table
-below.</p>
-
-<pre>network speed 14.4 80</pre>
-
-<p>The format of network <code><speed></code> is one of the following (numbers are
-kilobits/sec):</p>
-<table style="clear:right;width:100%;">
-<tbody>
-<tr>
- <th width="30%">Value</th>
- <th width="35%">Description</th><th width="35%">Comments</th></tr>
-
- <tr>
- <td><code>gsm</code></td>
- <td>GSM/CSD</td><td>(Up: 14.4, down: 14.4)</td></tr>
-<tr>
- <td><code>hscsd</code></td>
- <td>HSCSD</td><td>(Up: 14.4, down: 43.2)</td></tr>
-<tr>
- <td><code>gprs</code></td>
- <td>GPRS</td><td>(Up: 40.0, down: 80.0)</td></tr>
-<tr>
- <td><code>edge</code></td>
- <td>EDGE/EGPRS</td>
- <td>(Up: 118.4, down: 236.8)</td>
-</tr>
-<tr>
- <td><code>umts</code></td>
- <td>UMTS/3G</td><td>(Up: 128.0, down: 1920.0)</td></tr>
-<tr>
- <td><code>hsdpa</code></td>
- <td>HSDPA</td><td>(Up: 348.0, down: 14400.0)</td></tr>
-<tr>
- <td><code>full</code></td>
- <td>no limit</td><td>(Up: 0.0, down: 0.0)</td></tr>
-<tr>
- <td><code><num></code></td>
- <td>Set an exact rate used for both upload and download.</td><td></td></tr>
-<tr>
- <td><code><up>:<down></code></td>
- <td>Set exact rates for upload and download separately.</td><td></td></tr>
-</table>
-
-
-<h3 id="telephony">Telephony Emulation</h3>
-
-<p>The Android emulator includes its own GSM emulated modem that lets you simulate telephony
-functions in the emulator. For example, you can simulate inbound phone calls, establish data
-connections and terminate them. The Android system handles simulated calls exactly as it would
-actual calls. The emulator does not support call audio.</p>
-
-<p>You can use the {@code gsm} command to access the emulator's telephony functions after connecting
-to the console. The syntax for this command is as follows:</p>
-
-<pre>gsm <call|accept|busy|cancel|data|hold|list|voice|status> </pre>
-
-<p>The <code>gsm</code> command supports the subcommands listed in the table below. </p>
-<table>
- <tr>
- <th>Subcommand </th>
- <th width="25%">Description</th>
- <th>Comments</th>
- </tr>
- <tr>
- <td><code>call <phonenumber></code></td>
- <td>Simulate an inbound phone call from <phonenumber>.</td>
- <td> </td>
- </tr>
- <tr>
- <td><code>accept <phonenumber></code></td>
- <td>Accept an inbound call from <phonenumber> and change the call's state "active".</td>
- <td>You can change a call's state to "active" only if its current state is "waiting" or "held".</td>
- </tr>
- <tr>
- <td><code>busy <phonenumber></code></td>
- <td>Close an outbound call to <phonenumber> and change the call's state to "busy".</td>
- <td>You can change a call's state to "busy" only if its current state is "waiting".</td>
- </tr>
- <tr>
- <td><code>cancel <phonenumber></code></td>
- <td>Terminate an inbound or outbound phone call to/from <phonenumber>.</td>
- <td> </td>
- </tr>
- <tr>
- <td><code>data <state></code></td>
- <td>Change the state of the GPRS data connection to <state>.</td>
- <td>Supported <state> values are:<br />
- <ul>
- <li><code>unregistered</code> -- No network available</li>
- <li><code>home</code> -- On local network, non-roaming</li>
- <li><code>roaming</code> -- On roaming network</li>
- <li><code>searching</code> -- Searching networks</li>
- <li><code>denied</code> -- Emergency calls only</li>
- <li><code>off</code> -- Same as 'unregistered'</li>
- <li><code>on</code> -- same as 'home'</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td><code>hold</code></td>
- <td>Change the state of a call to "held". </td>
- <td>You can change a call's state to "held" only if its current state is "active" or "waiting". </td>
- </tr>
- <tr>
- <td><code>list</code></td>
- <td>List all inbound and outbound calls and their states.</td>
- <td> </td>
- </tr>
- <tr>
- <td><code>voice <state></code></td>
- <td>Change the state of the GPRS voice connection to <state>.</td>
- <td>Supported <state> values are:<br />
- <ul>
- <li><code>unregistered</code> -- No network available</li>
- <li><code>home</code> -- On local network, non-roaming</li>
- <li><code>roaming</code> -- On roaming network</li>
- <li><code>searching</code> -- Searching networks</li>
- <li><code>denied</code> -- Emergency calls only</li>
- <li><code>off</code> -- Same as 'unregistered'</li>
- <li><code>on</code> -- Same as 'home'</li>
- </ul>
- </td>
- </tr>
-
- <tr>
- <td><code>status</code></td>
- <td>Report the current GSM voice/data state.</td>
- <td>Values are those described for the <code>voice</code> and <code>data</code> commands.</td>
- </tr>
-</table>
-
-
-<h3 id="sms">SMS Emulation</h3>
-
-<p>The Android emulator console lets you generate an SMS message and direct it to an emulator
-instance. Once you connect to an emulator instance, you can generate an emulated incoming SMS using
-the following command:</p>
-
-<pre>sms send <senderPhoneNumber> <textmessage></pre>
-
-<p>where <code><senderPhoneNumber></code> contains an arbitrary numeric string. </p>
-
-<p>The console forwards the SMS message to the Android framework, which passes it through to an application that handles that message type. </p>
-
-
-<h3 id="vm">VM State</h3>
-
-<p>You can use the <code>vm</code> command to control the VM on an emulator instance. The syntax for
-this command is as follows: </p>
-
-<pre>vm <start|stop|status></pre>
-
-<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
- <th width="25%">Subcommand</th>
- <th width="30%">Description</th>
- <th width="35%">Comments</th>
-</tr>
-<tr>
- <td><code>start</code></td>
- <td>Start the VM on the instance. </td>
- <td> </td>
-</tr>
-<tr>
- <td><code>stop</code></td>
- <td>Stop the VM on the instance. </td>
- <td> </td>
-</tr>
-<tr>
- <td><code>start</code></td>
- <td>Display the current status of the VM (running or stopped). </td>
- <td> </td>
-</tr>
-</table>
-
-
-<h3 id="window">Emulator Window</h3>
-
-<p>You can use the <code>window</code> command to manage the emulator window. The syntax for this
-command is as follows: </p>
-
-<pre>window <scale></pre>
-
-<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
- <th width="25%">Subcommand</th>
- <th width="30%">Description</th>
- <th width="35%">Comments</th>
-</tr>
-<tr>
- <td><code>scale <scale></code></td>
- <td>Scale the emulator window.</td>
- <td>A number between 0.1 and 3 that sets the scaling factor. You can
- also specify scale as a DPI value if you add the suffix "dpi" to the scale value. A value of "auto"
- tells the emulator to select the best window size.</td>
-</tr>
-</table>
-
-
-<h3 id="terminating">Terminating an Emulator Instance</h3>
-
-<p>You can terminate an emulator instance through the console, using the <code>kill</code> command.</p>
-
-
-
-
-<h2 id="troubleshooting">Troubleshooting Emulator Problems</h2>
-
-<p>The {@code adb} utility sees the emulator as an actual physical device. For this reason, you
-might have to use the {@code -d} flag with some common {@code adb} commands, such as
-<code>install</code>. The {@code -d} flag lets you specify which of several connected devices to use
-as the target of a command. If you don't specify {@code -d}, the emulator targets the first
-device in its list. For more information about {@code adb}, see <a
-href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>.</p>
-
-<p>For emulators running on Mac OS X, if you see an error {@code Warning: No DNS servers found}
-when starting the emulator, check to see whether you have an <code>/etc/resolv.conf</code> file. If
-not, please run the following line in a command window:</p>
- <pre>ln -s /private/var/run/resolv.conf /etc/resolv.conf</pre>
-
-<p>See <a href="{@docRoot}resources/faq/index.html">Frequently Asked Questions</a> for more
-troubleshooting information. </p>
diff --git a/docs/html/tools/help/etc1tool.jd b/docs/html/tools/help/etc1tool.jd
deleted file mode 100644
index a7f76f5..0000000
--- a/docs/html/tools/help/etc1tool.jd
+++ /dev/null
@@ -1,68 +0,0 @@
-page.title=etc1tool
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
- <p><code>etc1tool</code> is a command line utility that lets you encode PNG
- images to the ETC1 compression standard and decode ETC1 compressed images back to PNG.</p>
-
- <p>The usage for <code>etc1tool</code> is:</p>
-<pre>etc1tool infile [--help | --encode | --encodeNoHeader | --decode] [--showDifference
-diff-file] [-o outfile]</pre>
-
- <table>
- <tr>
- <th>Option</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><code>infile</code></td>
-
- <td>The input file to compress</td>
- </tr>
-
- <tr>
- <td><code>--help</code></td>
-
- <td>Print usage information</td>
- </tr>
-
- <tr>
- <td><code>--encode</code></td>
-
- <td>Create an ETC1 file from a PNG file.
- This is the default mode for the tool if nothing is specified.</td>
- </tr>
-
- <tr>
- <td><code>--encodeNoHeader</code></td>
-
- <td>Create a raw ETC1 data file (without a header) from a PNG file.</td>
- </tr>
-
- <tr>
- <td><code>--decode</code></td>
-
- <td>Create a PNG file from an ETC1 file</td>
- </tr>
-
- <tr>
- <td><code>--showDifference <em>diff-file</em></code></td>
-
- <td>Write the difference between the original and encoded image to
- <code><em>diff-file</em></code> (only valid when encoding).</td>
- </tr>
-
- <tr>
- <td><code>-o <em>outfile</em></code></td>
-
- <td>Specify the name of the output file.
- If <code><em>outfile</em></code> is not specified, the output file is constructed
- from the input filename with the appropriate suffix (<code>.pkm</code> or <code>.png</code>).
- </td>
- </tr>
-
- </table>
\ No newline at end of file
diff --git a/docs/html/tools/help/gltracer.jd b/docs/html/tools/help/gltracer.jd
deleted file mode 100755
index 866bdc9..0000000
--- a/docs/html/tools/help/gltracer.jd
+++ /dev/null
@@ -1,92 +0,0 @@
-page.title=Tracer for OpenGL ES
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#running">Running Tracer</a></li>
- <li><a href="#generating">Generating a Trace</a></li>
- <li><a href="#analyzing">Analyzing a Trace</a></li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/index.html">Tools</a></li>
- </ol>
-</div>
-</div>
-
-<p>Tracer is a tool for analyzing OpenGL for Embedded Systems (ES) code in your Android application.
-The tool allows you to capture OpenGL ES commands and frame by frame images to help you understand
-how your graphics commands are being executed.</p>
-
-<p class="note"><strong>Note:</strong> The Tracer tool requires a device running Android 4.1 (API
-Level 16) or higher.</p>
-
-
-<h2 id="running">Running Tracer</h2>
-
-
-<p>To run Tracer in Device Monitor:</p>
-
-<ol>
- <li>Start the <a href="monitor.html">Device Monitor</a> tool.</li>
- <li>Activate the perspective for Tracer by choosing <strong>Window > Open
-Perspective...</strong></li>
- <li>Select <strong>Tracer for OpenGL ES</strong> and click <strong>OK</strong>.</li>
-</ol>
-
-<h2 id="generating">Generating a Trace</h2>
-
-<p>Tracer captures OpenGL ES command execution logs and can also capture progressive images of the
-frames generated by those commands to enable you to perform logical and visual analysis of your
-OpenGL ES code. The Tracer tool operates by connecting to a device running Android 4.1 (API Level
-16) or higher that is running the application you want to analyze. The Tracer tool captures trace
-information while the application is running and saves it to a {@code .gltrace} file for
-analysis.</p>
-
-<img src="{@docRoot}images/gltracer/dialog-trace.png">
-<p class="img-caption"><strong>Figure 1.</strong> Trace capture dialog box.</p>
-
-<p>To capture an OpenGL ES trace for an Android application:</p>
-
-<ol>
- <li>Connect the Android device using a USB cable and make sure it is enabled for debugging. For
-more information, see <a href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</li>
- <li>In the Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
-perspective.</li>
- <li>On the toolbar, click the trace capture button (<img
-src="{@docRoot}images/gltracer/icon-capture.png">).</li>
- <li>In the dialog box, select the <strong>Device</strong> to use for the trace.</li>
- <li>In the <strong>Application Package</strong> field, enter the full application package name
-containing the activity you want to trace, for example: {@code com.example.android.opengl}</li>
- <li>In the <strong>Activity to launch</strong> field, enter the class name of the activity you
-want to trace, for example: {@code OpenGLES20Complete}
- <p class="note"><strong>Note:</strong> If you are tracing the default activity for the
-application, you can leave this field blank.</p>
- </li>
- <li>Select the desired <strong>Data Collection Options</strong>.
- <p class="note"><strong>Note:</strong> If you want to capture progressive frame images for each
-drawing call, enable the <strong>Read back currently bound framebuffer on glDraw*()</strong> option.
-Be aware that using this option can result in large trace files.</p>
- </li>
- <li>Enter a <strong>Destination File</strong> for the trace output.</li>
- <li>Click <strong>Trace</strong> to start the trace capture.</li>
- <li>On the connected device, exercise the functions of your application you want to trace.</li>
- <li>In the dialog box, <strong>Stop Tracing</strong> to complete the tracing run.</li>
-</ol>
-
-<h2 id="analyzing">Analyzing a Trace</h2>
-
-<p>After you have generated a trace, you can load it for review and analysis.</p>
-
-<p>To review a captured trace:</p>
-
-<ol>
- <li>In Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
-perspective.</li>
- <li>On the toolbar, click the trace load button (<img
-src="{@docRoot}images/gltracer/icon-load-trace.png">).</li>
- <li>After loading a trace, select a frame and review the OpenGL ES calls. Drawing commands are
-highlighted in blue.</li>
-</ol>
diff --git a/docs/html/tools/help/hierarchy-viewer.jd b/docs/html/tools/help/hierarchy-viewer.jd
deleted file mode 100644
index da4cc1e..0000000
--- a/docs/html/tools/help/hierarchy-viewer.jd
+++ /dev/null
@@ -1,29 +0,0 @@
-page.title=Hierarchy Viewer
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>The Hierarchy Viewer allows you to debug and optimize your user
-interface. It provides a visual representation of the layout's View hierarchy
-(the Layout View) and a magnified inspector of the display (the Pixel Perfect View). </p>
-
-<p>To start the Hierarchy Viewer, do one of the following: </p>
-
-<ul>
-<li> From Android Studio, choose <strong>Tools > Android Device Monitor</strong> or click the
-Android Device Monitor icon
-<img src="{@docRoot}images/tools/hierarchicalviewer-icon.png" alt=""/>. Click the Open Perspectives
-icon <img src="{@docRoot}images/tools/studio-DDMS-open-perspective-icon.png" alt=""/> and select
-<strong>Hierarchy View</strong>. </li>
-<li>From the SDK <code>tools/</code> directory, enter:
- <pre>monitor</pre> </li>
-</ul>
-
-<p>For more information on how to use the Hierarchy Viewer, see
-<a href="{@docRoot}tools/debugging/debugging-ui.html">Optimizing Your UI</a>.
-</p>
-
-<p class="note"><strong>Note:</strong> The command line version of Hierarchy Viewer has been
-deprecated. </p>
-
-
diff --git a/docs/html/tools/help/hprof-conv.jd b/docs/html/tools/help/hprof-conv.jd
deleted file mode 100644
index 89d6a68..0000000
--- a/docs/html/tools/help/hprof-conv.jd
+++ /dev/null
@@ -1,26 +0,0 @@
-page.title=HPROF Converter
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>
-The <code>hprof-conv</code> tool converts the HPROF file that is
-generated by the Android SDK tools to a standard format so you
-can view the file in a profiling tool of your choice. </p>
-
-<pre> hprof-conv [-z] <infile> <outfile></pre>
-
-<p>
-You can use "-" for <code><infile></code> or <code><outfile></code>
-to specify stdin or stdout.
-</p>
-
-<p>
-You can use "-z" to filter out zygote allocations shared by all applications.
-</p>
-
-<p class="note"><strong>Note:</strong> Android Studio provides integrated access to this conversion
-process. To convert a heap dump to standard HPROF format in Android Studio, right-click a heap
-snapshot in the <em>Captures</em> view and select <strong>Export to standard .hprof</strong>. </p>
-
-
diff --git a/docs/html/tools/help/image-asset-studio.jd b/docs/html/tools/help/image-asset-studio.jd
deleted file mode 100644
index 818b744..0000000
--- a/docs/html/tools/help/image-asset-studio.jd
+++ /dev/null
@@ -1,200 +0,0 @@
-page.title=Image Asset Studio
-parent.title=Tools
-parent.link=index.html
-page.tags=image asset
-@jd:body
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#access">Accessing Image Asset Studio</a></li>
- <li><a href="#creating">Creating Icons</a></li>
- <li><a href="#customizing">Customizing Icons</a></li>
- <li><a href="#saving">Saving Icons</a></li>
- <li><a href="#configure">Configuring Build Properties</a></li>
- <li><a href="#referincode">Referring to an Image Resource in Code</a></li>
- </ol>
-</div>
-</div>
-
-
-<p>Image Asset Studio helps you to generate custom icons for your Android applications from existing
- image, clipart, or text-string resources. It generates a set of icons at the appropriate resolution
- for each <a href ="{@docRoot}guide/practices/screens_support.html#range"> generalized screen
- density</a> that your app supports.
- The newly generated icons are placed in density-specific folders (for example, <code>mipmap-mdpi/
- </code> or <code>drawable-xxxhdpi/</code>), which
- reside in the application’s <code>res/</code> folder. At runtime, Android uses the appropriate
- resource based on the screen density of the device your application is running on. </p>
-
-<p>Image Asset Studio generates the following asset types:</p>
-<ul>
-<li>Launcher icons.</li>
-<li>Action bar and tab icons.</li>
-<li>Notification icons.</li>
-</ul>
-
-<p>This guide shows how to generate these assets using Image Asset Studio.</p>
-
-<h2 id="access">Accessing Image Asset Studio</h2>
-<p>Follow these steps to access Image Asset Studio:</p>
-<ol>
-<li>In Android Studio, open an Android app project.</li>
-<li>In the <a href= "{@docRoot}sdk/installing/create-project.html#enable-view">project-view-pane</a>
- on the left side of the screen, select <strong>Android</strong> from the dropdown menu. The Android
- project view appears in the pane.
-</li>
-<li>Right-click the <code>res/</code>folder and select <strong>New</strong> > <strong>Image
-Asset</strong>. The Image Asset Studio window appears.</li>
-</ol>
-
-
-<h2 id="creating">Creating Icons</h2>
-<p>You can generate icons from <a href="#launch_image">image</a>, <a href="#launch_clipart">clipart
-</a>, or <a href="#launch_text">text-string</a> resources. This section explains how to work with
-each of these resources.
-</p>
-
-
-<h3 id="launch_image">From an image resource</h3>
-<ol>
-<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
-<li>From the available <em>Foreground</em> options, select <strong>Image</strong>.</li>
-<li>Specify the asset to use by entering a filename in the <em>Image file</em> field or by
- navigating to and selecting a file via the file browser. Image Asset Studio supports the following
- file types, in descending order of desirability: PNG, JPG, and GIF.
- <p>The icon to be generated appears in the <em>Preview</em> pane, displayed at sizes corresponding
- to different screen densities.</p>
-
-<p>The rest of the settings on this screen are optional.
-To learn how to customize your icons using these options,
- see <a href="#customizing">Customizing Icons</a>.</p></li>
-<li><a href="#saving">Save your icons</a> to the project folder.
-</li>
-</ol>
-
-
-<h3 id="launch_clipart">From a clipart resource</h3>
-<ol>
-<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
-<li>From the available <em>Foreground</em> options, select <strong>Clipart</strong>. The <strong>
-Choose</strong> button appears.</li>
-<li>Click <strong>Choose</strong>. A window containing clipart resources appears.</li>
-<li> Select a clipart resource.
-<p>The icon to be generated appears in the <em>Preview</em> pane, displayed at sizes corresponding
-to different screen densities.</p>
-<p>The rest of the settings on this screen are optional.
- To learn how to customize your icons using these options,
- see <a href="#customizing">Customizing Icons</a>.</p></li>
-<li><a href="#saving">Save your icons</a> to the project folder.
-</li>
-</ol>
-
-
-
-<h3 id="launch_text"> From a text-string resource</h3>
-<ol>
-<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
-<li>From the available <em>Foreground </em> options, select <strong>Text</strong>.</li>
-<li>Enter into the <em>Text</em> field the text you want to turn into an icon.
-<p>The icon to be generated appears in the <em> Preview</em> pane, displayed at sizes corresponding
-to different screen densities.</p></li>
-<li>To change the font, select a font from the <em>Font</em> dropdown menu.
-<p>The rest of the settings on this screen are optional.
-To learn how to customize your icons using these options,
-see <a href="#customizing">Customizing Icons</a>.</p></li>
-<li><a href="#saving">Save your icons</a> to the project folder.
-</li>
-</ol>
-
-
-<h2 id="customizing">Customizing Icons</h2>
-<p>Image Asset Studio lets you customize various visual effects for your icons. The following options
-are of particular note.</p>
-
-<ul>
-<li><em>Trim surrounding blank space</em>: This option allows you to adjust the margin between the
-icon graphic and border.
-<figure id="">
- <img src="{@docRoot}images/tools/trim.png"
- width="461">
- <figcaption><strong>Figure 1</strong>: An icon before and after trimming.</figcaption>
-</figure>
-<li><em>Additional Padding</em>: This option allows you to adjust the icon's padding on all four
-sides. Use the slider to select a value between 0 and 100 pixels. For example, for a 100px X 100px
-image with padding of 25px, the resulting image is 150px X 150px.</li>
- <li><em>Theme</em>: This option allows you to set a theme for your action bar and tab icons.
- You can tint icons using the HOLO_DARK or HOLO_LIGHT theme or create
- a custom theme using the color palette.</li>
- <li><em>Resource name</em>: This option allows you to specify a resource name other than the
- default one. If an asset with the specified resource name already exists, Image Asset Studio warns
- you that it is going to overwrite the existing asset with this one.</li></ul>
-
-
-<h2 id="saving">Saving Icons</h2>
- <p>This section explains how to save your icons to the <code>res/</code> folder. Do so by following
- these steps:</p>
- <ol>
- <li>From the initial screen that appeared when you opened Image Asset Studio, click
- <strong>Next</strong>. Image Asset Studio opens a new window.</li>
- <li>Confirm the target module and resource directory settings for the icon.
- If you don't want to use the default target module or resource directory, you can
- <a href="#configure">enter your own values</a> for them.
- </li>
- <li>Click <strong>Finish</strong>. The Image Asset Studio generates new icon files, in PNG format,
- according to the options you have chosen.
- </li>
- </ol>
-
- <p class="note"><strong>Note:</strong> Launcher icon files reside in a different location from that
- of other icons. They are located in the <code>mipmap/</code> folder. All other icon files reside
- in the <code>drawable/</code> folder of your project.</p>
-
-
-<h2 id="configure">Configuring Build Properties</h2>
-<p>To change the module and resource directory, follow these steps:</p>
-<ol>
-<li>In the <em>Target Module</em> field, select a module to add the resource to.
-For more information,
-see <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">
-Creating an Android Module</a>.
- </li>
-<li>In the <em>Res Directory</em> field, select an option for where to place the image
- asset:
- <ul>
- <li><code>src/main/res</code>: This source set applies to all build variants, including debug
- and release.</li>
- <li><code>src/debug/res</code>, <code> src/release/res</code>: These source sets override the main
- source set and apply to one version of a build. The debug source set is for debugging only.
- </li>
- <li>User-defined: To define your own source set, select <strong>File</strong> > <strong>Project
- Structure</strong> > <strong>app</strong> > <strong>Build Types</strong>.
- For example, you could define a beta source set and create a version of an icon that includes the
- text "BETA” in the bottom right corner. For more information, see
- <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">
- Work with build variants</a>.</li>
- </ul>
-</ol>
-
-
-
-
-<h2 id="referincode">Referring to an Image Resource in Code</h2>
-
-<p>After you have an image resource in the <code>res/</code>directory of your project, you can
- reference it from your Java code or your XML layout using its
- <a href="{@docRoot}guide/topics/resources/accessing-resources.html#ResourcesFromCode">
- resource ID</a>. </p>
-
-<p> For example, the following XML references the <code>ic_launcher icon</code> in the
-<code>mipmap/</code> folder.</p>
-<pre>
-<application android:name="ApplicationTitle"
- android:label="@string/app_label"
- android:icon="@mipmap/ic_launcher" ></pre>
-
-<p>The following Java code sets an
-<a href="{@docRoot}reference/android/widget/ImageView.html">ImageView</a> to use
- the <code>drawable/myimage.png</code> resource:</p>
-<pre>ImageView imageView = (ImageView) findViewById(R.id.myimageview);
-imageView.setImageResource(R.drawable.myimage);</pre>
diff --git a/docs/html/tools/help/index.jd b/docs/html/tools/help/index.jd
deleted file mode 100755
index 411f908..0000000
--- a/docs/html/tools/help/index.jd
+++ /dev/null
@@ -1,176 +0,0 @@
-page.title=Tools Help
-@jd:body
-
-
-<p>The Android SDK includes a variety of tools that help you develop mobile
-applications for the Android platform. The tools are classified into two groups: SDK tools
-and platform tools. SDK tools are platform independent and are required no matter which
-Android platform you are developing on. Platform tools are customized to support the features of the
-latest Android platform.</p>
-
-
-<h2 id="tools-sdk">SDK Tools</h2>
-<p>The SDK tools are installed with the SDK starter package and are periodically updated.
-The SDK tools are required if you are developing Android applications. The most important SDK tools
-include the Android SDK Manager (<code>android sdk</code>), the AVD Manager (<code>android
-avd</code>) the emulator (<code>emulator</code>), and the Dalvik Debug Monitor Server
-(<code>ddms</code>). A short summary of some frequently-used SDK tools is provided below.</p>
-
-
-
-<h3 id="tools-virtual-device">Virtual Device Tools</h3>
-<dl>
-
- <dt><a href="{@docRoot}tools/help/avd-manager.html">Android Virtual Device Manager</a></dt>
- <dd>The AVD Manager provides a graphical user interface in which you can create
- and manage Android Virtual Devices (AVDs) that run in the Android Emulator. </dd>
-
- <dt><a href="{@docRoot}tools/help/emulator.html">Android Emulator (emulator)</a></dt>
- <dd>A QEMU-based device-emulation tool that you can use to debug and test
- your applications in an actual Android run-time environment.</dd>
-
- <dt><a href="{@docRoot}tools/help/mksdcard.html">mksdcard</a></dt>
- <dd>Helps you create a disk image that you can use with the emulator, to simulate the presence
- of an external storage card (such as an SD card).</dd>
-
-</dl>
-
-
-
-
-<h3 id="tools-development">Development Tools</h3>
-<dl>
- <dt><a href="{@docRoot}tools/help/android.html">android</a></dt>
- <dd>Lets you manage AVDs, projects, and the installed components of the SDK.</dd>
-
-
- <dt><a href="{@docRoot}tools/help/hierarchy-viewer.html">Hierarchy Viewer (hierarchyviewer)</a></dt>
- <dd>Provides a visual representation of the layout's View hierarchy with performance information
- for each node in the layout, and a magnified view of the display to closely examine the
- pixels in your layout.</dd>
-
- <dt><a href="{@docRoot}tools/help/lint.html">lint</a></dt>
- <dd>The Android {@code lint} tool is a static code analysis tool that checks your Android
- project source files for potential bugs and optimization improvements.</dd>
-
- <dt><a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a></dt>
- <dd>Lets you manage SDK packages, such as installed platforms and system images.</dd>
-
- <dt><a href="{@docRoot}tools/help/sqlite3.html">sqlite3</a></dt>
- <dd>Lets you access the SQLite data files created and used by Android applications.</dd>
-
-
-</dl>
-
-
-
-<h3 id="tools-debugging">Debugging Tools</h3>
-<dl>
-
- <dt><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></dt>
- <dd>Android Monitor is integrated into Android Studio and provides logcat, memory, CPU, GPU, and
- network monitors for app debugging and analysis.</dd>
-
- <dt><a href="{@docRoot}tools/help/adb.html">adb</a></dt>
- <dd>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with
- an emulator instance or connected Android-powered device. It also provides access to the
- device shell.</dd>
-
- <dt><a href="{@docRoot}tools/help/shell.html">ADB Shell Commands</a></dt>
- <dd>Learn the commands available for advanced command-line operations.</dd>
-
- <dt><a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server (ddms)</a></dt>
- <dd>Lets you debug Android apps.</dd>
-
- <dt><a href="{@docRoot}tools/help/monitor.html">Device Monitor</a></dt>
- <dd>Android Device Monitor is a stand-alone tool that provides a graphical user interface for
- several Android application debugging and analysis tools.</dd>
-
- <dt><a href="{@docRoot}tools/help/dmtracedump.html">dmtracedump</a></dt>
- <dd>Generates graphical call-stack diagrams from trace log files. The tool uses the
-Graphviz Dot utility to create the graphical output, so you need to install Graphviz before
-running <code>dmtracedump</code>. For more information on using <code>dmtracedump</code>, see <a
-href="{@docRoot}tools/debugging/debugging-tracing.html#dmtracedump">Profiling
-with Traceview and dmtracedump</a></dd>
-
-
- <dt><a href="{@docRoot}tools/help/hprof-conv.html">hprof-conv</a></dt>
- <dd>Converts the HPROF file that is generated by the Android SDK tools to a standard format so
-you can view the file in a profiling tool of your choice.</dd>
-
- <dt><a href="{@docRoot}tools/help/systrace.html">Systrace</a></dt>
- <dd>Lets you analyze the execution of your application in the context of system processes,
- to help diagnose display and performance issues.</dd>
-
- <dt><a href="{@docRoot}tools/help/traceview.html">traceview</a></dt>
- <dd>Provides a graphical viewer for execution logs saved by your application.</dd>
-
- <dt><a href="{@docRoot}tools/help/gltracer.html">Tracer for OpenGL ES</a></dt>
- <dd>Allows you to capture <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES</a>
- commands and frame-by-frame images to help you understand how your app is executing
- graphics commands.</dd>
-
-</dl>
-
-
-<h3 id="tools-build">Build Tools</h3>
-<dl>
-
- <dt><a href="{@docRoot}tools/help/jobb.html">JOBB</a></dt>
- <dd>Allows you to build encrypted and unencrypted
- <a href="{@docRoot}google/play/expansion-files.html">APK expansion files</a> in Opaque
- Binary Blob (OBB) format.</dd>
-
- <dt><a href="{@docRoot}tools/help/proguard.html">ProGuard</a></dt>
- <dd>Shrinks, optimizes, and obfuscates your code by removing unused code and renaming
-classes, fields, and methods with semantically obscure names.</dd>
-
- <dt><a href="{@docRoot}tools/help/zipalign.html">zipalign</a></dt>
- <dd>Optimizes <code>.apk</code> files by ensuring that all uncompressed data starts with a
-particular alignment relative to the start of the file. This should always be used to align .apk
-files after they have been signed.</dd>
-
-</dl>
-
-
-<h3 id="tools-image">Image Tools</h3>
-<dl>
- <dt><a href="{@docRoot}tools/help/draw9patch.html">Draw 9-patch</a></dt>
- <dd>Allows you to easily create a {@link android.graphics.NinePatch} graphic using a
-WYSIWYG editor. It also previews stretched versions of the image, and highlights the area in which
-content is allowed.</dd>
-
- <dt><a href="{@docRoot}tools/help/etc1tool.html">etc1tool</a></dt>
- <dd>A command line utility that lets you encode PNG images to the ETC1 compression standard and
- decode ETC1 compressed images back to PNG.</dd>
-
-</dl>
-
-
-
-<h2 id="tools-platform">Platform Tools</h2>
-
-<p>The platform tools are typically updated every time you install a new SDK platform. Each update
-of the platform tools is backward compatible with older platforms. Usually, you directly use only
-one of the platform tools—the <a href="adb.html">Android Debug Bridge (<code>adb</code>)</a>.
-Android Debug Bridge is a versatile tool that lets you manage the state of an emulator instance or
-Android-powered device. You can also use it to install an Android application (.apk) file on a
-device.</p>
-
-<p>The other platform tools, such as <a href="{@docRoot}guide/components/aidl.html">aidl</a>,
-<code>aapt</code>, <code>dexdump</code>, and <code>dx</code>, are typically called by the Android
-build tools, so you rarely need to invoke these tools directly.
-As a general rule, you should rely on the build tools to call them as needed.</p>
-
-<p class="note"><strong>Note:</strong> The Android SDK provides additional shell tools that can
-be accessed through <code>adb</code>, such as <a href="{@docRoot}tools/help/bmgr.html">bmgr</a> and
-<a href="{@docRoot}tools/help/logcat.html">logcat</a>.</p>
-<dl>
- <dt><a href="{@docRoot}tools/help/bmgr.html">bmgr</a></dt>
- <dd>A shell tool you can use to interact with the Backup Manager on Android devices supporting
- API Level 8 or greater.</dd>
-
- <dt><a href="{@docRoot}tools/help/logcat.html">logcat</a></dt>
- <dd>Provides a mechanism for collecting and viewing system debug output.</dd>
-
-</dl>
diff --git a/docs/html/tools/help/jobb.jd b/docs/html/tools/help/jobb.jd
deleted file mode 100644
index ae60223..0000000
--- a/docs/html/tools/help/jobb.jd
+++ /dev/null
@@ -1,102 +0,0 @@
-page.title=JOBB
-@jd:body
-
-
-<p>The {@code jobb} tool allows you to build encrypted and unencrypted APK expansion files in
- Opaque Binary Blob (OBB) format. You can download and mount these expansion files in your
- application using {@link android.os.storage.StorageManager} on devices with Android 2.3 (API
- Level 9) or higher. OBB files are used to provide additional file assets for Android applications
- (such as graphics, sounds and video), separate from an application's APK file. For more
- information on using expansion files, see
- <a href="{@docRoot}google/play/expansion-files.html">APK Expansion Files</a>.</p>
-
-
-<h2 id="usage">Usage</h2>
-
-<p>The syntax for running {@code jobb} is as follows:</p>
-
-<pre>
-jobb [-d <directory>][-o <filename>][-pn <package>][-pv <version>] \
- [-k <key>][-ov][-dump <filename>][-v][-about]
-</pre>
-
-<p>You can use the {@code jobb} tool to create an OBB file or extract the contents of an
-existing OBB. The following example command creates an OBB file from source files.</p>
-
-<pre>
-$ jobb -d /temp/assets/ -o my-app-assets.obb -k secret-key -pn com.my.app.package -pv 11
-</pre>
-
-<p>This example shows how to dump (extract) the contents of an existing OBB file:</p>
-
-<pre>
-$ jobb -d /temp/obb-output/ -o my-app-assets.obb -k secret-key
-</pre>
-
-
-<h2 id="options">Options</h2>
-
-<p>The table below lists the command line options for the {@code jobb} tool.</p>
-
-<table>
- <tr>
- <th>Option</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>{@code -d <directory>}</td>
- <td>Set the input directory for creating an OBB file, or the output directory when extracting
- ({@code -dump}) an existing file. When creating an OBB file, the contents of the specified
- directory and all its sub-directories are included in the OBB file system.
- </td>
- </tr>
- <tr>
- <td>{@code -o <filename>}</td>
- <td>Specify the filename for the OBB file. This parameter is required when
- creating an OBB and extracting (dumping) its contents.</td>
- </tr>
- <tr>
- <td>{@code -pn <package>}</td>
- <td>Specify the package name for the application that mounts the OBB file, which corresponds
- to the {@code package} value specified in your application's manifest. This parameter is
- required when creating an OBB file.</td>
- </tr>
- <tr>
- <td>{@code -pv <version>}</td>
- <td>Set the minimum version for the application that can mount the OBB file, which corresponds
- to the {@code android:versionCode} value in your application's manifest. This parameter is
- required when creating an OBB file.</td>
- </tr>
- <tr>
- <td>{@code -k <key>}</td>
- <td>Specify a password for encrypting a new OBB file or decrypting an existing, encypted
- OBB file.</td>
- </tr>
- <tr>
- <td>{@code -ov}</td>
- <td>Create OBB file that is an overlay of an existing OBB file structure. This option allows
- the new package contents to be mounted into the same location as a previous package and is
- intended for creating patch versions of previously generated OBB files. Files within an
- overlay OBB file replace files that have the same path.</td>
- </tr>
- <tr>
- <td style="white-space: nowrap">{@code -dump <filename>}</td>
- <td><p>Extract the contents of the specified OBB file. When using this option, you must also
- specify the output directory for the contents using the {@code -d <directory>}
- parameter.</p>
-
- <p class="note"><strong>Note:</strong> When dumping an existing OBB file, you can omit the
- {@code -d <directory>} parameter to get a listing of the directories inside the file,
- without extracting the contents.</p>
- </td>
- </tr>
- <tr>
- <td>{@code -v}</td>
- <td>Set verbose output for the tool.</td>
- </tr>
- <tr>
- <td>{@code -about}</td>
- <td>Display version and help information for the {@code jobb} tool.</td>
- </tr>
-
-</table>
diff --git a/docs/html/tools/help/layoutopt.jd b/docs/html/tools/help/layoutopt.jd
deleted file mode 100755
index 1bc6c64..0000000
--- a/docs/html/tools/help/layoutopt.jd
+++ /dev/null
@@ -1,33 +0,0 @@
-page.title=layoutopt
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
-<p class="note"><strong>Note: </strong>The Android <code>layoutopt</code> tool has been replaced
-by the {@code lint} tool beginning in SDK Tools revision 16. The {@code lint} tool reports UI
-layout performance issues in a similar way as <code>layoutopt</code>, and detects additional problems.</p>
-<p>For more information about using {@code lint}, see
-<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a> and the
-<a href="{@docRoot}tools/help/lint.html">lint reference documentation</a>.</p>
-
-<p><code>layoutopt</code> is a command-line tool that helps you optimize the
-layouts and layout hierarchies of your applications.<p>
-
-<p>This document is a reference to the available command line options. For more information and
-sample
-output of the tool, see <a
-href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">Optimizing layouts with
-layoutopt</a>.</p>
-
-<h3>Usage</h3>
-
-<p>To run <code>layoutopt</code> against a given list of layout resources:</p>
-
-<pre>layoutopt <file_or_directory> ...</pre>
-
-<p>For example:</p>
-
-<pre>$ layoutopt res/layout-land</pre>
-<pre>$ layoutopt res/layout/main.xml res/layout-land/main.xml</pre>
-
diff --git a/docs/html/tools/help/lint.jd b/docs/html/tools/help/lint.jd
deleted file mode 100644
index 98a5652..0000000
--- a/docs/html/tools/help/lint.jd
+++ /dev/null
@@ -1,191 +0,0 @@
-page.title=lint
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#syntax">Syntax</a></li>
- <li><a href="#options">Options</a></li>
- <li><a href="#config_keywords">Configuring Java and XML Source Files</a></li>
- </ol>
- </div>
-</div>
-
-<p>The Android {@code lint} tool is a static code analysis tool that checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization.</p>
-
-<p>In Android Studio, the configured <code>lint</code> and other IDE inspections run automatically
-whenever you compile your program. You can also manually run inspections in Android Studio
-by selecting <strong>Analyze > Inspect Code</strong> from the application or right-click menu.
-The <em>Specify Inspections Scope</em> dialog appears so you can specify the desired inspection
-profile and scope.</p>
-
-<p>For more information on enabling {@code lint} inspections and running {@code lint},
-see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
-
-<h2 id="syntax">Command Line Syntax</h2>
-<p>
-<pre>lint [flags] <project directory></pre>
-
-For example, you can issue the following command to scan the Java and XML files under the
-{@code myproject} directory and its subdirectories. The result is displayed on the console.
-<pre>lint myproject</pre>
-
-You can also use {@code lint} to check for a specific issue. For example, you can run the following command to scan the files under the {@code myproject} directory and its subdirectories to check for XML attributes missing the Android namespace prefix. The issue ID {@code MissingPrefix} tells lint to only scan for this issue.
-<pre>lint --check MissingPrefix myproject</pre>
-
-You can create an HTML report for the issues that {@code lint} detects. For example, you can run the following command to scan the {@code myproject} directory and its subdirectories for accessibility issues, then generate an HTML report in the {@code accessibility_report.html} file.
-<pre>lint --check Accessibility --HTML accessibility_report.html myproject</pre>
-</p>
-
-<h2 id="options">Options</h2>
-<p>Table 1 describes the command-line options for {@code lint}.</p>
-<p class="table-caption" id="table1">
- <strong>Table 1.</strong> Command-line options for lint</p>
-<table>
-<tr>
- <th>Category</th>
- <th>Option</th>
- <th>Description</th>
- <th>Comments</th>
-</tr>
-
-<tr>
-<td rowspan="7">Checking</td>
-<td><nobr><code>--disable <list></code></nobr></td>
-<td>Disable checking for a specific list of issues.</td>
-<td>The <code><list></code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--enable <list></code></nobr></td>
-<td>Check for all the default issues supported by {@code lint} as well as the specifically enabled list of issues.</td>
-<td>The <code><list></code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--check <list></code></nobr></td>
-<td>Check for a specific list of issues.</td>
-<td>The <code><list></code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
-</tr>
-
-<tr>
-<td><nobr><code>-w</code> or <code>--nowarn</code></nobr></td>
-<td>Only check for errors and ignore warnings</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>-Wall</code></nobr></td>
-<td>Check for all warnings, including those that are disabled by default</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>-Werror</code></nobr></td>
-<td>Report all warnings as errors</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>--config <filename></code></nobr></td>
-<td>Use the specified configuration file to determine if issues are enabled or disabled for {@code lint} checking</td>
-<td>If the project contains a {@code lint.xml} file, the {@code lint.xml} file will be used as the configuration file by default.</td>
-</tr>
-
-<tr>
-<td rowspan="9">Reporting</td>
-<td><nobr><code>--html <filename></code></nobr></td>
-<td>Generate an HTML report.</td>
-<td>The report is saved in the output file specified in the argument. The HTML output includes code snippets of the source code where {@code lint} detected an issue, a verbose description of the issue found, and links to the source file.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--url <filepath>=<url></code></nobr></td>
-<td>In the HTML output, replace a local path prefix <code><filepath></code> with a url prefix <code><url></code>.</td>
-<td>The {@code --url} option only applies when you are generating an HTML report with the {@code --html} option. You can specify multiple <filepath>=<url> mappings in the argument by separating each mapping with a comma.<p>To turn off linking to files, use {@code --url none}</p></td>
-</tr>
-
-<tr>
-<td><nobr><code>--simplehtml <filename></code></nobr></td>
-<td>Generate a simple HTML report</td>
-<td>The report is saved in the output file specified in the argument.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--xml <filename></code></nobr></td>
-<td>Generate an XML report</td>
-<td>The report is saved in the output file specified in the argument.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--fullpath</code></nobr></td>
-<td>Show the full file paths in the {@code lint} checking results.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>--showall</code></nobr></td>
-<td>Don't truncate long messages or lists of alternate locations.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>--nolines</code></nobr></td>
-<td>Don't include code snippets from the source files in the output.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>--exitcode</code></nobr></td>
-<td>Set the exit code to 1 if errors are found.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>--quiet</code></nobr></td>
-<td>Don't show the progress indicator.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td rowspan="4">Help</td>
-<td><nobr><code>--help</code></nobr></td>
-<td>List the command-line arguments supported by the {@code lint} tool.</td>
-<td>Use {@code --help <topic>} to see help information for a specific topic, such as "suppress".</td>
-</tr>
-
-<tr>
-<td><nobr><code>--list</code></nobr></td>
-<td>List the ID and short description for issues that can be checked by {@code lint}</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><nobr><code>--show</code></nobr></td>
-<td>List the ID and verbose description for issues that can be checked by {@code lint}</td>
-<td>Use {@code --show <ids>} to see descriptions for a specific list of {@code lint} issue IDs.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--version</code></nobr></td>
-<td>Show the {@code lint} version</td>
-<td> </td>
-</tr>
-
-</table>
-
-
-<h2 id="config_keywords">Configuring Java and XML Source Files</h2>
-<p>To configure lint checking, you can apply the following annotation or attribute to the source files in your Android project. </p>
-<ul>
-<LI>To disable {@code lint} checking for a specific Java class or method, use the <code>@SuppressLint</code>
-annotation. </LI>
-<li>To disable {@code lint} checking for specific sections of your XML file, use the
-<code>tools:ignore</code> attribute. </li>
-</ul>
-<p>You can also specify your {@code lint} checking preferences for a specific Android project in
-the <code>lint.xml</code> file. For more information on configuring {@code lint}, see
-<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
diff --git a/docs/html/tools/help/logcat.jd b/docs/html/tools/help/logcat.jd
deleted file mode 100644
index 1d75848..0000000
--- a/docs/html/tools/help/logcat.jd
+++ /dev/null
@@ -1,115 +0,0 @@
-page.title=logcat
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>See also</h2>
-
- <ol>
- <li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
- </ol>
- </div>
- </div>
-
- <p>The Android logging system provides a mechanism for collecting and viewing system debug
- output. Logs from various applications and portions of the system are collected in a series of
- circular buffers, which then can be viewed and filtered by the <code>logcat</code> command. You can use
- <code>logcat</code> from an ADB shell to view the log messages.</p>
-
- <p>For complete information about logcat options and filtering specifications, see
- <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>.</p>
-
- <p>For more information on accessing <code>logcat</code> from DDMS, instead of the command line, see
- <a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>. </p>
-
- <h3>Syntax</h3>
- <pre>
-[adb] logcat [<option>] ... [<filter-spec>] ...
-</pre>
-
- <p>You can run <code>logcat</code> as an adb command or directly in a shell prompt
- of your emulator or connected device. To view log output using adb, navigate to your SDK
- <code>platform-tools/</code> directory and execute:</p>
- <pre>
-$ adb logcat
-</pre>
-
- <p>You can create a shell connection to a device and execute:</p>
- <pre>
-$ adb shell
-# logcat
-</pre>
-
- <h3>Options</h3>
- <p>The following table describes the command line options of <code>logcat</code>.</p>
-
- <table>
- <tr>
- <th>Option</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><code>-b <buffer></code></td>
-
- <td>Loads an alternate log buffer for viewing, such as <code>events</code> or
- <code>radio</code>. The <code>main</code> buffer is used by default. See <a href=
- "{@docRoot}tools/debugging/debugging-log.html#alternativeBuffers">Viewing Alternative Log Buffers</a>.</td>
- </tr>
-
- <tr>
- <td><code>-c</code></td>
-
- <td>Clears (flushes) the entire log and exits.</td>
- </tr>
-
- <tr>
- <td><code>-d</code></td>
-
- <td>Dumps the log to the screen and exits.</td>
- </tr>
-
- <tr>
- <td><code>-f <filename></code></td>
-
- <td>Writes log message output to <code><filename></code>. The default is
- <code>stdout</code>.</td>
- </tr>
-
- <tr>
- <td><code>-g</code></td>
-
- <td>Prints the size of the specified log buffer and exits.</td>
- </tr>
-
- <tr>
- <td><code>-n <count></code></td>
-
- <td>Sets the maximum number of rotated logs to <code><count></code>. The default value
- is 4. Requires the <code>-r</code> option.</td>
- </tr>
-
- <tr>
- <td><code>-r <kbytes></code></td>
-
- <td>Rotates the log file every <code><kbytes></code> of output. The default value is
- 16. Requires the <code>-f</code> option.</td>
- </tr>
-
- <tr>
- <td><code>-s</code></td>
-
- <td>Sets the default filter spec to silent.</td>
- </tr>
-
- <tr>
- <td><code>-v <format></code></td>
-
- <td>Sets the output format for log messages. The default is <code>brief</code> format. For a
- list of supported formats, see <a href="{@docRoot}tools/debugging/debugging-log.html#outputFormat">Controlling Log Output
- Format</a>.</td>
- </tr>
- </table>
diff --git a/docs/html/tools/help/mksdcard.jd b/docs/html/tools/help/mksdcard.jd
deleted file mode 100644
index 38c4356..0000000
--- a/docs/html/tools/help/mksdcard.jd
+++ /dev/null
@@ -1,55 +0,0 @@
-page.title=mksdcard
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <p>The <code>mksdcard</code> tool lets you quickly create a FAT32 disk image that you can load in the
- emulator, to simulate the presence of an SD card in the device. Because you can specify an SD
- card while creating an AVD in the AVD Manager, you usually use that feature to create an SD card.
- This tool creates an SD card that is not bundled with an AVD, so it is useful for situations
- where you need to share a virtual SD card between multiple emulators.</p>
-
- <h3>Usage</h3>
- <pre>
-mksdcard -l <label> <size> <file>
-</pre>
-
- <h3>Options</h3>
- <p>The following table describes the command-line options of <code>mksdcard</code></p>
- <table>
- <tr>
- <th>Option</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><code>-l</code></td>
-
- <td>A volume label for the disk image to create.</td>
- </tr>
-
- <tr>
- <td><code>size</code></td>
-
- <td>An integer that specifies the size (in bytes) of disk image to create. You can also
- specify size in kilobytes or megabytes, by appending a "K" or "M" to <size>. For
- example, <code>1048576K</code>, <code>1024M</code>.</td>
- </tr>
-
- <tr>
- <td><code>file</code></td>
-
- <td>The path/filename of the disk image to create.</td>
- </tr>
- </table>
-
- <p>Once you have created the disk image file, you can load it in the emulator at startup using
- the emulator's <code>-sdcard</code> option. For more information, see <a href=
- "{@docRoot}tools/help/emulator.html">Android Emulator</a>.</p>
-
- <p>The usage for the <code>-sdcard</code> option is as follows:</p>
- <pre>emulator -sdcard <file></pre>
-
-<h3>Example</h3>
-<pre>mksdcard -l mySdCard 1024M mySdCardFile.img</pre>
\ No newline at end of file
diff --git a/docs/html/tools/help/monitor.jd b/docs/html/tools/help/monitor.jd
deleted file mode 100755
index 3541cc3..0000000
--- a/docs/html/tools/help/monitor.jd
+++ /dev/null
@@ -1,51 +0,0 @@
-page.title=Device Monitor
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>See also</h2>
-
- <ol>
- <li><a href="{@docRoot}tools/debugging/debugging-memory.html"
- >Investigating Your RAM Usage</a></li>
- <li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
- </ol>
- </div>
- </div>
-
-
-<p>Android Device Monitor is a stand-alone tool that provides a graphical user interface for
-several Android application debugging and analysis tools. The Monitor tool does not
-require installation of an integrated development environment, such as Android Studio, and
-encapsulates the following tools:</p>
-
-<ul>
- <li><a href="{@docRoot}tools/debugging/ddms.html">DDMS</a></li>
- <li><a href="gltracer.html">Tracer for OpenGL ES</a></li>
- <li><a href="hierarchy-viewer.html">Hierarchy Viewer</a></li>
- <li><a href="systrace.html">Systrace</a></li>
- <li><a href="traceview.html">Traceview</a></li>
- <li>Pixel Perfect magnification viewer</li>
-</ul>
-
-
-<h2 id="usage">Usage</h2>
-
-<p>To start Device Monitor:</p>
-
-<ul>
- <li>From Android Studio, choose <strong>Tools > Android Device Monitor</strong> or click
- the Android Device Monitor icon
- <img src="{@docRoot}images/tools/hierarchicalviewer-icon.png" alt=""/>.
- </li>
- <li>From the command line, in the SDK <code>tools/</code> directory, enter the following command:
- <pre>monitor</pre>
- </li>
-</ul>
-
-
-
-<p>Start an Android emulator or connect an Android device via USB cable, and connect Device
-Monitor to the device by selecting it in the <strong>Devices</strong> window.</p>
-
-<p class="note"><strong>Note:</strong> Only one debugger can be connected to your device at a time.</p>
diff --git a/docs/html/tools/help/monkey.jd b/docs/html/tools/help/monkey.jd
deleted file mode 100644
index 7c64830..0000000
--- a/docs/html/tools/help/monkey.jd
+++ /dev/null
@@ -1,242 +0,0 @@
-page.title=UI/Application Exerciser Monkey
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>The Monkey is a program that runs on your
-<a href="{@docRoot}tools/help/emulator.html">emulator</a> or device and generates pseudo-random
-streams of user events such as clicks, touches, or gestures, as well as a number of system-level
-events. You can use the Monkey to stress-test applications that you are developing, in a random
-yet repeatable manner.</p>
-
-<a name="overview"></a>
-<h2>Overview</h2>
-
-<p>The Monkey is a command-line tool that you can run on any emulator
-instance or on a device. It sends a pseudo-random stream of
-user events into the system, which acts as a stress test on the application software you are
-developing.</p>
-
-<p>The Monkey includes a number of options, but they break down into four primary
-categories:</p>
-
-<ul>
- <li>Basic configuration options, such as setting the number of events to attempt.</li>
- <li>Operational constraints, such as restricting the test to a single package.</li>
- <li>Event types and frequencies.</li>
- <li>Debugging options.</li>
-</ul>
-
-<p>When the Monkey runs, it generates events and sends them to the system. It also <i>watches</i>
-the system under test and looks for three conditions, which it treats specially:</p>
-
-<ul>
- <li>If you have constrained the Monkey to run in one or more specific packages, it
- watches for attempts to navigate to any other packages, and blocks them.</li>
- <li>If your application crashes or receives any sort of unhandled exception, the Monkey
- will stop and report the error.</li>
- <li>If your application generates an <i>application not responding</i> error, the Monkey
- will stop and report the error.</li>
-</ul>
-
-<p>Depending on the verbosity level you have selected, you will also see reports on the progress
-of the Monkey and the events being generated.</p>
-
-<a name="basics"></a>
-<h2>Basic Use of the Monkey</h2>
-
-<p>You can launch the Monkey using a command line on your development machine or from a script.
-Because the Monkey runs in the emulator/device environment, you must launch it from a shell in
-that environment. You can do this by prefacing <code>adb shell</code> to each command,
-or by entering the shell and entering Monkey commands directly.</p>
-<p>The basic syntax is: </p>
-
-<pre>$ adb shell monkey [options] <event-count></pre>
-
-<p>With no options specified, the Monkey will launch in a quiet (non-verbose) mode, and will send
-events to any (and all) packages installed on your target. Here is a more typical command line,
-which will launch your application and send 500 pseudo-random events to it:</p>
-
-<pre>$ adb shell monkey -p your.package.name -v 500</pre>
-
-<a name="reference"></a>
-<h2>Command Options Reference</h2>
-
-<p>The table below lists all options you can include on the Monkey command line.</p>
-
-<table>
-<tr>
- <th>Category</th>
- <th>Option</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td rowspan="2">General</td>
-<td><code>--help</code></td>
-<td>Prints a simple usage guide.</td>
-</tr>
-
-<tr>
-<td><code>-v</code></td>
-<td>Each -v on the command line will increment the verbosity level.
-Level 0 (the default) provides little information beyond startup notification, test completion, and
-final results.
-Level 1 provides more details about the test as it runs, such as individual events being sent to
-your activities.
-Level 2 provides more detailed setup information such as activities selected or not selected for
-testing.</td>
-</tr>
-
-<tr>
-<td rowspan="10">Events</td>
-<td><code>-s <seed></code></td>
-<td>Seed value for pseudo-random number generator. If you re-run the Monkey with the same seed
-value, it will generate the same sequence of events.</td>
-</tr>
-
-<tr>
-<td><code>--throttle <milliseconds></code></td>
-<td>Inserts a fixed delay between events. You can use this option to slow down the Monkey.
-If not specified, there is no delay and the events are generated as rapidly as possible.</td>
-</tr>
-
-<tr>
-<td><code>--pct-touch <percent></code></td>
-<td>Adjust percentage of touch events.
-(Touch events are a down-up event in a single place on the screen.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-motion <percent></code></td>
-<td>Adjust percentage of motion events.
-(Motion events consist of a down event somewhere on the screen, a series of pseudo-random
-movements, and an up event.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-trackball <percent></code></td>
-<td>Adjust percentage of trackball events.
-(Trackball events consist of one or more random movements, sometimes followed by a click.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-nav <percent></code></td>
-<td>Adjust percentage of "basic" navigation events.
-(Navigation events consist of up/down/left/right, as input from a directional input device.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-majornav <percent></code></td>
-<td>Adjust percentage of "major" navigation events.
-(These are navigation events that will typically cause actions within your UI, such as
-the center button in a 5-way pad or the menu key.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-syskeys <percent></code></td>
-<td>Adjust percentage of "system" key events.
-(These are keys that are generally reserved for use by the system, such as Home, Back, Start Call,
-End Call, or Volume controls.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-appswitch <percent></code></td>
-<td>Adjust percentage of activity launches. At random intervals, the Monkey will issue a startActivity() call, as a way of maximizing
-coverage of all activities within your package.</td>
-</tr>
-
-<tr>
-<td><code>--pct-anyevent <percent></code></td>
-<td>Adjust percentage of other types of events. This is a catch-all for all other types of events such as keypresses, other less-used
-buttons on the device, and so forth.</td>
-</tr>
-
-<tr>
-<td rowspan="2">Constraints</td>
-<td><code>-p <allowed-package-name></code></td>
-<td>If you specify one or more packages this way, the Monkey will <i>only</i> allow the system
-to visit activities within those packages. If your application requires access to activities in
-other packages (e.g. to select a contact) you'll need to specify those packages as well.
-If you don't specify any packages, the Monkey will allow the system to launch activities
-in all packages. To specify multiple packages, use the -p option multiple times — one -p
-option per package.</td>
-</tr>
-
-<tr>
-<td><code>-c <main-category></code></td>
-<td>If you specify one or more categories this way, the Monkey will <i>only</i> allow the
-system to visit activities that are listed with one of the specified categories.
-If you don't specify any categories, the Monkey will select activities listed with the category
-Intent.CATEGORY_LAUNCHER or Intent.CATEGORY_MONKEY. To specify multiple categories, use the -c
-option multiple times — one -c option per category.</td>
-</tr>
-
-<tr>
-<td rowspan="8">Debugging</td>
-<td><code>--dbg-no-events</code></td>
-<td>When specified, the Monkey will perform the initial launch into a test activity, but
-will not generate any further events.
-For best results, combine with -v, one or more package constraints, and a non-zero throttle to keep the Monkey
-running for 30 seconds or more. This provides an environment in which you can monitor package
-transitions invoked by your application.</td>
-</tr>
-
-<tr>
-<td><code>--hprof</code></td>
-<td>If set, this option will generate profiling reports immediately before and after
-the Monkey event sequence.
-This will generate large (~5Mb) files in data/misc, so use with care. See
-<a href="{@docRoot}tools/debugging/debugging-tracing.html" title="traceview">Traceview</a> for more information
-on trace files.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-crashes</code></td>
-<td>Normally, the Monkey will stop when the application crashes or experiences any type of
-unhandled exception. If you specify this option, the Monkey will continue to send events to
-the system, until the count is completed.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-timeouts</code></td>
-<td>Normally, the Monkey will stop when the application experiences any type of timeout error such
-as a "Application Not Responding" dialog. If you specify this option, the Monkey will continue to
-send events to the system, until the count is completed.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-security-exceptions</code></td>
-<td>Normally, the Monkey will stop when the application experiences any type of permissions error,
-for example if it attempts to launch an activity that requires certain permissions. If you specify
-this option, the Monkey will continue to send events to the system, until the count is
-completed.</td>
-</tr>
-
-<tr>
-<td><code>--kill-process-after-error</code></td>
-<td>Normally, when the Monkey stops due to an error, the application that failed will be left
-running. When this option is set, it will signal the system to stop the process in which the error
-occurred.
-Note, under a normal (successful) completion, the launched process(es) are not stopped, and
-the device is simply left in the last state after the final event.</td>
-</tr>
-
-<tr>
-<td><code>--monitor-native-crashes</code></td>
-<td>Watches for and reports crashes occurring in the Android system native code. If --kill-process-after-error is set, the system will stop.</td>
-</tr>
-
-<tr>
-<td><code>--wait-dbg</code></td>
-<td>Stops the Monkey from executing until a debugger is attached to it.</td>
-</tr>
-
-</table>
-
-<!-- TODO: add a section called "debugging" that covers ways to use it,
-need to clear data, use of the seed, etc. -->
-
-<!-- TODO: add a section that lays down a contract for Monkey output so it can be
-scripted safely. -->
-
diff --git a/docs/html/tools/help/monkeyrunner_concepts.jd b/docs/html/tools/help/monkeyrunner_concepts.jd
deleted file mode 100644
index c37e64d..0000000
--- a/docs/html/tools/help/monkeyrunner_concepts.jd
+++ /dev/null
@@ -1,319 +0,0 @@
-page.title=monkeyrunner
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li>
- <a href="#SampleProgram">A Simple monkeyrunner Program</a>
- </li>
- <li>
- <a href="#APIClasses">The monkeyrunner API</a>
- </li>
- <li>
- <a href="#RunningMonkeyRunner">Running monkeyrunner</a>
- </li>
- <li>
- <a href="#Help">monkeyrunner Built-in Help</a>
- </li>
- <li>
- <a href="#Plugins">Extending monkeyrunner with Plugins</a>
- </li>
- </ol>
- <h2>See Also</h2>
- <ol>
- <li>
- <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>
- </li>
- </ol>
- </div>
-</div>
-<p>
- The monkeyrunner tool provides an API for writing programs that control an Android device
- or emulator from outside of Android code. With monkeyrunner, you can write a Python program
- that installs an Android application or test package, runs it, sends keystrokes to it,
- takes screenshots of its user interface, and stores screenshots on the workstation. The
- monkeyrunner tool is primarily designed to test applications and devices at the
- functional/framework level and for running unit test suites, but you are free to use it for
- other purposes.
-</p>
-<p>
- The monkeyrunner tool is not related to the
- <a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>,
- also known as the <code>monkey</code> tool. The <code>monkey</code> tool runs in an
- <code><a href="{@docRoot}tools/help/adb.html">adb</a></code> shell directly on the
- device or emulator and generates pseudo-random streams of user and system events. In comparison,
- the monkeyrunner tool controls devices and emulators from a workstation by sending specific
- commands and events from an API.
-</p>
-<p>
- The monkeyrunner tool provides these unique features for Android testing:
-</p>
-<ul>
- <li>
- Multiple device control: The monkeyrunner API can apply one or more
- test suites across multiple devices or emulators. You can physically attach all the devices
- or start up all the emulators (or both) at once, connect to each one in turn
- programmatically, and then run one or more tests. You can also start up an emulator
- configuration programmatically, run one or more tests, and then shut down the emulator.
- </li>
- <li>
- Functional testing: monkeyrunner can run an automated start-to-finish test of an Android
- application. You provide input values with keystrokes or touch events, and view the results
- as screenshots.
- </li>
- <li>
- Regression testing - monkeyrunner can test application stability by running an application
- and comparing its output screenshots to a set of screenshots that are known to be correct.
- </li>
- <li>
- Extensible automation - Since monkeyrunner is an API toolkit, you can develop an entire
- system of Python-based modules and programs for controlling Android devices. Besides using
- the monkeyrunner API itself, you can use the standard Python
- <code><a href="http://docs.python.org/library/os.html">os</a></code> and
- <code><a href="http://docs.python.org/library/subprocess.html">subprocess</a></code>
- modules to call Android tools such as
- <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>.
- <p>
- You can also add your own classes to the monkeyrunner API. This is described
- in more detail in the section
- <a href="#Plugins">Extending monkeyrunner with plugins</a>.
- </p>
- </li>
-</ul>
-<p>
- The monkeyrunner tool uses <a href="http://www.jython.org/">Jython</a>, a
- implementation of Python that uses the Java programming language. Jython allows the
- monkeyrunner API to interact easily with the Android framework. With Jython you can
- use Python syntax to access the constants, classes, and methods of the API.
-</p>
-
-<h2 id="SampleProgram">A Simple monkeyrunner Program</h2>
-<p>
- Here is a simple monkeyrunner program that connects to a device, creating a
- <code><a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a></code>
- object. Using the <code>MonkeyDevice</code> object, the program installs an Android application
- package, runs one of its activities, and sends key events to the activity.
- The program then takes a screenshot of the result, creating a
- <code><a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a></code> object.
- From this object, the program writes out a <code>.png</code> file containing the screenshot.
-</p>
-<pre>
-# Imports the monkeyrunner modules used by this program
-from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
-
-# Connects to the current device, returning a MonkeyDevice object
-device = MonkeyRunner.waitForConnection()
-
-# Installs the Android package. Notice that this method returns a boolean, so you can test
-# to see if the installation worked.
-device.installPackage('myproject/bin/MyApplication.apk')
-
-# sets a variable with the package's internal name
-package = 'com.example.android.myapplication'
-
-# sets a variable with the name of an Activity in the package
-activity = 'com.example.android.myapplication.MainActivity'
-
-# sets the name of the component to start
-runComponent = package + '/' + activity
-
-# Runs the component
-device.startActivity(component=runComponent)
-
-# Presses the Menu button
-device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
-
-# Takes a screenshot
-result = device.takeSnapshot()
-
-# Writes the screenshot to a file
-result.writeToFile('myproject/shot1.png','png')
-</pre>
-
-<h2 id="APIClasses">The monkeyrunner API</h2>
-<p>
- The monkeyrunner API is contained in three modules in the package
- <code>com.android.monkeyrunner</code>:
-</p>
-<ul>
- <li>
- <code><a href="{@docRoot}tools/help/MonkeyRunner.html">MonkeyRunner</a></code>:
- A class of utility methods for monkeyrunner programs. This class provides a method for
- connecting monkeyrunner to a device or emulator. It also provides methods for
- creating UIs for a monkeyrunner program and for displaying the built-in help.
- </li>
- <li>
- <code><a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a></code>:
- Represents a device or emulator. This class provides methods for installing and
- uninstalling packages, starting an Activity, and sending keyboard or touch events to an
- application. You also use this class to run test packages.
- </li>
- <li>
- <code><a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a></code>:
- Represents a screen capture image. This class provides methods for capturing screens,
- converting bitmap images to various formats, comparing two MonkeyImage objects, and
- writing an image to a file.
- </li>
-</ul>
-<p>
- In a Python program, you access each class as a Python module. The monkeyrunner tool
- does not import these modules automatically. To import a module, use the
- Python <code>from</code> statement:
-</p>
-<pre>
-from com.android.monkeyrunner import <module>
-</pre>
-<p>
- where <code><module></code> is the class name you want to import. You can import more
- than one module in the same <code>from</code> statement by separating the module names with
- commas.
-</p>
-<h2 id="RunningMonkeyRunner">Running monkeyrunner</h2>
-<p>
- You can either run monkeyrunner programs from a file, or enter monkeyrunner statements in
- an interactive session. You do both by invoking the <code>monkeyrunner</code> command
- which is found in the <code>tools/</code> subdirectory of your SDK directory.
- If you provide a filename as an argument, the <code>monkeyrunner</code> command
- runs the file's contents as a Python program; otherwise, it starts an interactive session.
-</p>
-<p>
- The syntax of the <code>monkeyrunner</code> command is
-</p>
-<pre>
-monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>
-</pre>
-<p>
-Table 1 explains the flags and arguments.
-</p>
-<p class="table-caption" id="table1">
- <strong>Table 1.</strong> <code>monkeyrunner</code> flags and arguments.</p>
-
-<table>
- <tr>
- <th>Argument</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>
- <nobr>
- <code>-plugin <plugin_jar></code>
- </nobr>
- </td>
- <td>
- (Optional) Specifies a <code>.jar</code> file containing a plugin for monkeyrunner.
- To learn more about monkeyrunner plugins, see
- <a href="#Plugins">Extending monkeyrunner with plugins</a>. To specify more than one
- file, include the argument multiple times.
- </td>
- </tr>
- <tr>
- <td>
- <nobr>
- <code><program_filename></code>
- </nobr>
- </td>
- <td>
- If you provide this argument, the <code>monkeyrunner</code> command runs the contents
- of the file as a Python program. If the argument is not provided, the command starts an
- interactive session.
- </td>
- </tr>
- <tr>
- <td>
- <code><program_options></code>
- </td>
- <td>
- (Optional) Flags and arguments for the program in <program_file>.
- </td>
- </tr>
-</table>
-<h2 id="Help">monkeyrunner Built-in Help</h2>
-<p>
- You can generate an API reference for monkeyrunner by running:
-</p>
-<pre>
-monkeyrunner help.py <format> <outfile>
-</pre>
-<p>
-The arguments are:
-</p>
- <ul>
- <li>
- <code><format></code> is either <code>text</code> for plain text output
- or <code>html</code> for HTML output.
- </li>
- <li>
- <code><outfile></code> is a path-qualified name for the output file.
- </li>
- </ul>
-<h2 id="Plugins">Extending monkeyrunner with Plugins</h2>
-<p>
- You can extend the monkeyrunner API with classes you write in the Java programming language
- and build into one or more <code>.jar</code> files. You can use this feature to extend the
- monkeyrunner API with your own classes or to extend the existing classes. You can also use this
- feature to initialize the monkeyrunner environment.
-</p>
-<p>
- To provide a plugin to monkeyrunner, invoke the <code>monkeyrunner</code> command with the
- <code>-plugin <plugin_jar></code> argument described in
- <a href="#table1">table 1</a>.
-</p>
-<p>
- In your plugin code, you can import and extend the the main monkeyrunner classes
- <code>MonkeyDevice</code>, <code>MonkeyImage</code>, and <code>MonkeyRunner</code> in
- <code>com.android.monkeyrunner</code> (see <a href="#APIClasses">The monkeyrunner API</a>).
-</p>
-<p>
- Note that plugins do not give you access to the Android SDK. You can't import packages
- such as <code>com.android.app</code>. This is because monkeyrunner interacts with the
- device or emulator below the level of the framework APIs.
-</p>
-<h3>The plugin startup class</h3>
-<p>
- The <code>.jar</code> file for a plugin can specify a class that is instantiated before
- script processing starts. To specify this class, add the key
- <code>MonkeyRunnerStartupRunner</code> to the <code>.jar</code> file's
- manifest. The value should be the name of the class to run at startup. The following
- snippet shows how you would do this within an <code>ant</code> build script:
-</p>
-<pre>
-<jar jarfile="myplugin" basedir="${build.dir}">
-<manifest>
-<attribute name="MonkeyRunnerStartupRunner" value="com.myapp.myplugin"/>
-</manifest>
-</jar>
-
-
-</pre>
-<p>
- To get access to monkeyrunner's runtime environment, the startup class can implement
- <code>com.google.common.base.Predicate<PythonInterpreter></code>. For example, this
- class sets up some variables in the default namespace:
-</p>
-<pre>
-package com.android.example;
-
-import com.google.common.base.Predicate;
-import org.python.util.PythonInterpreter;
-
-public class Main implements Predicate<PythonInterpreter> {
- @Override
- public boolean apply(PythonInterpreter anInterpreter) {
-
- /*
- * Examples of creating and initializing variables in the monkeyrunner environment's
- * namespace. During execution, the monkeyrunner program can refer to the variables "newtest"
- * and "use_emulator"
- *
- */
- anInterpreter.set("newtest", "enabled");
- anInterpreter.set("use_emulator", 1);
-
- return true;
- }
-}
-</pre>
diff --git a/docs/html/tools/help/proguard.jd b/docs/html/tools/help/proguard.jd
deleted file mode 100755
index b38aba6..0000000
--- a/docs/html/tools/help/proguard.jd
+++ /dev/null
@@ -1,493 +0,0 @@
-page.title=Shrink Your Code and Resources
-parent.title=Tools
-parent.link=index.html
-page.metaDescription=Make your APK file smaller and more secure by shrinking your code and resources.
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#shrink-code">Shrink Your Code</a>
- <ol>
- <li><a href="#keep-code">Customize which code to keep</a></li>
- <li><a href="#decode-stack-trace">Decode an obfuscated stack trace</a></li>
- </ol>
- </li>
- <li><a href="#shrink-resources">Shrink Your Resources</a>
- <ol>
- <li><a href="#keep-resources">Customize which resources to keep</a></li>
- <li><a href="#strict-reference-checks">Enable strict reference checks</a></li>
- <li><a href="#unused-alt-resources">Remove unused alternative resources</a></li>
- <li><a href="#merge-resources">Merge duplicate resources</a></li>
- <li><a href="#troubleshoot-resource-shrink">Troubleshoot resource shrinking</a></li>
- </ol>
- </li>
-</ol>
-
- <h2>See also</h2>
- <ul>
- <li>
- <a class="external-link"
- href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/introduction.html">ProGuard
- Manual</a>
- </li>
- </ul>
- </div>
- </div>
-
-
-
-<p>To make your APK file as small as possible, you should enable shrinking for
-your code and resources in your release build. This guide describes how to do
-both and how to specify what to keep or discard during a build.</p>
-
-<p>Code shrinking is available with ProGuard, which detects and removes unused
-classes, fields, methods, and attributes from your packaged app, including
-those from included code libraries (making it a valuable tool for working
-around the <a href="{@docRoot}tools/building/multidex.html">64k reference
-limit</a>). ProGuard also optimizes the bytecode, removes unused code
-instructions, and obfuscates the remaining classes, fields, and methods with
-short names. The obfuscated code makes your APK difficult to reverse engineer,
-which is especially valuable when your app uses security-sensitive features,
-such as <a href="{@docRoot}google/play/licensing/overview.html">licensing
-verification</a>.</p>
-
-<p>Resource shrinking is available with the Android Plugin for Gradle, which
-removes unused resources from your packaged app, including unused resources in
-code libraries. It works in conjunction with code shrinking such that once
-unused code has been removed, any resources no longer referenced can be safely
-removed as well.</p>
-
-
-<p>Features in this document depend on:</p>
-<ul>
-<li><a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools</a> 25.0.10
-or higher</li>
-<li><a href="{@docRoot}tools/revisions/gradle-plugin.html">Android Plugin
-for Gradle</a> 2.0.0 or higher</li>
-</ul>
-
-<h2 id="shrink-code">Shrink Your Code</h2>
-
-<p>To enable code shrinking with ProGuard, add <code>minifyEnabled true</code>
-to the appropriate build type in your <code>build.gradle</code> file.</p>
-
-<p>Be aware that code shrinking slows down the build time, so you should avoid
-using it on your debug build if possible. However, it's important that you
-do enable code shrinking on your final APK used for testing, because it might
-introduce bugs if you do not sufficiently <a href="#keep-code">customize which
-code to keep</a>.</p>
-
-<p>For example, the following snippet from a <code>build.gradle</code> file
-enables code shrinking for the release build:</p>
-
-<pre class="no-pretty-print">
-android {
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile(‘proguard-android.txt'),
- 'proguard-rules.pro</a>'
- }
- }
- ...
-}
-</pre>
-
-<p class="note"><strong>Note</strong>: Android Studio disables ProGuard when
-using <a href=
-"{@docRoot}tools/building/building-studio.html#instant-run">Instant
-Run</a>.</p>
-
-<p>In addition to the <code>minifyEnabled</code> property, the
-<code>proguardFiles</code> property defines the ProGuard rules:</p>
-
-<ul>
-<li>The <code>getDefaultProguardFile(‘proguard-android.txt')</code> method gets
-the default ProGuard settings from the Android SDK <code>tools/proguard/</code>
-folder.
-<p><strong>Tip</strong>: For even more code shrinking, try the
-<code>proguard-android-optimize.txt</code> file that's in the same location. It
-includes the same ProGuard rules, but with other optimizations that perform
-analysis at the bytecode level—inside and across methods—to reduce your APK
-size further and help it run faster.</p>
-</li>
-<li>The <code>proguard-rules.pro</code> file is where you can add custom
-ProGuard rules. By default, this file is located at the root of the module
-(next to the <code>build.gradle</code> file).</li>
-</ul>
-
-<p>To add more ProGuard rules that are specific to each build variant, add
-another <code>proguardFiles</code> property in the corresponding
-<code>productFlavor</code> block. For example, the following Gradle file adds
-<code>flavor2-rules.pro</code> to the <code>flavor2</code> product flavor. Now
-<code>flavor2</code> uses all three ProGuard rules because those from the
-<code>release</code> block are also applied.</p>
-
-<pre class="no-pretty-print">
-android {
- ...
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'),
- 'proguard-rules.pro'</span>
- }
- }
- productFlavors {
- flavor1 {
- }
- flavor2 {
- proguardFile 'flavor2-rules.pro'
- }
- }
-}
-</pre>
-
-<p>With each build, ProGuard outputs the following files:</p>
-<dl>
-<dt><code>dump.txt</code></dt>
-<dd>Describes the internal structure of all the class files in the APK.</dd>
-
-<dt><code>mapping.txt</code></dt>
-<dd>Provides a translation between the original and obfuscated class, method, and
-field names.</dd>
-
-<dt><code>seeds.txt</code></dt>
-<dd>Lists the classes and members that were not obfuscated.</dd>
-
-<dt><code>usage.txt</code></dt>
-<dd>Lists the code that was removed from the APK.</dd>
-</dl>
-
-<p>These files are saved at
-<code><module-name>/build/outputs/mapping/release/</code>.</p>
-
-
-<h3 id="keep-code">Customize which code to keep</h3>
-
-<p>For some situations, the default ProGuard configuration file
-(<code>proguard-android.txt</code>) is sufficient and ProGuard removes all—and
-only—the unused code. However, many situations are difficult for ProGuard to
-analyze correctly and it might remove code your app actually needs. Some
-examples of when it might incorrectly remove code include:</p>
-
-<ul>
-<li>When your app references a class only from the
-<code>AndroidManifest.xml</code> file</li>
-<li>When your app calls a method from the Java Native Interface (JNI)</li>
-<li>When your app manipulates code at runtime (such as with reflection or
-introspection)</li>
-</ul>
-
-<p>Testing your app should reveal any errors caused by inappropriately removed
-code, but you can also inspect what code was removed by reviewing the
-<code>usage.txt</code> output file saved in
-<code><module-name>/build/outputs/mapping/release/</code>.</p>
-
-<p>To fix errors and force ProGuard to keep certain code, add a <code><a
-href="https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/usage.html"
->-keep</a></code> line in the ProGuard configuration file. For example:</p>
-
-<pre>
--keep public class MyClass
-</pre>
-
-<p>Alternatively, you can add the <code><a href=
-"{@docRoot}reference/android/support/annotation/Keep.html">@Keep</a></code>
-annotation to the code you want to keep. Adding <code>@Keep</code> on a class
-keeps the entire class as-is. Adding it on a method or field will keep the
-method/field (and it's name) as well as the class name intact. Note that this
-annotation is available only when using the <a href=
-"{@docRoot}tools/support-library/features.html#annotations">Annotations Support
-Library</a>.</p>
-
-
-<p>There are many considerations you should make when using the
-<code>-keep</code> option; for more information about customizing your
-configuration file, read the <a href=
-"http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/introduction.html">
-ProGuard Manual</a>. The <a href=
-"http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/troubleshooting.html">
-Troubleshooting</a> section outlines other common problems you might encounter
-when your code gets stripped away.</p>
-
-
-<h3 id="decode-stack-trace">Decode an obfuscated stack trace</h3>
-
-<p>After ProGuard shrinks your code, reading a stack trace is difficult (if not
-impossible) because the method names are obfuscated. Fortunately, ProGuard
-creates a <code>mapping.txt</code> file each time it runs, which shows the
-original class, method, and field names mapped to the obfuscated names.
-ProGuard saves the file in the app
-<code><module-name>/build/outputs/mapping/release/</code> directory.</p>
-
-
-<p>Be aware that the <code>mapping.txt</code> file is overwritten every time
-you create a release build with ProGuard, so you must carefully save a copy
-each time you publish a new release. By retaining a copy of the
-<code>mapping.txt</code> file for each release build, you'll be able to debug a
-problem if a user submits an obfuscated stack trace from an older version of
-your app.</p>
-
-<p>When publishing your app on Google Play, you can upload the
-<code>mapping.txt</code> file for each version of your APK. Then Google Play
-will deobfuscate incoming stack traces from user-reported issues so you can
-review them in the Google Play Developer Console. For more information, see the
-Help Center article about how to <a href=
-"https://support.google.com/googleplay/android-developer/answer/6295281">deobfuscate
-crash stack traces</a>.</p>
-
-<p>To convert an obfuscated stack trace to a readable one yourself, use the
-<code>retrace</code> script (<code>retrace.bat</code> on Windows;
-<code>retrace.sh</code> on Mac/Linux). It is located in the
-<code><sdk-root>/tools/proguard/</code> directory. The script takes the
-<code>mapping.txt</code> file and your stack trace, producing a new, readable
-stack trace. The syntax for using the retrace tool is:</p>
-
-<pre class="no-pretty-print">
-retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
-</pre>
-
-<p>For example:</p>
-
-<pre class="no-pretty-print">
-retrace.bat -verbose mapping.txt obfuscated_trace.txt
-</pre>
-
-<p>If you do not specify the stack trace file, the retrace tool reads from
-standard input.</p>
-
-<h2 id="shrink-resources">Shrink Your Resources</h2>
-
-<p>Resource shrinking works only in conjunction with code shrinking. After the
-code shrinker removes all unused code, the resource shrinker can identify which
-resources the app still uses. This is especially true when you add code
-libraries that include resources—you must remove unused library code so the
-library resources become unreferenced and, thus, removable by the resource
-shrinker.</p>
-
-<p>To enable resource shrinking, set the <code>shrinkResources</code> property
-to <code>true</code> in your <code>build.gradle</code> file (alongside
-<code>minifyEnabled</code> for code shrinking). For example:</p>
-
-<pre class="no-pretty-print">
-android {
- ...
- buildTypes {
- release {
- shrinkResources true
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'),
- 'proguard-rules.pro'
- }
- }
-}
-</pre>
-
-<p>If you haven't already built your app using <code>minifyEnabled</code> for
-code shrinking, then try that before enabling <code>shrinkResources</code>,
-because you might need to edit your <code>proguard-rules.pro</code> file to
-keep classes or methods that are created or invoked dynamically before you
-start removing resources.</p>
-
-<p class="note"><strong>Note</strong>: The resource shrinker currently does not
-remove resources defined in a <code>values/</code> folder (such as strings,
-dimensions, styles, and colors). This is because the Android Asset Packaging
-Tool (AAPT) does not allow the Gradle Plugin to specify predefined versions for
-resources. For details, see <a href=
-"https://code.google.com/p/android/issues/detail?id=70869">issue 70869</a>.</p>
-
-
-<h3 id="keep-resources">Customize which resources to keep</h3>
-
-<p>If there are specific resources you wish to keep or discard, create an XML
-file in your project with a <code><resources></code> tag and specify each
-resource to keep in the <code>tools:keep</code> attribute and each resource to
-discard in the <code>tools:discard</code> attribute. Both attributes accept a
-comma-separated list of resource names. You can use the asterisk character as a
-wild card.</p>
-
-<p>For example:</p>
-
-<pre>
-<?xml version=1.0" encoding="utf-8"?>
-<resources xmlns:tools="http://schemas.android.com/tools"
- tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
- tools:discard="@layout/unused2" />
-</pre>
-
-<p>Save this file in your project resources, for example, at
-<code>res/raw/keep.xml</code>. The build does not package this file into your
-APK.</p>
-
-<p>Specifying which resources to discard might seem silly when you could
-instead delete them, but this can be useful when using build variants. For
-example, you might put all your resources into the common project directory,
-then create a different <code>keep.xml</code> file for each build variant when
-you know that a given resource appears to be used in code (and therefore not
-removed by the shrinker) but you know it actually won't be used for the given
-build variant.</p>
-
-<h3 id="strict-reference-checks">Enable strict reference checks</h3>
-
-<p>Normally, the resource shrinker can accurately determine whether a resource
-is used. However, if your code makes a call to {@link
-android.content.res.Resources#getIdentifier(String,String,String)
-Resources.getIdentifier()} (or if any of your libraries do that—the <a href=
-"{@docRoot}tools/support-library/features.html#v7-appcompat">AppCompat</a>
-library does), that means your code is looking up resource names based on
-dynamically-generated strings. When you do this, the resource shrinker behaves
-defensively by default and marks all resources with a matching name format as
-potentially used and unavailable for removal.</p>
-
-<p>For example, the following code causes all resources with the
-<code>img_</code> prefix to be marked as used.</p>
-
-<pre>
-String name = String.format("img_%1d", angle + 1);
-res = getResources().getIdentifier(name, "drawable", getPackageName());
-</pre>
-
-<p>The resource shrinker also looks through all the string constants in your
-code, as well as various <code>res/raw/</code> resources, looking for resource
-URLs in a format similar to
-<code>file:///android_res/drawable//ic_plus_anim_016.png</code>. If it finds
-strings like this or others that look like they could be used to construct URLs
-like this, it doesn't remove them.</p>
-
-<p>These are examples of the safe shrinking mode that is enabled by default.
-You can, however, turn off this "better safe than sorry" handling, and specify
-that the resource shrinker keep only resources that it's certain are used. To
-do this, set <code>shrinkMode</code> to <code>strict</code> in the
-<code>keep.xml</code> file, as follows:</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:tools="http://schemas.android.com/tools"
- tools:shrinkMode="strict" />
-</pre>
-
-<p>If you do enable strict shrinking mode and your code also references
-resources with dynamically-generated strings, as shown above, then you must
-manually keep those resources using the <code>tools:keep</code> attribute.</p>
-
-<h3 id="unused-alt-resources">Remove unused alternative resources</h3>
-
-<p>The Gradle resource shrinker removes only resources that are not referenced
-by your app code, which means it will not remove <a href=
-"{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">
-alternative resources</a> for different device configurations. If necessary,
-you can use the Android Gradle plugin's <code>resConfigs</code> property to
-remove alternative resource files that your app does not need.</p>
-
-<p>For example, if you are using a library that includes language resources
-(such as AppCompat or Google Play Services), then your APK includes all
-translated language strings for the messages in those libraries whether the
-rest of your app is translated to the same languages or not. If you'd like to
-keep only the languages that your app officially supports, you can specify
-those languages using the <code>resConfig</code> property. Any resources for
-languages not specified are removed.</p>
-
-<p>The following snippet shows how to limit your language resources to just
-English and French:</p>
-
-<pre class="no-pretty-print">
-android {
- defaultConfig {
- ...
- resConfigs "en", "fr"
- }
-}
-</pre>
-
-<p>To customize which screen density or ABI resources to include in your APK,
-instead use <a href=
-"http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits">APK
-splits</a> to build different APKs for different devices.</p>
-
-<h3 id="merge-resources">Merge duplicate resources</h3>
-
-<p>By default, Gradle also merges identically named resources, such as
-drawables with the same name that might be in different resource folders. This
-behavior is not controlled by the <code>shrinkResources</code> property and
-cannot be disabled, because it is necessary to avoid errors when multiple
-resources match the name your code is looking up.</p>
-
-<p>Resource merging occurs only when two or more files share an identical
-resource name, type, and qualifier. Gradle selects which file it considers to
-be the best choice among the duplicates (based on a priority order described
-below) and passes only that one resource to the AAPT for distribution in the
-APK file.</p>
-
-<p>Gradle looks for duplicate resources in the following locations:</p>
-
-<ul>
-<li>The main resources, associated with the main source set, generally
-located in <code>src/main/res/</code>.</li>
-<li>The variant overlays, from the build type and build flavors.</li>
-<li>The library project dependencies.</li>
-</ul>
-
-<p>Gradle merges duplicate resources in the following cascading priority order:</p>
-
-<p>Dependencies → Main → Build flavor → Build type</p>
-
-<p>For example, if a duplicate resource appears in both your main resources and
-a build flavor, Gradle selects the one in the build flavor.</p>
-
-<p>If identical resources appear in the same source set, Gradle cannot merge
-them and emits a resource merge error. This can happen if you define multiple
-source sets in the <code>sourceSet</code> property of your
-<code>build.gradle</code> file—for example if both <code>src/main/res/</code>
-and <code>src/main/res2/</code> contain identical resources.</p>
-
-<h3 id="troubleshoot-resource-shrink">Troubleshoot resource shrinking</h3>
-
-<p>When you shrink resources, the Gradle Console shows a summary of the
-resources that it removed from the app package. For example:</p>
-
-<pre class="no-pretty-print">
-:android:shrinkDebugResources
-Removed unused resources: Binary resource data reduced from 2570KB to 1711KB: Removed 33%
-:android:validateDebugSigning
-</pre>
-
-<p>Gradle also creates a diagnostic file named <code>resources.txt</code> in
-<code><module-name>/build/outputs/mapping/release/</code> (the same
-folder as ProGuard's output files). This file includes details such as which
-resources reference other resources and which resources are used or
-removed.</p>
-
-<p>For example, to find out why <code>@drawable/ic_plus_anim_016</code> is
-still in your APK, open the <code>resources.txt</code> file and search for that
-file name. You might find that it's referenced from another resource, as
-follows:</p>
-
-<pre class="no-pretty-print">
-16:25:48.005 [QUIET] [system.out] @drawable/add_schedule_fab_icon_anim : reachable=true
-16:25:48.009 [QUIET] [system.out] @drawable/ic_plus_anim_016
-</pre>
-
-<p>You now need to know why <code>@drawable/add_schedule_fab_icon_anim</code>
-is reachable—and if you search upwards you'll find that resource is listed
-under "The root reachable resources are:". This means there is a code reference
-to <code>add_schedule_fab_icon_anim</code> (that is, its R.drawable ID was
-found in the reachable code).</p>
-
-<p>If you are not using strict checking, resource IDs can be marked as reachable
-if there are string constants that look like they might be used to construct
-resource names for dynamically loaded resources. In that case, if you search
-the build output for the resource name, you might find a message like this:</p>
-
-<pre class="no-pretty-print">
-10:32:50.590 [QUIET] [system.out] Marking drawable:ic_plus_anim_016:2130837506
- used because it format-string matches string pool constant ic_plus_anim_%1$d.
-</pre>
-
-<p>If you see one of these strings and you are certain that the string is not
-being used to load the given resource dynamically, you can use the
-<code>tools:discard</code> attribute to inform the build system to remove it,
-as described in the section about how to <a href="#keep-resources"
->customize which resources to keep</a>.</p>
diff --git a/docs/html/tools/help/project-mgmt.jd b/docs/html/tools/help/project-mgmt.jd
deleted file mode 100644
index 693f0de..0000000
--- a/docs/html/tools/help/project-mgmt.jd
+++ /dev/null
@@ -1,174 +0,0 @@
-page.title=Project Structure Management
-parent.title=Tools
-parent.link=index.html
-page.tags="android studio,project structure,target sdk,minimum sdk"
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#dev-svc">Developer Services</a></li>
- <li><a href="#modules">Modules</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>
- You can use the <strong>Android Studio File > Project Structure</strong> dialog box to
- change configuration settings for your Android Studio project. This dialog
- box is useful if you need to change some of the settings you chose when you
- created the project.
-</p>
-
-<p>
- The Project Structure dialog box contains the following sections:
-</p>
-
-<ul>
- <li>
- <strong>SDK Location:</strong> Sets the location of the JDK, Android SDK,
- and Android NDK that the project uses.
- </li>
-
- <li>
- <strong>Project:</strong> Sets version information for <a
- href="{@docRoot}tools/building/plugin-for-gradle.html">Gradle</a> and for
- the <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android plugin
- for Gradle</a>.
- </li>
-
- <li>
- <strong>Developer Services:</strong> Contains settings for Android Studio
- add-in components from Google or third parties.
- </li>
-
- <li>
- <strong>Modules:</strong> Used to set or change various module-specific
- build settings, including the target and minimum SDK, the app signature,
- and library dependencies. Most importantly, this is where you change
- the settings for your project's <em>app</em> module.
- </li>
-</ul>
-
-<p>
- The following two sections provide information on the <a href=
- "#dev-svc">Developer Services</a> and <a href="#modules">Modules</a>
- sections.
-</p>
-
-<h2 id="dev-svc">
- Developer Services
-</h2>
-
-<p>
- The <em>Developer Services</em> section of the <em>Project Structure</em>
- dialog box contains configuration pages
- for several services that you can be use with your app. This section
- contains the following pages:
-</p>
-
-<ul>
- <li>
- <strong>AdMob:</strong> Allows you to turn on Google's <a href=
- "https://developers.google.com/admob/" class="external-link">AdMob</a>
- component, which helps you understand your users and show them tailored
- advertisements.
- </li>
-
- <li>
- <strong>Analytics:</strong> Allows you to turn on <a href=
- "https://developers.google.com/analytics/" class="external-link">Google
- Analytics</a>, which helps you measure user interactions with your app
- across various devices and environments.
- </li>
-
- <li>
- <strong>Authentication:</strong> Allows users to use <a href=
- "https://developers.google.com/identity/sign-in/android/" class=
- "external-link">Google Sign-In</a> to sign in to your app with their Google
- accounts.
- </li>
-
- <li>
- <strong>Cloud:</strong> Allows you to turn on <a href=
- "https://www.firebase.com/" class="external-link">Firebase</a> cloud-based
- services for your app.
- </li>
-
- <li>
- <strong>Notifications:</strong> Allows you to use <a href=
- "https://developers.google.com/cloud-messaging/" class=
- "external-link">Google Cloud Messaging</a> to communicate between your app
- and your server.
- </li>
-</ul>
-
-<p>
- Turning on any of these services may cause Android Studio to add necessary
- dependencies and permissions to your app. Each configuration page lists these
- and other actions that Android Studio takes if you enable the associated service.
-</p>
-
-<h2 id="modules">
- Modules
-</h2>
-
-<p>
- The <em>Modules</em> settings section lets you change configuration
- options for each of your project's modules. This section contains one page
- for each module in your app. In many cases, the project has just a single
- module, named <em>app</em>. However, if your project targets multiple form
- factors, it might have several modules. For example, if your project contains
- both a tablet app and a wearable app, it might have two modules, named
- <em>mobile</em> and <em>wear</em>. For more information about project
- modules, see <a href=
- "{@docRoot}tools/projects/index.html#ApplicationModules">Android Application
- Modules</a>.
-</p>
-
-<p>
- Each module's settings page is divided into the following panes:
-</p>
-
-<ul>
- <li>
- <strong>Properties:</strong> Specifies the versions of the SDK and build
- tools to use to compile the module.
- </li>
-
- <li>
- <strong>Signing:</strong> Specifies the certificate to use to
- <a href="{@docRoot}tools/publishing/app-signing.html#sign-auto">sign your
- APK</a>.
- </li>
-
- <li>
- <strong>Flavors:</strong> Lets you create multiple build <em>flavors</em>, where
- each flavor specifies a set of configuration settings, such as the
- module's minimum and target SDK version, and the
- <a href="{@docRoot}tools/publishing/versioning.html">version code and
- version name</a>. For example, you might define one flavor that has a
- minimum SDK of 15 and a target SDK of 21, and another flavor that has a
- minimum SDK of 19 and a target SDK of 23.
- </li>
-
- <li>
- <strong>Build Types:</strong> Lets you create and modify build
- configurations, as described in <a href=
- "{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
- Builds</a>. By default, every module has <em>debug</em> and
- <em>release</em> build types, but you can define more as needed.
- </li>
-
- <li>
- <strong>Dependencies:</strong> Lists the library, file, and module
- dependencies for this module. You can add, modify, and delete dependencies
- from this pane. For more information about module dependencies, see
- <a href="{@docRoot}tools/building/configuring-gradle.html#declareDeps">Declare
- dependencies</a> in <a href=
- "{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
- Builds</a>.
- </li>
-</ul>
diff --git a/docs/html/tools/help/sdk-manager.jd b/docs/html/tools/help/sdk-manager.jd
deleted file mode 100755
index 36eac07..0000000
--- a/docs/html/tools/help/sdk-manager.jd
+++ /dev/null
@@ -1,181 +0,0 @@
-page.title=SDK Manager
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#updatecheck">Enabling Automatic Update Checking</a></li>
- <li><a href="#run">Running the SDK Manager</a></li>
- <li><a href="#Recommended">Recommended Packages</a></li>
- <li><a href="#AddingSites">Adding New Sites</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>The Android SDK Manager separates the SDK tools, platforms, and other components into packages
-for easy access and management. You can also customize which sites the SDK Manager checks for new
-or updated SDK packages and add-on tools. For example, you can configure the SDK Manager
-to automatically check for updates and notify you when updates are available.
-When you receive such a notification, you can then quickly decide whether to download the changes. </p>
-
-<h2 id="updatecheck">Enabling Automatic Update Checking</h2>
-<p>To enable automatic update checking: </p>
-<ol>
- <li>Choose <strong>File</strong> > <strong>Settings</strong>
- > <strong>Appearance & Behavior</strong> > <strong>System Settings</strong>
- > <strong>Updates</strong>. </li>
- <li>Select the <strong>Automatically check updates for</strong> checkbox and select an
- <ahref="{@docRoot}tools/studio/studio-config.html#update-channel">update channel</a>.</li>
-
-
- <li>Click <strong>OK</strong> or <strong>Apply</strong> to enable the update checking. </li>
-</ol>
-
-<h2 id="run">Running the SDK Manager</h2>
-<p>You can launch the SDK Manager in one of the following ways:</p>
-<ul>
- <li>From the Android Studio <strong>File</strong> menu: <strong>File</strong> >
- <strong>Settings</strong> > <strong>Appearance & Behavior</strong> >
- <strong>System Settings</strong> > <strong>Android SDK</strong>.</li>
- <li>From the Android Studio <strong>Tools</strong> menu: <strong>Tools</strong> >
- <strong>Android</strong> > <strong>SDK Manager</strong>.</li>
- <li>From the SDK Manager icon
- (<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:sub;margin:0;height:17px" alt="" />)
- in the menu bar. </li>
-</ul>
-<p>The SDK Manager appears.</p>
-<img src="{@docRoot}images/tools/studio-sdk-manager-packages.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The Android SDK Manager shows the
-SDK platforms and packages that are available and installed along with the SDK update sites.</p>
-
-<p class="note"><strong>Tip:</strong> The standalone SDK Manager is still available from the
-command line, but we recommend it for use with standalone SDK installations only.</p>
-
-<p>Click the checkbox next to
-each additional SDK platform and tool that you want to install. Clear the
-checkbox to uninstall an SDK platform or tool. Click <strong>Apply</strong> or <strong>OK</strong>
-to update the packages and tools. </p>
-
-<p class="note"><strong>Tip:</strong> When an update is available for an installed
-package, a hyphen (-) appears in the checkbox next to the package. A download icon
-(<img src="{@docRoot}images/tools/studio-sdk-dwnld-icon.png" style="vertical-align:sub;margin:0;height:17px" alt="" />)
-also appears next
-to the checkbox to indicate the pending update. An update icon
-(<img src="{@docRoot}images/tools/studio-sdk-removal-icon.png" style="vertical-align:sub;margin:0;height:17px" alt="" />) appears next to the checkbox to
-indicate pending removals.</p>
-
-<p>Click the <strong>SDK Update Sites</strong> tab to manage which SDK sites Android Studio checks for
-tool and add-on updates. </p>
-
-
-
-<p>There are several different packages available for the Android SDK. The following section describes
-most of the available packages and where they're located in your SDK directory
-after you download them.</p>
-
-
-
-<h2 id="Recommended">Recommended Packages</h2>
-
-<p>Here's an outline of the packages required and those we recommend you use:
-</p>
-
-<dl>
- <dt>SDK Tools</dt>
- <dd><strong>Required.</strong> Your new SDK installation installs the latest version. Be sure
- to respond to the Android Studio update prompts to keep your SDK Tools up-to-date.</dd>
- <dt>SDK Platform-tools</dt>
- <dd><strong>Required.</strong> Your new SDK installation installs the latest stable version.
- Be sure to respond to the Android Studio update prompts to keep your SDK Platform-tools
- up-to-date.</dd>
- <dt>SDK Platform</dt>
- <dd><strong>Required.</strong> At least one platform is required in your
-environment to be able to compile your application. To provide the best user experience
-on the latest devices, we recommend that you use the latest platform version as your build target.
-You'll still be able to run your app on older versions, but you must build against the latest
-version in order to use new features when running on devices with the latest version of Android.
- </dd>
- <dt>System Image</dt>
- <dd>Recommended. Although you might have one or more Android-powered devices on which to test
- your app, it's unlikely you have a device for every version of Android your app supports. It's
-a good practice to download system images for all versions of Android that your
-app supports and then test
-your app against these Android versions by using the
-<a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a>. Click <strong>Show Package Details</strong> to display the available
-system images for each available platform. You can also download system images when creating
-Android Virtual Devices (AVDs) in the
-<a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>. </dd>
-
-
- <dt>Android Support Repository</dt>
- <dd>Recommended. Includes a local Maven repository for the Android Data
- Binding Library, Android Testing Support Library, and Android Support
- Libraries. The Android Support Libraries provide an extended set of
- APIs that are compatible with most versions of Android. They're required for
- products such as <a href="{@docRoot}wear/index.html">Android Wear</a>, <a
- href="{@docRoot}tv/index.html">Android TV</a>, and <a
- href="https://developers.google.com/cast/">Google Cast</a>. For more
- information about each of the libraries in the Android Support Repository,
- see <a href="{@docRoot}tools/data-binding/guide.html">Data Binding Guide</a>,
- <a href="{@docRoot}tools/testing-support-library/index.html">Testing Support
- Library</a>, and <a href="{@docRoot}tools/support-library/index.html">Support
- Library</a>.</dd>
-
- <dt>Google Play services</dt>
- <dd>Recommended. Includes the Google Play services client library, which
- provides a variety of features and services for your
- apps, such as <a
- href="https://developers.google.com/identity/sign-in/android/">Google
- sign-in</a>, <a
- href="https://developers.google.com/maps/documentation/android-api/">Google
- Maps</a>, <a href="https://developers.google.com/games/services/">Games
- achievements and leaderboards</a>, and much more.</dd>
-
- <dt>Google Repository</dt>
- <dd>Recommended. Includes local Maven repository for Google libraries.</dd>
-
-
-<p class="note"><strong>Tip:</strong> For easy access to the SDK tools from a command line, add the
-location of the SDK <code>tools/</code> and
-<code>platform-tools</code> to your <code>PATH</code> environment variable.</p>
-
-
-<p>The previous list is not comprehensive and you can <a
-href="#AddingSites">add new sites</a> to download additional packages from third parties.</p>
-
-<p>In some cases, an SDK package may require a specific minimum revision of
-another package or SDK tool. The SDK Manager automatically notifies you of any
-dependencies and downloads the required packages or tools.
-In addition, development tools notify you if there are dependencies that you need to
-address. </p>
-
-
-
-<h2 id="AddingSites">Adding New Sites</h2>
-
-<p>The <strong>SDK Update Sites</strong> tab displays the sites that Android Studio checks for Android SDK
-and third-party updates. You can add other sites that host their own Android SDK add-ons, and then
-download the SDK add-ons from those sites.</p>
-
-<p>For example, a mobile carrier or device manufacturer might offer additional
-API libraries that are supported by their own Android-powered devices.
-To develop using their libraries, you must install their Android SDK add-on, if it's not already
-available as a third-party add-on.</p>
-
-<p>If a carrier or device manufacturer has hosted an SDK add-on repository file
-on their website, follow these steps to add their site to the Android SDK Manager:</p>
-
-<ol>
- <li>Click the <strong>SDK Update Sites</strong> tab.</li>
- <li>Click <strong>Add</strong> <img src="{@docRoot}images/tools/sdk-iadd.png" style="vertical-align:sub;margin:0;height:17px" alt="" />. </li>
- <li>Type the name and URL of the
- add-on site, and then cick <strong>OK</strong>.</li>
- <li>Make sure the checkbox is selected in the <strong>Enabled</strong> column.</li>
-
-<p>Any SDK packages available from the site appear in the <strong>SDK Platforms</strong> or
-<strong>SDK Tools</strong> tabs.</p>
-</ol>
-
-
diff --git a/docs/html/tools/help/shell.jd b/docs/html/tools/help/shell.jd
deleted file mode 100644
index fabcf4b..0000000
--- a/docs/html/tools/help/shell.jd
+++ /dev/null
@@ -1,902 +0,0 @@
-page.title=ADB Shell Commands
-parent.title=Tools
-parent.link=index.html
-page.tags=shell,adb,am,pm,screenrecord,screencap
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#shellcommands">Issuing Shell Commands</a>
- <li><a href="#am">Using activity manager (am)</a></li>
- <li><a href="#pm">Using package manager (pm)</a></li>
- <li><a href="#screencap">Taking a device screenshot</a></li>
- <li><a href="#screenrecord">Recording a device screen</a></li>
- <li><a href="#othershellcommands">Other shell commands</a></li>
- </li>
-</ol>
-
-</div>
-</div>
-
-<p>The <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) provides a Unix shell
-that you can use to run a variety of commands on an emulator or connected device. The command
-binaries are stored in the file system of the emulator or device, at <code>/system/bin/...</code>
-</p>
-
-<h2 id="shellcommands">Issuing Shell Commands</h2>
-
-<p>You can use the <code>shell</code> command to issue commands, with or without entering
-the adb remote shell on the emulator/device. To issue a single command without entering a
-remote shell, use the <code>shell</code> command like this: </p>
-
- <pre class="no-pretty-print">adb [-d|-e|-s <serialNumber>] shell <shell_command></pre>
-
-<p>Or enter a remote shell on an emulator/device like this:</p>
-
- <pre class="no-pretty-print">adb [-d|-e|-s <serialNumber>] shell</pre>
-
-<p>When you are ready to exit the remote shell, press CTRL+D or type
-<code>exit</code>. </p>
-
-
-
-
-
-<h2 id="am">Using activity manager (am)</h2>
-
-<p>Within an adb shell, you can issue commands with the activity manager ({@code am}) tool to
-perform various system actions, such as start an activity, force-stop a process,
-broadcast an intent, modify the device screen properties, and more. While in a shell,
-the syntax is:</p>
-<pre class="no-pretty-print">
-am <command>
-</pre>
-
-<p>You can also issue an activity manager command directly from adb
-without entering a remote shell. For example:</p>
-<pre class="no-pretty-print">
-adb shell am start -a android.intent.action.VIEW
-</pre>
-
-
-<p class="table-caption"><strong>Table 2.</strong> Available activity manager commands</p>
-<table>
-<tr>
- <th>Command</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><code>
-start [options] <INTENT>
-</code></td>
-<td>Start an {@link android.app.Activity} specified by {@code <INTENT>}. <p>See the
-<a href="#IntentSpec">Specification for <INTENT> arguments</a>.
-<p>Options are:
-<ul>
- <li>{@code -D}: Enable debugging.
- <li>{@code -W}: Wait for launch to complete.
- <li>{@code --start-profiler <FILE>}: Start profiler and send results to {@code <FILE>}.
- <li>{@code -P <FILE>}: Like <code>--start-profiler</code>,
- but profiling stops when the app goes idle.
- <li>{@code -R}: Repeat the activity launch {@code <COUNT>} times. Prior to each repeat,
- the top activity will be finished.
- <li>{@code -S}: Force stop the target app before starting the activity.
- <li>{@code --opengl-trace}: Enable tracing of OpenGL functions.
- <li>{@code --user <USER_ID> | current}: Specify which user to run as; if not
- specified, then run as the current user.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-startservice [options] <INTENT>
-</code></td>
-<td>Start the {@link android.app.Service} specified by {@code <INTENT>}. <p>See the
-<a href="#IntentSpec">Specification for <INTENT> arguments</a>.
-<p>Options are:
-<ul>
- <li>{@code --user <USER_ID> | current}: Specify which user to run as; if not
- specified, then run as the current user.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-force-stop <PACKAGE>
-</code></td>
-<td>Force stop everything associated with {@code <PACKAGE>} (the app's package name).
-</td>
-</tr>
-
-<tr>
-<td><code>
-kill [options] <PACKAGE>
-</code></td>
-<td> Kill all processes associated with {@code <PACKAGE>}
- (the app's package name). This command kills only
- processes that are safe to kill and that will not impact the user
- experience.
- <p>Options are:
- <ul>
- <li>{@code --user <USER_ID> | all | current}: Specify user whose processes to kill;
- all users if not specified.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-kill-all
-</code></td>
-<td>Kill all background processes.
-</td>
-</tr>
-
-<tr>
-<td><code>
-broadcast [options] <INTENT>
-</code></td>
-<td>Issue a broadcast intent. <p>See the
-<a href="#IntentSpec">Specification for <INTENT> arguments</a>.
-<p>Options are:
-<ul>
- <li>{@code [--user <USER_ID> | all | current]}: Specify which user to send to; if not
- specified then send to all users.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-instrument [options] <COMPONENT>
-</code></td>
-<td>Start monitoring with an {@link android.app.Instrumentation} instance.
- Typically the target {@code <COMPONENT>}
- is the form {@code <TEST_PACKAGE>/<RUNNER_CLASS>}. <p>Options are:
-<ul>
- <li>{@code -r}: Print raw results (otherwise decode
- {@code <REPORT_KEY_STREAMRESULT>}). Use with
- {@code [-e perf true]} to generate raw output for performance measurements.
-
- <li>{@code -e <NAME> <VALUE>}: Set argument {@code <NAME>} to {@code <VALUE>}.
- For test runners a common form is {@code
- -e <testrunner_flag> <value>[,<value>...]}.
-
- <li>{@code -p <FILE>}: Write profiling data to {@code <FILE>}.
-
- <li>{@code -w}: Wait for instrumentation to finish before returning. Required for
- test runners.
-
- <li>{@code --no-window-animation}: Turn off window animations while running.
- <li>{@code --user <USER_ID> | current}: Specify which user instrumentation runs in;
- current user if not specified.
-</ul>
-
-</td>
-</tr>
-
-<tr>
-<td><code>
-profile start <PROCESS> <FILE>
-</code></td>
-<td>Start profiler on {@code <PROCESS>}, write results to {@code <FILE>}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-profile stop <PROCESS>
-</code></td>
-<td>Stop profiler on {@code <PROCESS>}.
-</td>
-</tr>
-
-<tr>
-<td style="white-space:nowrap"><code>
-dumpheap [options] <PROCESS> <FILE>
-</code></td>
-<td>Dump the heap of {@code <PROCESS>}, write to {@code <FILE>}. <p>Options are:
-<ul>
- <li>{@code --user [<USER_ID>|current]}: When supplying a process name,
- specify user of process to dump; uses current user if not specified.
- <li>{@code -n}: Dump native heap instead of managed heap.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-debug-app [options] <PACKAGE>
-</code></td>
-<td>Set application {@code <PACKAGE>} to debug. <p>Options are:
-<ul>
- <li>{@code -w}: Wait for debugger when application starts.
- <li>{@code --persistent}: Retain this value.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-clear-debug-app
-</code></td>
-<td>Clear the package previous set for debugging with {@code set-debug-app}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-monitor [options]
-</code></td>
-<td>Start monitoring for crashes or ANRs. <p>Options are:
-<ul>
- <li>{@code --gdb}: Start gdbserv on the given port at crash/ANR.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-screen-compat [on|off] <PACKAGE>
-</code></td>
-<td>Control <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
-compatibility</a> mode of {@code <PACKAGE>}.</p>
-</td>
-</tr>
-
-<tr>
-<td><code>
-display-size [reset|<WxH>]
-</code></td>
-<td>Override emulator/device display size.
-This command is helpful for testing your app across different screen sizes by mimicking a small
-screen resolution using a device with a large screen, and vice versa.
-<p>Example:<br><code>am display-size 1280x800</code>
-</td>
-</tr>
-
-<tr>
-<td><code>
-display-density <dpi>
-</code></td>
-<td>Override emulator/device display density.
-This command is helpful for testing your app across different screen densities on high-density
-screen environment using a low density screen, and vice versa.
-<p>Example:<br><code>am display-density 480</code>
-</td>
-</tr>
-
-<tr>
-<td><code>
-to-uri <INTENT>
-</code></td>
-<td>Print the given intent specification as a URI. <p>See the
-<a href="#IntentSpec">Specification for <INTENT> arguments</a>.
-</td>
-</tr>
-
-<tr>
-<td><code>
-to-intent-uri <INTENT>
-</code></td>
-<td>Print the given intent specification as an {@code intent:} URI. <p>See the
-<a href="#IntentSpec">Specification for <INTENT> arguments</a>.
-</td>
-</tr>
-</table>
-
-
-
-
-
-<h3 id="IntentSpec">
- <a href="" class="expandable" onclick="toggleExpandable(this,'.intents');
-return false">Specification for <INTENT> arguments</a></h3>
-
-<div class="intents" style="display:none">
-
-<p>For activity manager commands that take a {@code <INTENT>} argument, you can
-specify the intent with the following options:</p>
-
-<dl>
- <dt>{@code -a <ACTION>}</dt>
- <dd>Specify the intent action, such as "android.intent.action.VIEW".
- You can declare this only once.
-
- <dt>{@code -d <DATA_URI>}</dt>
- <dd>Specify the intent data URI, such as "content://contacts/people/1".
- You can declare this only once.
-
- <dt>{@code -t <MIME_TYPE>}</dt>
- <dd>Specify the intent MIME type, such as "image/png".
- You can declare this only once.
-
- <dt>{@code -c <CATEGORY>}</dt>
- <dd>Specify an intent category, such as "android.intent.category.APP_CONTACTS".
-
- <dt>{@code -n <COMPONENT>}</dt>
- <dd>Specify the component name with package name prefix to create an explicit intent, such
- as "com.example.app/.ExampleActivity".
-
- <dt>{@code -f <FLAGS>}</dt>
- <dd>Add flags to the intent, as supported by {@link
- android.content.Intent#setFlags setFlags()}.
-
- <dt>{@code --esn <EXTRA_KEY>}</dt>
- <dd>Add a null extra. This option is not supported for URI intents.
-
- <dt>{@code -e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>}</dt>
- <dd>Add string data as a key-value pair.
-
- <dt>{@code --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>}</dt>
- <dd>Add boolean data as a key-value pair.
-
- <dt>{@code --ei <EXTRA_KEY> <EXTRA_INT_VALUE>}</dt>
- <dd>Add integer data as a key-value pair.
-
- <dt>{@code --el <EXTRA_KEY> <EXTRA_LONG_VALUE>}</dt>
- <dd>Add long data as a key-value pair.
-
- <dt>{@code --ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>}</dt>
- <dd>Add float data as a key-value pair.
-
- <dt>{@code --eu <EXTRA_KEY> <EXTRA_URI_VALUE>}</dt>
- <dd>Add URI data as a key-value pair.
-
- <dt>{@code --ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>}</dt>
- <dd>Add a component name, which is converted and passed as
- a {@link android.content.ComponentName} object.
-
- <dt>{@code --eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]}</dt>
- <dd>Add an array of integers.
-
- <dt>{@code --ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]}</dt>
- <dd>Add an array of longs.
-
- <dt>{@code --efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]}</dt>
- <dd>Add an array of floats.
-
- <dt>{@code --grant-read-uri-permission}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}.
-
- <dt>{@code --grant-write-uri-permission}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}.
-
- <dt>{@code --debug-log-resolution}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_DEBUG_LOG_RESOLUTION}.
-
- <dt>{@code --exclude-stopped-packages}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES}.
-
- <dt>{@code --include-stopped-packages}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES}.
-
- <dt>{@code --activity-brought-to-front}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT}.
-
- <dt>{@code --activity-clear-top}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.
-
- <dt>{@code --activity-clear-when-task-reset}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}.
-
- <dt>{@code --activity-exclude-from-recents}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS}.
-
- <dt>{@code --activity-launched-from-history}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY}.
-
- <dt>{@code --activity-multiple-task}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.
-
- <dt>{@code --activity-no-animation}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_ANIMATION}.
-
- <dt>{@code --activity-no-history}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_HISTORY}.
-
- <dt>{@code --activity-no-user-action}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_USER_ACTION}.
-
- <dt>{@code --activity-previous-is-top}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_PREVIOUS_IS_TOP}.
-
- <dt>{@code --activity-reorder-to-front}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_REORDER_TO_FRONT}.
-
- <dt>{@code --activity-reset-task-if-needed}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED}.
-
- <dt>{@code --activity-single-top}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}.
-
- <dt>{@code --activity-clear-task}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK}.
-
- <dt>{@code --activity-task-on-home}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_TASK_ON_HOME}.
-
- <dt>{@code --receiver-registered-only}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REGISTERED_ONLY}.
-
- <dt>{@code --receiver-replace-pending}</dt>
- <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REPLACE_PENDING}.
-
- <dt>{@code --selector}</dt>
- <dd>Requires the use of {@code -d} and {@code -t} options to set the intent data and type.
-
- <dt>{@code <URI> <COMPONENT> <PACKAGE>}</dt>
- <dd>You can directly specify a URI, package name, and component name when not qualified
- by one of the above options. When an argument is unqualified, the tool assumes the argument
- is a URI if it contains a ":" (colon); it assumes the argument is a component name if it
- contains a "/" (forward-slash); otherwise it assumes the argument is a package name.
-
-</dl>
-</div><!-- end 'intents' -->
-<script>
- $(window).hashchange( function(){
- if ((location.hash == "#IntentSpec") && !($("#IntentSpec a").hasClass("expanded"))) {
- $("#IntentSpec a").click();
- }
- });
-</script>
-
-
-
-<h2 id="pm">Using package manager (pm)</h2>
-
-<p>Within an adb shell, you can issue commands with the package manager ({@code pm}) tool to
-perform actions and queries on application packages installed on the device. While in a shell,
-the syntax is:</p>
-<pre class="no-pretty-print">
-pm <command>
-</pre>
-
-<p>You can also issue a package manager command directly from adb
-without entering a remote shell. For example:</p>
-<pre class="no-pretty-print">
-adb shell pm uninstall com.example.MyApp
-</pre>
-
-<p class="table-caption"><strong>Table 3.</strong> Available package manager commands.</p>
-<table>
-<tr>
- <th>Command</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><code>
-list packages [options] <FILTER>
-</code></td>
-<td>Prints all packages, optionally only
- those whose package name contains the text in {@code <FILTER>}. <p>Options:
-<ul>
- <li>{@code -f}: See their associated file.
- <li>{@code -d}: Filter to only show disabled packages.
- <li>{@code -e}: Filter to only show enabled packages.
- <li>{@code -s}: Filter to only show system packages.
- <li>{@code -3}: Filter to only show third party packages.
- <li>{@code -i}: See the installer for the packages.
- <li>{@code -u}: Also include uninstalled packages.
- <li>{@code --user <USER_ID>}: The user space to query.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list permission-groups
-</code></td>
-<td>Prints all known permission groups.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list permissions [options] <GROUP>
-</code></td>
-<td>Prints all known permissions, optionally only
- those in {@code <GROUP>}. <p>Options:
-<ul>
- <li>{@code -g}: Organize by group.
- <li>{@code -f}: Print all information.
- <li>{@code -s}: Short summary.
- <li>{@code -d}: Only list dangerous permissions.
- <li>{@code -u}: List only the permissions users will see.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list instrumentation
-</code></td>
-<td>List all test packages. <p>Options:
- <ul>
- <li>{@code -f}: List the APK file for the test package.
- <li>{@code <TARGET_PACKAGE>}: List test packages for only this app.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list features
-</code></td>
-<td>Prints all features of the system.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list libraries
-</code></td>
-<td>Prints all the libraries supported by the current device.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list users
-</code></td>
-<td>Prints all users on the system.
-</td>
-</tr>
-
-<tr>
-<td><code>
-path <PACKAGE>
-</code></td>
-<td>Print the path to the APK of the given {@code <PACKAGE>}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-install [options] <PATH>
-</code></td>
-<td>Installs a package (specified by {@code <PATH>}) to the system. <p>Options:
- <ul>
- <li>{@code -l}: Install the package with forward lock.
- <li>{@code -r}: Reinstall an exisiting app, keeping its data.
- <li>{@code -t}: Allow test APKs to be installed.
- <li>{@code -i <INSTALLER_PACKAGE_NAME>}: Specify the installer package name.
- <li>{@code -s}: Install package on the shared mass storage (such as sdcard).
- <li>{@code -f}: Install package on the internal system memory.
- <li>{@code -d}: Allow version code downgrade.
- <li>{@code -g}: Grant all permissions listed in the app manifest.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-uninstall [options] <PACKAGE>
-</code></td>
-<td>Removes a package from the system. <p>Options:
- <ul>
- <li>{@code -k}: Keep the data and cache directories around after package removal.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-clear <PACKAGE>
-</code></td>
-<td>Deletes all data associated with a package.
-</td>
-</tr>
-
-<tr>
-<td><code>
-enable <PACKAGE_OR_COMPONENT>
-</code></td>
-<td>Enable the given package or component (written as "package/class").
-</td>
-</tr>
-
-<tr>
-<td><code>
-disable <PACKAGE_OR_COMPONENT>
-</code></td>
-<td>Disable the given package or component (written as "package/class").
-</td>
-</tr>
-
-<tr>
-<td style="white-space:nowrap"><code>
-disable-user [options] <PACKAGE_OR_COMPONENT>
-</code></td>
-<td><p>Options:
- <ul>
- <li>{@code --user <USER_ID>}: The user to disable.
- </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-grant <PACKAGE_NAME> <PERMISSION>
-</code></td>
-<td>Grant a permission to an app. On devices running Android 6.0 (API level 23)
-and higher, may be any permission declared in the app manifest. On devices
-running Android 5.1 (API level 22) and lower, must be an optional permission defined by the
-app.
-</td>
-</tr>
-
-<tr>
-<td><code>
-revoke <PACKAGE_NAME> <PERMISSION>
-</code></td>
-<td>Revoke a permission from an app. On devices running Android 6.0 (API level
-23) and higher, may be any permission declared in the app manifest. On devices
-running Android 5.1 (API level 22) and lower, must be an optional permission defined by the
-app.
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-install-location <LOCATION>
-</code></td>
-<td>Changes the default install location. Location values:
-<ul>
- <li>{@code 0}: Auto—Let system decide the best location.
- <li>{@code 1}: Internal—install on internal device storage.
- <li>{@code 2}: External—install on external media.
-</ul>
-<p class="note"><strong>Note:</strong> This is only intended for debugging; using this can cause
- applications to break and other undesireable behavior.</p>
-</td>
-</tr>
-
-<tr>
-<td><code>
-get-install-location
-</code></td>
-<td>Returns the current install location. Return values:
-<ul>
- <li>{@code 0 [auto]}: Lets system decide the best location
- <li>{@code 1 [internal]}: Installs on internal device storage
- <li>{@code 2 [external]}: Installs on external media
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-permission-enforced <PERMISSION> [true|false]
-</code></td>
-<td>Specifies whether the given permission should be enforced.
-</td>
-</tr>
-
-<tr>
-<td><code>
-trim-caches <DESIRED_FREE_SPACE>
-</code></td>
-<td>Trim cache files to reach the given free space.
-</td>
-</tr>
-
-<tr>
-<td><code>
-create-user <USER_NAME>
-</code></td>
-<td>Create a new user with the given {@code <USER_NAME>},
- printing the new user identifier of the user.
-</td>
-</tr>
-
-<tr>
-<td><code>
-remove-user <USER_ID>
-</code></td>
-<td>Remove the user with the given {@code <USER_IDENTIFIER>},
- deleting all data associated with that user
-</td>
-</tr>
-
-<tr>
-<td><code>
-get-max-users
-</code></td>
-<td>Prints the maximum number of users supported by the device.
-</td>
-</tr>
-
-</table>
-
-
-<h2 id="screencap">Taking a device screenshot</h2>
-
-<p>The {@code screencap} command is a shell utility for taking a screenshot of a device display.
-While in a shell, the syntax is:
-</p>
-
-<pre class="no-pretty-print">
-screencap <filename>
-</pre>
-
-
-<p>To use the {@code screencap} from the command line, type the following:
-
-<pre>
-$ adb shell screencap /sdcard/screen.png
-</pre>
-
-<p>Here's an example screenshot session, using the adb shell to capture the screenshot and the
-{@code pull} command to download the file from the device:<p>
-
-<pre>
-$ adb shell
-shell@ $ screencap /sdcard/screen.png
-shell@ $ exit
-$ adb pull /sdcard/screen.png
-</pre>
-
-
-<h2 id="screenrecord">Recording a device screen</h2>
-
-<p>The {@code screenrecord} command is a shell utility for recording the display of devices
- running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4
- file.</p>
-
-<p class="note"><strong>Note:</strong> Audio is not recorded with the video file.</p>
-
-<p>A developer can use this file to create promotional or training videos. While in a shell, the syntax is:</p>
-
-<pre class="no-pretty-print">
-screenrecord [options] <filename>
-</pre>
-
-<p>To use {@code screenrecord} from the command line, type the following:
-
-<pre>
-$ adb shell screenrecord /sdcard/demo.mp4
-</pre>
-
-<p>Stop the screen recording by pressing Ctrl-C, otherwise the recording stops automatically
-at three minutes or the time limit set by {@code --time-limit}.</p>
-
-<p>To begin recording your device screen, run the {@code screenrecord} command to record
-the video. Then, run the {@code pull} command to download the video from the device to the host
-computer. Here's an example recording session:<p>
-
-<pre>
-$ adb shell
-shell@ $ screenrecord --verbose /sdcard/demo.mp4
-(press Ctrl-C to stop)
-shell@ $ exit
-$ adb pull /sdcard/demo.mp4
-</pre>
-
-<p>The {@code screenrecord} utility can record at any supported resolution and bit rate you
- request, while retaining the aspect ratio of the device display. The utility records at the native
- display resolution and orientation by default, with a maximum length of three minutes.</p>
-
-<p>There are some known limitations of the {@code screenrecord} utility that you should be aware
- of when using it:</p>
-
-<ul>
- <li>Some devices may not be able to record at their native display resolution.
- If you encounter problems with screen recording, try using a lower screen resolution.</li>
- <li>Rotation of the screen during recording is not supported. If the screen does rotate during
- recording, some of the screen is cut off in the recording.</li>
-</ul>
-
-
-<p class="table-caption"><strong>Table 4.</strong> {@code screenrecord} options</p>
-
-<table>
- <tr>
- <th>Options</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td><code>--help</code>
- </td>
- <td>Displays command syntax and options</td>
- </tr>
-
- <tr>
- <td style="white-space:nowrap">
- <code>--size <WIDTHxHEIGHT></code>
- </td>
- <td>Sets the video size: {@code 1280x720}. The default value is the device's native
- display resolution (if supported), 1280x720 if not. For best results, use a size supported
- by your device's Advanced Video Coding (AVC) encoder.</td>
- </tr>
-
- <tr>
- <td><code>--bit-rate <RATE></code></td>
- <td>Sets the video bit rate for the video, in megabits per second. The default value is 4Mbps.
- You can increase the bit rate to improve video quality, but doing so results in larger movie
- files. The following example sets the recording bit rate to 6Mbps:
- <pre>screenrecord --bit-rate 6000000 /sdcard/demo.mp4</pre>
- </td>
- </tr>
-
- <tr>
- <td><code>--time-limit <TIME></code></td>
- <td>Sets the maximum recording time, in seconds. The default and maximum value is 180
- (3 minutes).</td>
- </tr>
-
- <tr>
- <td><code>--rotate</code></td>
- <td>Rotates the output 90 degrees. This feature is experimental.</td>
- </tr>
-
- <tr>
- <td><code>--verbose</code></td>
- <td>Displays log information on the command-line screen. If you do not set this option,
- the utility does not display any information while running.</td>
- </tr>
-
-</table>
-
-
-<h2 id="othershellcommands">Other shell commands</h2>
-
-<p>For a list of all the available shell programs, use the following command:</p>
-
-<pre class="no-pretty-print">adb shell ls /system/bin</pre>
-
-<p>Help is available for most of the commands. </p>
-
-<p>Table 5 lists some of the more common adb shell commands.</p>
-
-<p class="table-caption"><strong>Table 5.</strong> Some other adb shell commands</p>
-<table>
-<tr>
- <th>Shell Command</th>
- <th>Description</th>
- <th>Comments</th>
-</tr>
-
-<tr>
-<td><code>dumpsys</code></td>
-<td>Dumps system data to the screen.</td>
-<td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>
-(DDMS) tool offers an integrated debug environment that you may find easier to use.
-</td>
-</tr>
-
-<tr>
-<td><code>dumpstate</code></td>
-<td>Dumps state to a file.</td>
-</tr>
-
-<tr>
-<td><code>logcat [option]... [filter-spec]...</code></td>
-<td>Enables system and app logging and prints output to the screen. </td>
-</tr>
-
-<tr>
-<td><code>dmesg</code></td>
-<td>Prints kernel debugging messages to the screen. </td>
-</tr>
-
-<tr>
-<td><code>start</code></td>
-<td>Starts (restarts) an emulator/device instance.</td>
-<td> </td>
-</tr>
-
-<tr>
-<td><code>stop</code></td>
-<td>Stops execution of an emulator/device instance.</td>
-<td> </td>
-</tr>
-
-</table>
diff --git a/docs/html/tools/help/sqlite3.jd b/docs/html/tools/help/sqlite3.jd
deleted file mode 100644
index 9cc7e98..0000000
--- a/docs/html/tools/help/sqlite3.jd
+++ /dev/null
@@ -1,59 +0,0 @@
-page.title=sqlite3
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <p>From a remote shell to your device or from your host machine, you can use the <a href=
- "http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to manage SQLite databases
- created by Android applications. The <code>sqlite3</code> tool includes many useful commands,
- such as <code>.dump</code> to print out the contents of a table and <code>.schema</code> to print
- the SQL CREATE statement for an existing table. The tool also gives you the ability to execute
- SQLite commands on the fly.</p>
-
- <p>To use <code>sqlite3</code> from a remote shell:</p>
-
- <ol>
- <li>Enter a remote shell by entering the following command:
- <pre>adb [-d|-e|-s {<serialNumber>}] shell</pre>
- </li>
-
- <li>From a remote shell, start the <code>sqlite3</code> tool by entering the following command:
- <pre>sqlite3</pre>
-
- <p>You can also optionally specify a full path to a database that you want to explore.
- Emulator/device instances store SQLite3 databases in the directory
- <code>/data/data/<package_name>/databases/</code>.</p>
- </li>
-
- <li>Once you invoke <code>sqlite3</code>, you can issue <code>sqlite3</code> commands in the
- shell. To exit and return to the adb remote shell, enter <code>exit</code> or press
- <code>CTRL+D</code>.</li>
- </ol>
-
-
- <p>Here's an example:</p>
- <pre>$ adb -s emulator-5554 shell
-# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
-SQLite version 3.3.12
-Enter ".help" for instructions
-<em>.... enter commands, then quit...</em>
-# sqlite> .exit
-</pre>
-
- <p>To use <code>sqlite3</code> locally, instead of within a shell,
- pull the database file from the device and start {@code sqlite3}:</p>
-
- <ol>
- <li>Copy a database file from your device to your host machine:
- <pre>
-adb pull <database-file-on-device>
-</pre>
- </li>
-
- <li>Start the sqlite3 tool from the <code>/tools</code> directory, specifying the database
- file:
- <pre>
-sqlite3 <database-file-on-host>
-</pre>
- </li>
- </ol>
\ No newline at end of file
diff --git a/docs/html/tools/help/systrace.jd b/docs/html/tools/help/systrace.jd
deleted file mode 100755
index 236d282..0000000
--- a/docs/html/tools/help/systrace.jd
+++ /dev/null
@@ -1,411 +0,0 @@
-page.title=Systrace
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
-<p>The Systrace tool helps analyze the performance of your application by capturing and
- displaying execution times of your applications processes and other Android system processes. The
- tool combines data from the Android kernel such as the CPU scheduler, disk activity, and
- application threads to generate an HTML report that shows an overall picture of an Android
- device’s system processes for a given period of time.</p>
-
-<p>The Systrace tool is particularly useful in diagnosing display problems where an
- application is slow to draw or stutters while displaying motion or animation. For more information
- on how to use Systrace, see <a href="{@docRoot}tools/debugging/systrace.html">Analyzing
- UI Performance with Systrace</a>.</p>
-
-<h2 id="requirements">Requirements</h2>
-
-<p>In order to run Systrace, you must have Android SDK Tools 20 or later installed. You must also
-have <a href="http://www.python.org/">Python</a> installed and included in your development
-computer's execution path. In order to generate a trace, you must connect a device running Android
-4.1 (API Level 16) or higher to your development system using a
-<a href="{@docRoot}tools/device.html#setting-up">USB debugging connection</a>.</p>
-
-<p>The Systrace tool can be run either from one of the Android SDK's graphical user interface
-tools, or from the command line. The following sections describe how to run the tool using either
-of these methods.</p>
-
-
-<h2 id="gui">User Interface</h2>
-
-<p>The Systrace tool can be run from
-<a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>
-or the Android <a href="{@docRoot}tools/help/monitor.html">Device Monitor</a>.
-
-<p>To run the Systrace capture user interface:</p>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
- />Using Android Studio</a></p>
-
- <div class="toggle-content-toggleme">
- <ol>
- <li>In <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>, open an
- Android application project.</li>
- <li>Open the Device Monitor by selecting <strong>Tools > Android > Android Device
- Monitor</strong>.</li>
- <li>In the <strong>Devices</strong> tab, select the device on which to run a trace. If no
- devices are listed, make sure your device is connected via USB cable and that debugging is
- enabled on the device.</li>
- <li>Click the Systrace icon <img src="{@docRoot}images/systrace/systrace-button.png"
- style="margin:0"/> at the top of the <strong>Devices</strong> panel to configure tracing.</li>
- <li>Set the tracing options and click <strong>OK</strong> to start the trace.</li>
- </ol>
- </div>
-</div>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
- />Using Device Monitor</a></p>
-
- <div class="toggle-content-toggleme">
- <ol>
- <li>Navigate to your SDK {@code tools/} directory.</li>
- <li>Run the {@code monitor} program.</li>
- <li>In the <strong>Devices</strong> tab, select the device on which to run a trace. If no
- devices are listed, make sure your device is connected via USB cable and that debugging is
- enabled on the device.</li>
- <li>Click the Systrace icon <img src="{@docRoot}images/systrace/systrace-button.png"
- style="margin:0"/> at the top of the <strong>Devices</strong> panel to configure tracing.</li>
- <li>Set the tracing options and click <strong>OK</strong> to start the trace.</li>
- </ol>
- </div>
-</div>
-
-
-<h2 id="options">Command Line Usage</h2>
-
-<p>The Systrace tool has different command line options for devices running Android 4.3 (API
-level 18) and higher versus devices running Android 4.2 (API level 17) and lower. The following
-sections describe the different command line options for each version.</p>
-
-<p>The general syntax for running Systrace from the command line is as follows.</p>
-
-<pre>
-$ python systrace.py [options] [category1] [category2] ... [categoryN]
-</pre>
-
-<p>See the sections below for example Systrace sessions.</p>
-
-
-<h3 id="options-4.3">Android 4.3 and higher options</h3>
-
-<p>When you use Systrace on devices running Android 4.3 and higher, you can omit trace category tags
-to get the defaults, or you may manually specify tags for inclusion. Here is an example execution
-run that sets trace tags and generates a trace from a connected device.</p>
-
-<pre>
-$ cd <em>android-sdk</em>/platform-tools/systrace
-$ python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
-</pre>
-
-<p class="note">
- <strong>Tip:</strong> If you want to see the names of tasks in the trace output, you <em>must</em>
- include the {@code sched} category in your command parameters.
-</p>
-
-<p>The table below lists the Systrace command line options for devices running Android 4.3
-(API level 18) and higher.</p>
-
-<table>
- <tr>
- <th>Option</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><nobr><code>-h, --help</code></nobr></td>
-
- <td>Show the help message.</td>
- </tr>
-
- <tr>
- <td><code>-o <<em>FILE</em>></code></td>
-
- <td>Write the HTML trace report to the specified file.</td>
- </tr>
-
- <tr>
- <td><code>-t N, --time=N</code></td>
-
- <td>Trace activity for <em>N</em> seconds. The default value is 5 seconds.</td>
- </tr>
-
- <tr>
- <td><code>-b N, --buf-size=N</code></td>
-
- <td>Use a trace buffer size of <em>N</em> kilobytes. This option lets you limit the total size
- of the data collected during a trace.</td>
- </tr>
-
- <tr>
- <td><code>-k <<em>KFUNCS</em>><br>
- --ktrace=<<em>KFUNCS</em>></code></td>
-
- <td>Trace the activity of specific kernel functions, specified in a comma-separated list.</td>
- </tr>
-
- <tr>
- <td><code>-l, --list-categories</code></td>
-
- <td>List the available tracing category tags. The available tags are:
-
- <ul>
- <li><code>gfx</code> - Graphics</li>
- <li><code>input</code> - Input</li>
- <li><code>view</code> - View</li>
- <li><code>webview</code> - WebView</li>
- <li><code>wm</code> - Window Manager</li>
- <li><code>am</code> - Activity Manager</li>
- <li><code>audio</code> - Audio</li>
- <li><code>video</code> - Video</li>
- <li><code>camera</code> - Camera</li>
- <li><code>hal</code> - Hardware Modules</li>
- <li><code>res</code> - Resource Loading</li>
- <li><code>dalvik</code> - Dalvik VM</li>
- <li><code>rs</code> - RenderScript</li>
- <li><code>sched</code> - CPU Scheduling</li>
- <li><code>freq</code> - CPU Frequency</li>
- <li><code>membus</code> - Memory Bus Utilization</li>
- <li><code>idle</code> - CPU Idle</li>
- <li><code>disk</code> - Disk input and output</li>
- <li><code>load</code> - CPU Load</li>
- <li><code>sync</code> - Synchronization Manager</li>
- <li><code>workq</code> - Kernel Workqueues</li>
- </ul>
-
- <p class="note"><strong>Note:</strong> Some trace categories are not supported on all
- devices.</p>
-
- <p class="note"><strong>Tip:</strong> If you want to see the names of tasks in the trace
- output, you <em>must</em> include the {@code sched} category in your command parameters.</p>
-
- </td>
- </tr>
-
- <tr>
- <td><code>-a <<em>APP_NAME</em>><br>
- --app=<<em>APP_NAME</em>></code></td>
-
- <td>Enable tracing for applications, specified as a comma-separated list of
- <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package names</a>.
- The apps must contain tracing instrumentation calls from the {@link android.os.Trace} class.
- For more information, see <a href="{@docRoot}tools/debugging/systrace.html#app-trace">Analyzing
- UI Performance with Systrace</a>.
- </td>
- </tr>
-
- <tr>
- <td><code>--from-file=<<em>FROM_FILE</em>></code></td>
-
- <td>Create the interactive Systrace report from a file, instead of running a live trace.</td>
- </tr>
-
- <tr>
- <td style="white-space:nowrap">
- <code>-e <<em>DEVICE_SERIAL</em>><br>
- --serial=<<em>DEVICE_SERIAL</em>></code></td>
-
- <td>Conduct the trace on a specific connected device, identified by its
- <a href="{@docRoot}tools/help/adb.html#devicestatus">device serial number</a>.</td>
- </tr>
-
-</table>
-
-
-<h3 id="options-pre-4.3">Android 4.2 and lower options</h3>
-
-<p>Using Systrace on the command line with devices running Android 4.2 and lower is typically a
-two-step process. You must first set the trace tags you want to capture and then run the trace.
-Here is an example execution run that sets trace tags and generates a trace from a connected
-device.</p>
-
-<pre>
-$ cd <em>android-sdk</em>/platform-tools/systrace
-$ python systrace.py --set-tags gfx,view,wm
-$ adb shell stop
-$ adb shell start
-$ python systrace.py --disk --time=10 -o mynewtrace.html
-</pre>
-
-<p>The table below lists the Systrace command line options for devices running Android 4.2
-(API level 17) and lower.</p>
-
-<table>
- <tr>
- <th>Option</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><nobr><code>-h, --help</code></nobr></td>
-
- <td>Show the help message.</td>
- </tr>
-
- <tr>
- <td><code>-o <<em>FILE</em>></code></td>
-
- <td>Write the HTML trace report to the specified file.</td>
- </tr>
-
- <tr>
- <td><code>-t N, --time=N</code></td>
-
- <td>Trace activity for <em>N</em> seconds. The default value is 5 seconds.</td>
- </tr>
-
- <tr>
- <td><code>-b N, --buf-size=N</code></td>
-
- <td>Use a trace buffer size of <em>N</em> kilobytes. This option lets you limit the total size
- of the data collected during a trace.</td>
- </tr>
-
- <tr>
- <td><code>-d, --disk</code></td>
-
- <td>Trace disk input and output activity. This option requires root access on the device.</td>
- </tr>
-
- <tr>
- <td><code>-f, --cpu-freq</code></td>
-
- <td>Trace CPU frequency changes. Only changes to the CPU frequency are logged, so the initial
- frequency of the CPU when tracing starts is not shown.</td>
- </tr>
-
- <tr>
- <td><code>-i, --cpu-idle</code></td>
-
- <td>Trace CPU idle events.</td>
- </tr>
-
- <tr>
- <td><code>-l, --cpu-load</code></td>
-
- <td>Trace CPU load. This value is a percentage determined by the interactive CPU frequency
- governor.</td>
- </tr>
-
- <tr>
- <td><nobr><code>-s, --no-cpu-sched</code></nobr></td>
-
- <td>Prevent tracing of the CPU scheduler. This option allows for longer trace times by reducing
- the rate of data flowing into the trace buffer.</td>
- </tr>
-
- <tr>
- <td><nobr><code>-u, --bus-utilization</code></nobr></td>
-
- <td>Trace the bus utilization levels. This option requires root access on the device.</td>
- </tr>
-
- <tr>
- <td><code>-w, --workqueue</code></td>
-
- <td>Trace kernel work queues. This option requires root access on the device.</td>
- </tr>
-
- <tr>
- <td id="tags"><code>--set-tags=<<em>TAGS</em>></code></td>
-
- <td>Set the enabled trace tags in a comma separated list. The available tags are:
- <ul>
- <li><code>gfx</code> - Graphics</li>
- <li><code>input</code> - Input</li>
- <li><code>view</code> - View</li>
- <li><code>webview</code> - WebView</li>
- <li><code>wm</code> - Window Manager</li>
- <li><code>am</code> - Activity Manager</li>
- <li><code>sync</code> - Synchronization Manager</li>
- <li><code>audio</code> - Audio</li>
- <li><code>video</code> - Video</li>
- <li><code>camera</code> - Camera</li>
- </ul>
- <p class="note"><strong>Note:</strong> When setting trace tags from the command line, you
- must stop and restart the framework ({@code $ adb shell stop; adb shell start}) for the
- tag tracing changes to take effect.</p>
- </td>
- </tr>
-
-</table>
-
-<p>You can set the trace <a href="#tags">tags</a> for Systrace on
-your Android 4.2 and lower device by navigating to <strong>Settings > Developer options >
-Monitoring > Enable traces</strong>.</p>
-
-
-<h2 id="viewing-options">Trace Viewing Shortcuts</h2>
-
-<p>The table below lists the keyboard shortcuts that are available while viewing a Systrace
-trace HTML report.</p>
-
-<table>
- <tr>
- <th>Key</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><strong>w</strong></td>
-
- <td>Zoom into the trace timeline.</td>
- </tr>
-
- <tr>
- <td><strong>s</strong></td>
-
- <td>Zoom out of the trace timeline.</td>
- </tr>
-
- <tr>
- <td><strong>a</strong></td>
-
- <td>Pan left on the trace timeline.</td>
- </tr>
-
- <tr>
- <td><strong>d</strong></td>
-
- <td>Pan right on the trace timeline.</td>
- </tr>
-
- <tr>
- <td><strong>e</strong></td>
-
- <td>Center the trace timeline on the current mouse location.</td>
- </tr>
-
- <tr>
- <td><strong>g</strong></td>
-
- <td>Show grid at the start of the currently selected task.</td>
- </tr>
-
- <tr>
- <td><strong>Shift+g</strong></td>
-
- <td>Show grid at the end of the currently selected task.</td>
- </tr>
-
- <tr>
- <td><strong>Right Arrow</strong></td>
-
- <td>Select the next event on the currently selected timeline.</td>
- </tr>
-
- <tr>
- <td><strong>Left Arrow</strong></td>
-
- <td>Select the previous event on the currently selected timeline.</td>
- </tr>
-
-</table>
diff --git a/docs/html/tools/help/theme-editor.jd b/docs/html/tools/help/theme-editor.jd
deleted file mode 100644
index 19f765f..0000000
--- a/docs/html/tools/help/theme-editor.jd
+++ /dev/null
@@ -1,166 +0,0 @@
-page.title=Theme Editor
-parent.title=Tools
-parent.link=index.html
-page.tags=theme
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#basics">Theme Editor Basics</a></li>
- <li><a href="#themes">Themes and Colors</a></li>
- <li><a href="#device">Device-Specific Configurations</a></li>
-</ol>
-
-
- <h2>Dependencies and Prerequisites</h2>
- <ul>
- <li>Android Studio 1.4.1 or higher</li>
- </ul>
-
-</div>
-</div>
-
-<p>
-The Theme Editor is a visual assistant that helps you:
-</p>
- <li>Create and modify
-<a href="{@docRoot}guide/topics/ui/themes.html">
-themes</a> for your app.</li>
- <li>Adjust themes for different resource classifiers.</li>
- <li>Visualize the effect of color changes on common UI elements.</li>
-
-<p>
-This page introduces the fundamental tasks that you can perform with the Theme
-Editor, and explains how to do so.
-</p>
-
-
-<h2 id="basics">Theme Editor Basics</h2>
-
-<p>
-This section describes how to access the Theme Editor, and how it is laid out.
-</p>
-
-<h3>Accessing the Theme Editor</h3>
-
-<p>There are two ways to open the Theme Editor:</p>
-
-<li>From an open {@code styles.xml} file, click <strong>Open editor</strong> near the top-right
-of the file window.</li>
-
-<li>From the <strong>Tools</strong> menu, select <strong>Android</strong> >
-<strong>Theme Editor</strong>.</p>
-
-<h3 id="layout">Navigating the Theme Editor</h3>
-<p>
-The Theme Editor's main screen is divided into two sections. The left side of the editor
-shows what specific UI elements, such as the app bar or a raised button, look like
-when you apply the current theme to them. The right side of the editor displays
-the settings for the color resources, such as <strong>Theme parent</strong> and
-<strong>colorPrimary</strong>, that comprise the current theme. You can modify design
-themes by changing these resource settings.
-</p>
-
-<h2 id="themes">Themes and Colors</h2>
-
-<p>
-The Theme Editor allows you to create new themes, modify existing ones, and manage the
-colors that make up the themes.
-</p>
-
-<h3 id="create">Creating New Themes</h3>
-
-<p>
-To create a theme, follow these steps:
-</p>
- <ol>
- <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
-side of the Theme Editor.</li>
- <li>Select <strong>Create New Theme</strong>. The <em>New Theme</em> dialog appears.</li>
- <li>Enter a name for the new theme.</li>
- <li>In the <em>Parent theme name:</em> field, select the parent from which the theme
- inherits initial resources.</li>
- </ol>
-
-<h3 id="rename">Renaming Themes</h3>
-
-<p>
-To rename a theme, perform the following steps:
-</p>
- <ol>
- <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
-side of the Theme Editor.</li>
- <li>Select <strong>Rename AppTheme</strong>. The <em>Rename</em> dialog appears.</li>
- <li>Enter a new name for the theme.</li>
- <li>(optional) To see how the changes will look, click <strong>Preview</strong>.</li>
- <li>To apply the changes, click <strong>Refactor</strong>.</li>
- </ol>
-
-<h3 id="changing">Changing Color Resources</h3>
-
-<p>To change an existing color resource, such as <strong>colorPrimary</strong>,
-follow these steps:
-</p>
-<ol>
-<li>Click the colored square next to the name of the resource you want to change.
-The <em>Resources</em> dialog appears, containing a color picker, material-color
-palette, and other settings and information.</li>
-<li>Change the color, opacity, and name of a theme's resources as desired.</p>
-<li>To ensure that your theme uses a color from the material
-palette, click <strong>CLOSEST MATERIAL COLOR</strong>, located next to <em>Custom
-color</em>. Android Studio changes the color you picked to the material color most like it,
-and replaces <em>Custom color</em> with the name of the color from the material palette.</li>
-</ol>
-
-<p>You can also directly select colors from the material palette, which the editor displays
-as two rows of colored squares beneath the color picker.</p>
-
-<h3 id="viewing">Viewing State Lists and Colors</h3>
-
-<p>
-The Theme Editor allows you to preview
-<a href="{@docRoot}guide/topics/resources/color-list-resource.html">
-colors associated with different states.</a> To do so, open the <em>Resource</em> dialog, and click
-the <em>State List</em> tab that appears at the top of the dialog.</p>
-
-<p>
-To more fully control the states themselves, you can directly view and edit their
-properties in the XML file,
-such as {@code colors.xml}, that defines them. For more information, see the
-documentation for the {@link android.content.res.ColorStateList} class.
-</p>
-
-<h2 id="device">Device-Specific Configurations</h2>
-
-<p>
-You can choose
-<a href="{@docRoot}guide/topics/resources/providing-resources.html#Compatibility">
-device-specific</a> configurations for your app to support. Perform
-the following steps to do so:
-</p>
-
-<ol>
-<li>Click the triangle next to <em>Location</em>, near the bottom of the <a href="#changing">
-<em>Resources</em></a> dialog. The <em>Location</em> section expands, revealing
-the name of the XML file containing the
-resource, as well as a list of configuration-specific directories in which to
-place that file.</li>
-<li>If necessary, change the XML file name.</li>
-<li>Check the boxes next to the directories corresponding to the
-device-specific configurations you wish to support. Any configuration
-for which you do not specify a directory defaults to using the
-{@code values} directory.</li>
-</ol>
-
-<p>For more information about the relationship
-between directory names and configurations, see
-<a href="{@docRoot}guide/practices/screens_support.html#ConfigurationExamples">
-Supporting Multiple Screens</a>. For more information about
-supported directory names, see
-<a href="{@docRoot}guide/topics/resources/providing-resources.html#ResourceTypes">
-Providing Resources</a>.
-</p>
-
-
diff --git a/docs/html/tools/help/thumbnails/am-androidmon2.png b/docs/html/tools/help/thumbnails/am-androidmon2.png
deleted file mode 100644
index a4a7571..0000000
--- a/docs/html/tools/help/thumbnails/am-androidmon2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-cpumon.png b/docs/html/tools/help/thumbnails/am-cpumon.png
deleted file mode 100644
index 59908c8..0000000
--- a/docs/html/tools/help/thumbnails/am-cpumon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-cpumon2.png b/docs/html/tools/help/thumbnails/am-cpumon2.png
deleted file mode 100644
index 6ac6e02..0000000
--- a/docs/html/tools/help/thumbnails/am-cpumon2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-gc2.png b/docs/html/tools/help/thumbnails/am-gc2.png
deleted file mode 100644
index a5e8b6e..0000000
--- a/docs/html/tools/help/thumbnails/am-gc2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-gpumon.png b/docs/html/tools/help/thumbnails/am-gpumon.png
deleted file mode 100644
index a414fe5..0000000
--- a/docs/html/tools/help/thumbnails/am-gpumon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-gpumon2.png b/docs/html/tools/help/thumbnails/am-gpumon2.png
deleted file mode 100644
index 5cf51d9..0000000
--- a/docs/html/tools/help/thumbnails/am-gpumon2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-logcatmon2.png b/docs/html/tools/help/thumbnails/am-logcatmon2.png
deleted file mode 100644
index 5635935..0000000
--- a/docs/html/tools/help/thumbnails/am-logcatmon2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-memorymon.png b/docs/html/tools/help/thumbnails/am-memorymon.png
deleted file mode 100644
index 0fefb27..0000000
--- a/docs/html/tools/help/thumbnails/am-memorymon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am-networkmon.png b/docs/html/tools/help/thumbnails/am-networkmon.png
deleted file mode 100644
index db9c647..0000000
--- a/docs/html/tools/help/thumbnails/am-networkmon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_alloctracker.png b/docs/html/tools/help/thumbnails/am_alloctracker.png
deleted file mode 100644
index b94713d..0000000
--- a/docs/html/tools/help/thumbnails/am_alloctracker.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_androidmon.png b/docs/html/tools/help/thumbnails/am_androidmon.png
deleted file mode 100644
index 6b05230..0000000
--- a/docs/html/tools/help/thumbnails/am_androidmon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_cpumon.png b/docs/html/tools/help/thumbnails/am_cpumon.png
deleted file mode 100644
index c8c0415..0000000
--- a/docs/html/tools/help/thumbnails/am_cpumon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_gpumon.png b/docs/html/tools/help/thumbnails/am_gpumon.png
deleted file mode 100644
index e453e7d..0000000
--- a/docs/html/tools/help/thumbnails/am_gpumon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_hprofviewer.png b/docs/html/tools/help/thumbnails/am_hprofviewer.png
deleted file mode 100644
index 342590f..0000000
--- a/docs/html/tools/help/thumbnails/am_hprofviewer.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_iscreencapture.png b/docs/html/tools/help/thumbnails/am_iscreencapture.png
deleted file mode 100644
index 68135a7..0000000
--- a/docs/html/tools/help/thumbnails/am_iscreencapture.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_isysteminfo.png b/docs/html/tools/help/thumbnails/am_isysteminfo.png
deleted file mode 100644
index 37d77db..0000000
--- a/docs/html/tools/help/thumbnails/am_isysteminfo.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_ivideo.png b/docs/html/tools/help/thumbnails/am_ivideo.png
deleted file mode 100644
index 901eaf1..0000000
--- a/docs/html/tools/help/thumbnails/am_ivideo.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_logcatmon.png b/docs/html/tools/help/thumbnails/am_logcatmon.png
deleted file mode 100644
index ca7063c..0000000
--- a/docs/html/tools/help/thumbnails/am_logcatmon.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_methodtrace.png b/docs/html/tools/help/thumbnails/am_methodtrace.png
deleted file mode 100644
index 8d5ca4e..0000000
--- a/docs/html/tools/help/thumbnails/am_methodtrace.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_networkmon2.png b/docs/html/tools/help/thumbnails/am_networkmon2.png
deleted file mode 100644
index f55f853..0000000
--- a/docs/html/tools/help/thumbnails/am_networkmon2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_screenshot.png b/docs/html/tools/help/thumbnails/am_screenshot.png
deleted file mode 100644
index 66afff9..0000000
--- a/docs/html/tools/help/thumbnails/am_screenshot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_sysinfo.png b/docs/html/tools/help/thumbnails/am_sysinfo.png
deleted file mode 100644
index 9b5cd17..0000000
--- a/docs/html/tools/help/thumbnails/am_sysinfo.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/thumbnails/am_video.png b/docs/html/tools/help/thumbnails/am_video.png
deleted file mode 100644
index 209cb0c..0000000
--- a/docs/html/tools/help/thumbnails/am_video.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/help/traceview.jd b/docs/html/tools/help/traceview.jd
deleted file mode 100644
index a268291..0000000
--- a/docs/html/tools/help/traceview.jd
+++ /dev/null
@@ -1,28 +0,0 @@
-page.title=Traceview
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>Traceview is a graphical viewer for execution logs saved by your application.
-Traceview can help you debug your application and profile its performance.</p>
-
-<p>To start the Traceview tool:</p>
-
-<ul>
- <li>Start the <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>. </li>
- <li>In the Android Device Monitor tool bar, click <strong>DDMS</strong> and select a process. </li>
- <li>Click the <strong>Start Method Profiling</strong> icon to start method profiling. </li>
- <li>After the profiling is complete, click the <strong>Stop Method Profiling</strong> icon to
- display the traceview. </li>
-</ul>
-
-
-<p>For more information on how to use Traceview, see
-<a href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with Traceview and
-dmtracedump</a>.
-</p>
-
-<p class="note"><strong>Note:</strong> Running <code>traceview</code> from the command line
-has been deprecated. </p>
-
-
diff --git a/docs/html/tools/help/translations-editor.jd b/docs/html/tools/help/translations-editor.jd
deleted file mode 100644
index ab557e1..0000000
--- a/docs/html/tools/help/translations-editor.jd
+++ /dev/null
@@ -1,133 +0,0 @@
-page.title=Translations Editor
-parent.title=Tools
-parent.link=index.html
-page.tags=translations
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#about">About the Translations Editor</a></li>
- <li><a href="#running">Running the Translations Editor</a></li>
- <li><a href="#managing">Managing String Resources</a></li>
- <li><a href="#ordering">Ordering Translation Services</a></li>
-</ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/basics/supporting-devices/languages.html">Supporting Different
- Languages</a></li>
- <li><a href="{@docRoot}guide/topics/resources/localization.html">Localizing with Resources</a>
- </li>
- <li><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>
- </li>
- </ol>
-
-</div>
-</div>
-
-<p>
-If your application supports multiple languages, you need to properly manage your
-translated string resources. Android Studio provides the Translations Editor to make viewing and
-managing your translated resources easier.
-</p>
-
-<h2 id="about">About the Translations Editor</h2>
-
-<p>
-Translated resources are stored in multiple XML files in multiple directories in your project.
-Manually finding and editing resource files across many translations can be difficult. Because of
-this, your application might have missing translations that go unnoticed until after your
-application has been built and distributed to users.
-</p>
-
-<p>
-The Translations Editor lets you view and update all your string resources in one convenient
-place. The editor gives you a single view of all of your translated resources, making it easy to
-change or add translations, and even find missing translations.
-</p>
-
-<img src="{@docRoot}images/tools/studio-translations-editor.png" />
-<p class="img-caption"><strong>Figure 1.</strong> Manage locales and strings in the
-Translations Editor.</p>
-
-<h2 id="running">Running the Translations Editor</h2>
-
-<p>
-Follow these steps to start the Translations Editor:
-</p>
-
-<ol>
- <li>In Android Studio, open an Android app project.</li>
- <li>In the <em>Project</em> window, select the
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
- <li>Open the <strong>res</strong> folder, and then open the <strong>values</strong> folder.</li>
- <li>If a <strong>strings.xml</strong> folder is present, open this folder.</li>
- <li>Right-click the <code>strings.xml</code> file (not folder) and select <strong>Open
- Translations Editor</strong>.</li>
-</ol>
-
-<p>
-You can also access the Translations Editor by opening a <code>strings.xml</code> file for editing
-and clicking the <strong>Open editor</strong> link, or clicking the globe icon
-<img src="{@docRoot}images/tools/studio-globe-icon.png" alt=""/> in the Design layout view and
-choosing <strong>Edit Translations</strong>.
-</p>
-
-<h2 id="managing">Managing String Resources</h2>
-
-<p>
-The Translations Editor provides a view of all your string resources and current locale
-translations. The name of each resource is listed in the Key column, along with a default value
-for the key, a checkbox to mark the key as untranslatable, and values for each locale translation.
-</p>
-
-<p>
-Edit translations by double-clicking on the translation and editing the value directly
-in the list view, or selecting the translation and editing the <strong>Translation</strong> field
-value at the bottom of the editor. The default value can be edited by double-clicking on
-the default value or selecting the default value and updating the <strong>Default Value</strong>
-field.</p>
-
-<p>
-If a resource is missing a translation and isn't marked untranslatable, the key name is
-displayed in red. If you hover over a red resource, Android Studio displays details about the
-missing translations.
-</p>
-
-<h3 id="adding">Adding a new string resource</h3>
-
-<p>
-Add a new resource by clicking the add icon <img src="{@docRoot}images/tools/studio-add-icon.png"
- alt=""/>. Android Studio prompts you for a key name,
-default value, and resource folder that contains the <code>strings.xml</code> file where the new
-resource is added.
-</p>
-
-<h3 id="adding_locales">Adding additional locales</h3>
-
-<p>
-Add additional locales by pressing the globe icon
- <img src="{@docRoot}images/tools/studio-globe-icon.png" alt=""/> and selecting the locale you want
-to add. The Translations Editor adds the new locale column and creates the translation strings XML
-file in the appropriate project directory.
-</p>
-
-<p>
-The Translations Editor has
-<a class="external-link" href="https://tools.ietf.org/html/bcp47">BCP 47</a> support, and
-combines language and region codes into a single selection for targeted localizations.
-</p>
-
-<h2 id="ordering">Ordering Translation Services</h2>
-
-<p>
-Clicking the <strong>Order a translation</strong> link opens a page in your browser where you
-can upload string resource XML files and order translation services. App translation services are
-available from Google Play and other vendors. For more information about Google Play App
-Translation Services, see the <a class="external-link"
-href="http://android-developers.blogspot.com/2013/11/app-translation-service-now-available.html">
-Google Play App Translation Service</a> announcement.
-</p>
-
diff --git a/docs/html/tools/help/uiautomator/Configurator.jd b/docs/html/tools/help/uiautomator/Configurator.jd
deleted file mode 100644
index b6e15f6..0000000
--- a/docs/html/tools/help/uiautomator/Configurator.jd
+++ /dev/null
@@ -1,960 +0,0 @@
-page.title=Configurator
-parent.title=uiautomator
-parent.link=index.html
-
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<div id="api-info-block">
-<div class="api-level" style="margin:-95px 0 0;">
-Since <a href="/guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level 18</a>
-</div>
-</div>
-
-<p>Allows you to set key parameters for running uiautomator tests. The new
-settings take effect immediately and can be changed any time during a test run.
-To modify parameters using <code><a href="#">Configurator</a></code>, first
-obtain an instance by calling <code><a href="#getInstance()">getInstance()</a></code>.
-As a best practice, make sure you always save the original value of any
-parameter that you are modifying. After running your tests with the modified
-parameters, make sure to also restore the original parameter values, otherwise
-this will impact other tests cases.</p>
-
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- long</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getActionAcknowledgmentTimeout()">getActionAcknowledgmentTimeout</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the current timeout for waiting for an acknowledgment of generic
- uiautomator actions, such as clicks, text setting, and menu presses.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
- static
-
- <a href="#">Configurator</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getInstance()">getInstance</a></span>()</nobr>
-
- <div class="jd-descrdiv">Retrieves a singleton instance of Configurator.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- long</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getKeyInjectionDelay()">getKeyInjectionDelay</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the current delay between key presses when injecting text input.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- long</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getScrollAcknowledgmentTimeout()">getScrollAcknowledgmentTimeout</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- long</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getWaitForIdleTimeout()">getWaitForIdleTimeout</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the current timeout used for waiting for the user interface to go
- into an idle state.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- long</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getWaitForSelectorTimeout()">getWaitForSelectorTimeout</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the current timeout for waiting for a widget to become visible in
- the user interface so that it can be matched by a selector.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">Configurator</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setActionAcknowledgmentTimeout(long)">setActionAcknowledgmentTimeout</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Sets the timeout for waiting for an acknowledgment of generic uiautomator
- actions, such as clicks, text setting, and menu presses.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">Configurator</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setKeyInjectionDelay(long)">setKeyInjectionDelay</a></span>(long delay)</nobr>
-
- <div class="jd-descrdiv">Sets a delay between key presses when injecting text input.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">Configurator</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Sets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">Configurator</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setWaitForIdleTimeout(long)">setWaitForIdleTimeout</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Sets the timeout for waiting for the user interface to go into an idle
- state before starting a uiautomator action.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">Configurator</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Sets the timeout for waiting for a widget to become visible in the user
- interface so that it can be matched by a selector.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Object</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">clone</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">equals</span>(Object arg0)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">finalize</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- Class<?></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">getClass</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">hashCode</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notify</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notifyAll</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">toString</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0)</nobr>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="getActionAcknowledgmentTimeout()"></A>
-
-<div class="jd-details api apilevel-18">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- long
- </span>
- <span class="sympad">getActionAcknowledgmentTimeout</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the current timeout for waiting for an acknowledgment of generic
- uiautomator actions, such as clicks, text setting, and menu presses.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to an action, that lets the framework determine if the
- action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiObject.html">UiObject</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>current timeout in milliseconds</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getInstance()"></A>
-
-<div class="jd-details api apilevel-18">
- <h4 class="jd-details-title">
- <span class="normal">
- public
- static
-
-
-
- <a href="#">Configurator</a>
- </span>
- <span class="sympad">getInstance</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Retrieves a singleton instance of Configurator.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>Configurator instance</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getKeyInjectionDelay()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- long
- </span>
- <span class="sympad">getKeyInjectionDelay</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the current delay between key presses when injecting text input.
- See <code><a href="UiObject.html#setText(java.lang.String)">setText(String)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>current delay in milliseconds</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="getScrollAcknowledgmentTimeout()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- long
- </span>
- <span class="sympad">getScrollAcknowledgmentTimeout</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to the scroll action, that lets the framework determine if
- the scroll action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiScrollable.html">UiScrollable</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>current timeout in milliseconds</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="getWaitForIdleTimeout()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- long
- </span>
- <span class="sympad">getWaitForIdleTimeout</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the current timeout used for waiting for the user interface to go
- into an idle state.
-
- By default, all core uiautomator objects except <code><a href="UiDevice.html">UiDevice</a></code> will perform
- this wait before starting to search for the widget specified by the
- object's <code><a href="UiSelector.html">UiSelector</a></code>. Once the idle state is detected or the
- timeout elapses (whichever occurs first), the object will start to wait
- for the selector to find a match.
- See <code><a href="#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>Current timeout value in milliseconds</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="getWaitForSelectorTimeout()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- long
- </span>
- <span class="sympad">getWaitForSelectorTimeout</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the current timeout for waiting for a widget to become visible in
- the user interface so that it can be matched by a selector.
-
- Because user interface content is dynamic, sometimes a widget may not
- be visible immediately and won't be detected by a selector. This timeout
- allows the uiautomator framework to wait for a match to be found, up until
- the timeout elapses.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>Current timeout value in milliseconds</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setActionAcknowledgmentTimeout(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">Configurator</a>
- </span>
- <span class="sympad">setActionAcknowledgmentTimeout</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for an acknowledgment of generic uiautomator
- actions, such as clicks, text setting, and menu presses.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to an action, that lets the framework determine if the
- action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiObject.html">UiObject</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>Timeout value in milliseconds</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>self</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setKeyInjectionDelay(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">Configurator</a>
- </span>
- <span class="sympad">setKeyInjectionDelay</span>
- <span class="normal">(long delay)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets a delay between key presses when injecting text input.
- See <code><a href="UiObject.html#setText(java.lang.String)">setText(String)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>delay</td>
- <td>Delay value in milliseconds</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>self</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setScrollAcknowledgmentTimeout(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">Configurator</a>
- </span>
- <span class="sympad">setScrollAcknowledgmentTimeout</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to the scroll action, that lets the framework determine if
- the scroll action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiScrollable.html">UiScrollable</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>Timeout value in milliseconds</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>self</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setWaitForIdleTimeout(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">Configurator</a>
- </span>
- <span class="sympad">setWaitForIdleTimeout</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for the user interface to go into an idle
- state before starting a uiautomator action.
-
- By default, all core uiautomator objects except <code><a href="UiDevice.html">UiDevice</a></code> will perform
- this wait before starting to search for the widget specified by the
- object's <code><a href="UiSelector.html">UiSelector</a></code>. Once the idle state is detected or the
- timeout elapses (whichever occurs first), the object will start to wait
- for the selector to find a match.
- See <code><a href="#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>Timeout value in milliseconds</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>self</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setWaitForSelectorTimeout(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">Configurator</a>
- </span>
- <span class="sympad">setWaitForSelectorTimeout</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for a widget to become visible in the user
- interface so that it can be matched by a selector.
-
- Because user interface content is dynamic, sometimes a widget may not
- be visible immediately and won't be detected by a selector. This timeout
- allows the uiautomator framework to wait for a match to be found, up until
- the timeout elapses.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>Timeout value in milliseconds.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>self</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/IAutomationSupport.jd b/docs/html/tools/help/uiautomator/IAutomationSupport.jd
deleted file mode 100644
index 1e9e301..0000000
--- a/docs/html/tools/help/uiautomator/IAutomationSupport.jd
+++ /dev/null
@@ -1,82 +0,0 @@
-page.title=IAutomationSupport
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<h2>Class Overview</h2>
-<p>Provides auxiliary support for running test cases
-
-</p>
-
-<h2>Summary</h2>
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
- abstract
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#sendStatus(int, android.os.Bundle)">sendStatus</a></span>(int resultCode, Bundle status)
-
- <div class="jd-descrdiv">Allows the running test cases to send out interim status</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<a id="sendStatus(int, android.os.Bundle)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
- abstract
-
- void
- </span>
- <span class="sympad">sendStatus</span>
- <span class="normal">(int resultCode, Bundle status)</span>
- </h4>
-</div>
-
-<div class="jd-details-descr">
- <div class="jd-tagdata jd-tagdescr"><p>Allows the running test cases to send out interim status</p></div>
-</div>
-
diff --git a/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd b/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd
deleted file mode 100644
index bd108ab..0000000
--- a/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd
+++ /dev/null
@@ -1,1381 +0,0 @@
-page.title=UiAutomatorTestCase
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<h2>Class Overview</h2>
-<p>UI automation tests should extend this class. This class provides access
- to the following:
-<ul>
-<li><code><a href="UiDevice.html">UiDevice</a></code> instance</li>
-<li>Bundle for command line parameters</li>
-</ul>
-</p>
-
-<div class="jd-descr">
-
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
-
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#UiAutomatorTestCase()">UiAutomatorTestCase</a></span>()
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- <a href="IAutomationSupport.html">IAutomationSupport</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#getAutomationSupport()">getAutomationSupport</a></span>()
-
- <div class="jd-descrdiv">Provides support for running tests to report interim status</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- Bundle
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#getParams()">getParams</a></span>()
-
- <div class="jd-descrdiv">Get command line parameters.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- <a href="UiDevice.html">UiDevice</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#getUiDevice()">getUiDevice</a></span>()
-
- <div class="jd-descrdiv">Get current instance of <code><a href="UiDevice.html">UiDevice</a></code>.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#sleep(long)">sleep</a></span>(long ms)
-
- <div class="jd-descrdiv">Calls <code><a href="null#sleep(long)">sleep(long)</a></code> to sleep</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.TestCase" class="jd-expando-trigger closed"
- ><img id="inherited-methods-junit.framework.TestCase-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- junit.framework.TestCase
-
-<div id="inherited-methods-junit.framework.TestCase">
- <div id="inherited-methods-junit.framework.TestCase-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-junit.framework.TestCase-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- int
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">countTestCases</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getName</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- TestResult
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">run</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">run</span>(TestResult arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">runBare</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">setName</span>(String arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">toString</span>()
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Assert" class="jd-expando-trigger closed"
- ><img id="inherited-methods-junit.framework.Assert-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- junit.framework.Assert
-
-<div id="inherited-methods-junit.framework.Assert">
- <div id="inherited-methods-junit.framework.Assert-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-junit.framework.Assert-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(short arg0, short arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, int arg1, int arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, short arg1, short arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(char arg0, char arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, String arg1, String arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(int arg0, int arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, double arg1, double arg2, double arg3)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, long arg1, long arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(byte arg0, byte arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(Object arg0, Object arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(boolean arg0, boolean arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, float arg1, float arg2, float arg3)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, boolean arg1, boolean arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, String arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(float arg0, float arg1, float arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, byte arg1, byte arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(double arg0, double arg1, double arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, char arg1, char arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(String arg0, Object arg1, Object arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertEquals</span>(long arg0, long arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertFalse</span>(String arg0, boolean arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertFalse</span>(boolean arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertNotNull</span>(String arg0, Object arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertNotNull</span>(Object arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertNotSame</span>(Object arg0, Object arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertNotSame</span>(String arg0, Object arg1, Object arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertNull</span>(Object arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertNull</span>(String arg0, Object arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertSame</span>(Object arg0, Object arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertSame</span>(String arg0, Object arg1, Object arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertTrue</span>(String arg0, boolean arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">assertTrue</span>(boolean arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">fail</span>(String arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">fail</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">failNotEquals</span>(String arg0, Object arg1, Object arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">failNotSame</span>(String arg0, Object arg1, Object arg2)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">failSame</span>(String arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
- static
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">format</span>(String arg0, Object arg1, Object arg2)
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">equals</span>(Object arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- Class<?>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getClass</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- int
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">hashCode</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">notify</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">notifyAll</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">toString</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>(long arg0, int arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>(long arg0)
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Test" class="jd-expando-trigger closed"
- ><img id="inherited-methods-junit.framework.Test-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From interface
-
- junit.framework.Test
-
-<div id="inherited-methods-junit.framework.Test">
- <div id="inherited-methods-junit.framework.Test-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-junit.framework.Test-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
- abstract
-
-
-
-
- int
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">countTestCases</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
- abstract
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">run</span>(TestResult arg0)
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<a id="UiAutomatorTestCase()"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiAutomatorTestCase</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
- </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<a id="getAutomationSupport()"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="IAutomationSupport.html">IAutomationSupport</a>
- </span>
- <span class="sympad">getAutomationSupport</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Provides support for running tests to report interim status</p></div>
-
- </div>
-</div>
-
-
-<a id="getParams()"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- Bundle
- </span>
- <span class="sympad">getParams</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Get command line parameters. On the command line when passing <code>-e key value</code>
- pairs, the Bundle will have the key value pairs conveniently available to the
- tests.
-</p></div>
-
- </div>
-</div>
-
-
-<a id="getUiDevice()"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiDevice.html">UiDevice</a>
- </span>
- <span class="sympad">getUiDevice</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Get current instance of <code><a href="UiDevice.html">UiDevice</a></code>. Works similar to calling the static
- <code><a href="UiDevice.html#getInstance()">getInstance()</a></code> from anywhere in the test classes.
-</p></div>
-
- </div>
-</div>
-
-
-<a id="sleep(long)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">sleep</span>
- <span class="normal">(long ms)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Calls <code><a href="null#sleep(long)">sleep(long)</a></code> to sleep</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>ms</th>
- <td>is in milliseconds.
-</td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
diff --git a/docs/html/tools/help/uiautomator/UiCollection.jd b/docs/html/tools/help/uiautomator/UiCollection.jd
deleted file mode 100644
index 78c5254..0000000
--- a/docs/html/tools/help/uiautomator/UiCollection.jd
+++ /dev/null
@@ -1,1268 +0,0 @@
-page.title=UiCollection
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Used to enumerate a container's user interface (UI) elements for the purpose of counting,
- or targeting a sub elements by a child's text or description.
-</p>
-
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
-
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#UiCollection(com.android.uiautomator.core.UiSelector)">UiCollection</a></span>(<a href="UiSelector.html">UiSelector</a> selector)
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)
-
- <div class="jd-descrdiv">Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#getChildByInstance(com.android.uiautomator.core.UiSelector, int)">getChildByInstance</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)
-
- <div class="jd-descrdiv">Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)
-
- <div class="jd-descrdiv">Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- int
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#getChildCount(com.android.uiautomator.core.UiSelector)">getChildCount</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern)
-
- <div class="jd-descrdiv">Counts child UI element instances matching the <code>childPattern</code>
- argument.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
- ><img id="inherited-methods-com.android.uiautomator.core.UiObject-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- <a href="UiObject.html">com.android.uiautomator.core.UiObject</a>
-
-<div id="inherited-methods-com.android.uiautomator.core.UiObject">
- <div id="inherited-methods-com.android.uiautomator.core.UiObject-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-com.android.uiautomator.core.UiObject-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#clearTextField()">clearTextField</a></span>()
-
- <div class="jd-descrdiv">Clears the existing text contents in an editable field.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#click()">click</a></span>()
-
- <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow</a></span>(long timeout)
-
- <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow()">clickAndWaitForNewWindow</a></span>()
-
- <div class="jd-descrdiv">See <code><a href="UiObject.html#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow(long)</a></code>
- This method is intended to reliably wait for window transitions that would typically take
- longer than the usual default timeouts.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#clickBottomRight()">clickBottomRight</a></span>()
-
- <div class="jd-descrdiv">Clicks the bottom and right corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#clickTopLeft()">clickTopLeft</a></span>()
-
- <div class="jd-descrdiv">Clicks the top and left corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#exists()">exists</a></span>()
-
- <div class="jd-descrdiv">Check if UI element exists.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- Rect
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getBounds()">getBounds</a></span>()
-
- <div class="jd-descrdiv">Returns the UI element's <code>bounds</code> property.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getChild(com.android.uiautomator.core.UiSelector)">getChild</a></span>(<a href="UiSelector.html">UiSelector</a> selector)
-
- <div class="jd-descrdiv">Creates a new UiObject representing a child UI element of the element currently represented
- by this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- int
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getChildCount()">getChildCount</a></span>()
-
- <div class="jd-descrdiv">Counts the child UI elements immediately under the UI element currently represented by
- this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getContentDescription()">getContentDescription</a></span>()
-
- <div class="jd-descrdiv">Reads the <code>content_desc</code> property of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getFromParent(com.android.uiautomator.core.UiSelector)">getFromParent</a></span>(<a href="UiSelector.html">UiSelector</a> selector)
-
- <div class="jd-descrdiv">Creates a new UiObject representing a child UI element from the parent element currently
- represented by this object.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getPackageName()">getPackageName</a></span>()
-
- <div class="jd-descrdiv">Reads the UI element's <code>package</code> property</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- <a href="UiSelector.html">UiSelector</a>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getSelector()">getSelector</a></span>()
-
- <div class="jd-descrdiv">Debugging helper.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getText()">getText</a></span>()
-
- <div class="jd-descrdiv">Reads the <code>text</code> property of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- Rect
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#getVisibleBounds()">getVisibleBounds</a></span>()
-
- <div class="jd-descrdiv">Returns the visible bounds of the UI element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isCheckable()">isCheckable</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>checkable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isChecked()">isChecked</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>checked</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isClickable()">isClickable</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>clickable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isEnabled()">isEnabled</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>enabled</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isFocusable()">isFocusable</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>focusable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isFocused()">isFocused</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>focused</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isLongClickable()">isLongClickable</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>long-clickable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isScrollable()">isScrollable</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>scrollable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#isSelected()">isSelected</a></span>()
-
- <div class="jd-descrdiv">Check if the UI element's <code>selected</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#longClick()">longClick</a></span>()
-
- <div class="jd-descrdiv">Long clicks the center of the visible bounds of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#longClickBottomRight()">longClickBottomRight</a></span>()
-
- <div class="jd-descrdiv">Long clicks bottom and right corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#longClickTopLeft()">longClickTopLeft</a></span>()
-
- <div class="jd-descrdiv">Long clicks on the top and left corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#setText(java.lang.String)">setText</a></span>(String text)
-
- <div class="jd-descrdiv">Sets the text in an editable field, after clearing the field's content.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#swipeDown(int)">swipeDown</a></span>(int steps)
-
- <div class="jd-descrdiv">Perform the action on the UI element that is represented by this object, Also see
- #scrollToBeginning(int), #scrollToEnd(int), #scrollBackward(),
- #scrollForward().</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#swipeLeft(int)">swipeLeft</a></span>(int steps)
-
- <div class="jd-descrdiv">Perform the action on the UI element that is represented by this object.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#swipeRight(int)">swipeRight</a></span>(int steps)
-
- <div class="jd-descrdiv">Perform the action on the UI element that is represented by this object.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#swipeUp(int)">swipeUp</a></span>(int steps)
-
- <div class="jd-descrdiv">Perform the action on the UI element that is represented by this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#waitForExists(long)">waitForExists</a></span>(long timeout)
-
- <div class="jd-descrdiv">Waits a specified length of time for a UI element to become visible.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="UiObject.html#waitUntilGone(long)">waitUntilGone</a></span>(long timeout)
-
- <div class="jd-descrdiv">Waits a specified length of time for a UI element to become undetectable.</div>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">equals</span>(Object arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- Class<?>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getClass</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- int
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">hashCode</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">notify</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">notifyAll</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">toString</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>(long arg0, int arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>(long arg0)
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-<a id="UiCollection(com.android.uiautomator.core.UiSelector)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiCollection</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
- </div>
-</div>
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-<a id="getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByDescription</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>
- selector.
-
- It looks for any child matching the <code>childPattern</code> argument that has
- a child UI element anywhere within its sub hierarchy that has content-description text.
- The returned UiObject will point at the <code>childPattern</code> instance that matched the
- search and not at the identifying child element that matched the content description.</p></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</th>
- <td><code><a href="UiSelector.html">UiSelector</a></code> selector of the child pattern to match and return</td>
- </tr>
- <tr>
- <th>text</th>
- <td>String of the identifying child contents of of the <code>childPattern</code></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> pointing at and instance of <code>childPattern</code></li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<a id="getChildByInstance(com.android.uiautomator.core.UiSelector, int)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByInstance</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>.
-
- It looks for any child matching the <code>childPattern</code> argument that has
- a child UI element anywhere within its sub hierarchy that is at the <code>instance</code>
- specified. The operation is performed only on the visible items and no scrolling is performed
- in this case.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</th>
- <td><code><a href="UiSelector.html">UiSelector</a></code> selector of the child pattern to match and return</td>
- </tr>
- <tr>
- <th>instance</th>
- <td>int the desired matched instance of this <code>childPattern</code></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> pointing at and instance of <code>childPattern</code>
-</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<a id="getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByText</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>
- selector.
-
- It looks for any child matching the <code>childPattern</code> argument that has
- a child UI element anywhere within its sub hierarchy that has a text attribute equal to
- <code>text</code>. The returned UiObject will point at the <code>childPattern</code>
- instance that matched the search and not at the identifying child element that matched the
- text attribute.</p></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</th>
- <td><code><a href="UiSelector.html">UiSelector</a></code> selector of the child pattern to match and return</td>
- </tr>
- <tr>
- <th>text</th>
- <td>String of the identifying child contents of of the <code>childPattern</code></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> pointing at and instance of <code>childPattern</code></li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<a id="getChildCount(com.android.uiautomator.core.UiSelector)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
- int
- </span>
- <span class="sympad">getChildCount</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern)</span>
- </h4>
- <div class="api-level">
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Counts child UI element instances matching the <code>childPattern</code>
- argument. The method returns the number of matching UI elements that are
- currently visible. The count does not include items of a scrollable list
- that are off-screen.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</th>
- <td>a <code><a href="UiSelector.html">UiSelector</a></code> that represents the matching child UI
- elements to count</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>the number of matched childPattern under the current <code><a href="UiCollection.html">UiCollection</a></code>
-</li></ul>
- </div>
-
- </div>
-
diff --git a/docs/html/tools/help/uiautomator/UiDevice.jd b/docs/html/tools/help/uiautomator/UiDevice.jd
deleted file mode 100644
index 1203841..0000000
--- a/docs/html/tools/help/uiautomator/UiDevice.jd
+++ /dev/null
@@ -1,3208 +0,0 @@
-page.title=UiDevice
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Provides access to state information about the device. You can
-also use this class to simulate user actions on the device, such as pressing
-the d-pad or pressing the Home and Menu buttons.</p>
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#clearLastTraversedText()">clearLastTraversedText</a></span>()</nobr>
-
- <div class="jd-descrdiv">Clears the text from the last UI traversal event.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#click(int, int)">click</a></span>(int x, int y)</nobr>
-
- <div class="jd-descrdiv">Perform a click at arbitrary coordinates specified by the user</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#drag(int, int, int, int, int)">drag</a></span>(int startX, int startY, int endX, int endY, int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a swipe from one coordinate to another coordinate.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#dumpWindowHierarchy(java.lang.String)">dumpWindowHierarchy</a></span>(String fileName)</nobr>
-
- <div class="jd-descrdiv">Helper method used for debugging to dump the current window's layout hierarchy.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#freezeRotation()">freezeRotation</a></span>()</nobr>
-
- <div class="jd-descrdiv">Disables the sensors and freezes the device rotation at its
- current rotation state.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getCurrentActivityName()">getCurrentActivityName</a></span>()</nobr>
-
- <div class="jd-descrdiv"><em>
- This method is deprecated.
- The results returned should be considered unreliable</em></div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getCurrentPackageName()">getCurrentPackageName</a></span>()</nobr>
-
- <div class="jd-descrdiv">Retrieves the name of the last package to report accessibility events.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getDisplayHeight()">getDisplayHeight</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the height of the display, in pixels.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getDisplayRotation()">getDisplayRotation</a></span>()</nobr>
-
- <div class="jd-descrdiv">Returns the current rotation of the display, as defined in <code><a href="../../../../../reference/android/view/Surface.html">Surface</a></code></div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Point</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getDisplaySizeDp()">getDisplaySizeDp</a></span>()</nobr>
-
- <div class="jd-descrdiv">Returns the display size in dp (device-independent pixel)
-
- The returned display size is adjusted per screen rotation.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getDisplayWidth()">getDisplayWidth</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the width of the display, in pixels.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
- static
-
- <a href="#">UiDevice</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getInstance()">getInstance</a></span>()</nobr>
-
- <div class="jd-descrdiv">Retrieves a singleton instance of UiDevice</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getLastTraversedText()">getLastTraversedText</a></span>()</nobr>
-
- <div class="jd-descrdiv">Retrieves the text from the last UI traversal event received.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getProductName()">getProductName</a></span>()</nobr>
-
- <div class="jd-descrdiv">Retrieves the product name of the device.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#hasAnyWatcherTriggered()">hasAnyWatcherTriggered</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if any registered <code><a href="UiWatcher.html">UiWatcher</a></code> have triggered.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#hasWatcherTriggered(java.lang.String)">hasWatcherTriggered</a></span>(String watcherName)</nobr>
-
- <div class="jd-descrdiv">Checks if a specific registered <code><a href="UiWatcher.html">UiWatcher</a></code> has triggered.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isNaturalOrientation()">isNaturalOrientation</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the device is in its natural orientation.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isScreenOn()">isScreenOn</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks the power manager if the screen is ON.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#openNotification()">openNotification</a></span>()</nobr>
-
- <div class="jd-descrdiv">Opens the notification shade.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#openQuickSettings()">openQuickSettings</a></span>()</nobr>
-
- <div class="jd-descrdiv">Opens the Quick Settings shade.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressBack()">pressBack</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the BACK button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressDPadCenter()">pressDPadCenter</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the CENTER button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressDPadDown()">pressDPadDown</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the DOWN button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressDPadLeft()">pressDPadLeft</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the LEFT button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressDPadRight()">pressDPadRight</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the RIGHT button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressDPadUp()">pressDPadUp</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the UP button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressDelete()">pressDelete</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the DELETE key.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressEnter()">pressEnter</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the ENTER key.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressHome()">pressHome</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the HOME button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressKeyCode(int, int)">pressKeyCode</a></span>(int keyCode, int metaState)</nobr>
-
- <div class="jd-descrdiv">Simulates a short press using a key code.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressKeyCode(int)">pressKeyCode</a></span>(int keyCode)</nobr>
-
- <div class="jd-descrdiv">Simulates a short press using a key code.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressMenu()">pressMenu</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the MENU button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressRecentApps()">pressRecentApps</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the Recent Apps button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pressSearch()">pressSearch</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates a short press on the SEARCH button.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher</a></span>(String name, <a href="UiWatcher.html">UiWatcher</a> watcher)</nobr>
-
- <div class="jd-descrdiv">Registers a <code><a href="UiWatcher.html">UiWatcher</a></code> to run automatically when the testing framework is unable to
- find a match using a <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#removeWatcher(java.lang.String)">removeWatcher</a></span>(String name)</nobr>
-
- <div class="jd-descrdiv">Removes a previously registered <code><a href="UiWatcher.html">UiWatcher</a></code>.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#resetWatcherTriggers()">resetWatcherTriggers</a></span>()</nobr>
-
- <div class="jd-descrdiv">Resets a <code><a href="UiWatcher.html">UiWatcher</a></code> that has been triggered.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#runWatchers()">runWatchers</a></span>()</nobr>
-
- <div class="jd-descrdiv">This method forces all registered watchers to run.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setCompressedLayoutHeirarchy(boolean)">setCompressedLayoutHeirarchy</a></span>(boolean compressed)</nobr>
-
- <div class="jd-descrdiv">Enables or disables layout hierarchy compression.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setOrientationLeft()">setOrientationLeft</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates orienting the device to the left and also freezes rotation
- by disabling the sensors.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setOrientationNatural()">setOrientationNatural</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates orienting the device into its natural orientation and also freezes rotation
- by disabling the sensors.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setOrientationRight()">setOrientationRight</a></span>()</nobr>
-
- <div class="jd-descrdiv">Simulates orienting the device to the right and also freezes rotation
- by disabling the sensors.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#sleep()">sleep</a></span>()</nobr>
-
- <div class="jd-descrdiv">This method simply presses the power button if the screen is ON else
- it does nothing if the screen is already OFF.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#swipe(android.graphics.Point[], int)">swipe</a></span>(Point[] segments, int segmentSteps)</nobr>
-
- <div class="jd-descrdiv">Performs a swipe between points in the Point array.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#swipe(int, int, int, int, int)">swipe</a></span>(int startX, int startY, int endX, int endY, int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a swipe from one coordinate to another using the number of steps
- to determine smoothness and speed.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#takeScreenshot(java.io.File)">takeScreenshot</a></span>(File storePath)</nobr>
-
- <div class="jd-descrdiv">Take a screenshot of current window and store it as PNG
-
- Default scale of 1.0f (original size) and 90% quality is used
- The screenshot is adjusted per screen rotation</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#takeScreenshot(java.io.File, float, int)">takeScreenshot</a></span>(File storePath, float scale, int quality)</nobr>
-
- <div class="jd-descrdiv">Take a screenshot of current window and store it as PNG
-
- The screenshot is adjusted per screen rotation</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#unfreezeRotation()">unfreezeRotation</a></span>()</nobr>
-
- <div class="jd-descrdiv">Re-enables the sensors and un-freezes the device rotation allowing its contents
- to rotate with the device physical rotation.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#waitForIdle(long)">waitForIdle</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Waits for the current application to idle.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#waitForIdle()">waitForIdle</a></span>()</nobr>
-
- <div class="jd-descrdiv">Waits for the current application to idle.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#waitForWindowUpdate(java.lang.String, long)">waitForWindowUpdate</a></span>(String packageName, long timeout)</nobr>
-
- <div class="jd-descrdiv">Waits for a window content update event to occur.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#wakeUp()">wakeUp</a></span>()</nobr>
-
- <div class="jd-descrdiv">This method simulates pressing the power button if the screen is OFF else
- it does nothing if the screen is already ON.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Object</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">clone</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">equals</span>(Object arg0)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">finalize</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- Class<?></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">getClass</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">hashCode</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notify</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notifyAll</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">toString</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0)</nobr>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="clearLastTraversedText()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">clearLastTraversedText</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Clears the text from the last UI traversal event.
- See <code><a href="#getLastTraversedText()">getLastTraversedText()</a></code>.</p></div>
-
- </div>
-</div>
-
-
-<A NAME="click(int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">click</span>
- <span class="normal">(int x, int y)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Perform a click at arbitrary coordinates specified by the user</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>x</td>
- <td>coordinate</td>
- </tr>
- <tr>
- <th>y</td>
- <td>coordinate</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the click succeeded else false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="drag(int, int, int, int, int)"></A>
-
-<div class="jd-details api apilevel-18">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">drag</span>
- <span class="normal">(int startX, int startY, int endX, int endY, int steps)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a swipe from one coordinate to another coordinate. You can control
- the smoothness and speed of the swipe by specifying the number of steps.
- Each step execution is throttled to 5 milliseconds per step, so for a 100
- steps, the swipe will take around 0.5 seconds to complete.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>startX</td>
- <td>X-axis value for the starting coordinate</td>
- </tr>
- <tr>
- <th>startY</td>
- <td>Y-axis value for the starting coordinate</td>
- </tr>
- <tr>
- <th>endX</td>
- <td>X-axis value for the ending coordinate</td>
- </tr>
- <tr>
- <th>endY</td>
- <td>Y-axis value for the ending coordinate</td>
- </tr>
- <tr>
- <th>steps</td>
- <td>is the number of steps for the swipe action</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if swipe is performed, false if the operation fails
- or the coordinates are invalid</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="dumpWindowHierarchy(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">dumpWindowHierarchy</span>
- <span class="normal">(String fileName)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Helper method used for debugging to dump the current window's layout hierarchy.
- The file root location is /data/local/tmp</p></div>
-
- </div>
-</div>
-
-
-<A NAME="freezeRotation()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">freezeRotation</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Disables the sensors and freezes the device rotation at its
- current rotation state.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getCurrentActivityName()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getCurrentActivityName</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
- <p>
- <p class="caution"><strong>
- This method is deprecated.</strong><br/>
- The results returned should be considered unreliable
- </p>
- <div class="jd-tagdata jd-tagdescr"><p>Retrieves the last activity to report accessibility events.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>String name of activity</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getCurrentPackageName()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getCurrentPackageName</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Retrieves the name of the last package to report accessibility events.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>String name of package</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getDisplayHeight()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- int
- </span>
- <span class="sympad">getDisplayHeight</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the height of the display, in pixels. The size is adjusted based
- on the current orientation of the display.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>height in pixels or zero on failure</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getDisplayRotation()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- int
- </span>
- <span class="sympad">getDisplayRotation</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Returns the current rotation of the display, as defined in <code><a href="../../../../../reference/android/view/Surface.html">Surface</a></code></p></div>
-
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
-</div>
-
-
-<A NAME="getDisplaySizeDp()"></A>
-
-<div class="jd-details api apilevel-18">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- Point
- </span>
- <span class="sympad">getDisplaySizeDp</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Returns the display size in dp (device-independent pixel)
-
- The returned display size is adjusted per screen rotation. Also this will return the actual
- size of the screen, rather than adjusted per system decorations (like status bar).</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>a Point containing the display size in dp
-</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="getDisplayWidth()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- int
- </span>
- <span class="sympad">getDisplayWidth</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the width of the display, in pixels. The width and height details
- are reported based on the current orientation of the display.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>width in pixels or zero on failure</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getInstance()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
- static
-
-
-
- <a href="#">UiDevice</a>
- </span>
- <span class="sympad">getInstance</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Retrieves a singleton instance of UiDevice</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiDevice instance</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getLastTraversedText()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getLastTraversedText</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Retrieves the text from the last UI traversal event received.
-
- You can use this method to read the contents in a WebView container
- because the accessibility framework fires events
- as each text is highlighted. You can write a test to perform
- directional arrow presses to focus on different elements inside a WebView,
- and call this method to get the text from each traversed element.
- If you are testing a view container that can return a reference to a
- Document Object Model (DOM) object, your test should use the view's
- DOM instead.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>text of the last traversal event, else return an empty string</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getProductName()"></A>
-
-<div class="jd-details api apilevel-17">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getProductName</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Retrieves the product name of the device.
-
- This method provides information on what type of device the test is running on. This value is
- the same as returned by invoking #adb shell getprop ro.product.name.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>product name of the device</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="hasAnyWatcherTriggered()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">hasAnyWatcherTriggered</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Checks if any registered <code><a href="UiWatcher.html">UiWatcher</a></code> have triggered.
-
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code>
- See <code><a href="#hasWatcherTriggered(java.lang.String)">hasWatcherTriggered(String)</a></code></p></div>
-
- </div>
-</div>
-
-
-<A NAME="hasWatcherTriggered(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">hasWatcherTriggered</span>
- <span class="normal">(String watcherName)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Checks if a specific registered <code><a href="UiWatcher.html">UiWatcher</a></code> has triggered.
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code>. If a UiWatcher runs and its
- <code><a href="UiWatcher.html#checkForCondition()">checkForCondition()</a></code> call returned <code>true</code>, then
- the UiWatcher is considered triggered. This is helpful if a watcher is detecting errors
- from ANR or crash dialogs and the test needs to know if a UiWatcher has been triggered.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if triggered else false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isNaturalOrientation()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isNaturalOrientation</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Check if the device is in its natural orientation. This is determined by checking if the
- orientation is at 0 or 180 degrees.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is in natural orientation</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="isScreenOn()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isScreenOn</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Checks the power manager if the screen is ON.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the screen is ON else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="openNotification()"></A>
-
-<div class="jd-details api apilevel-18">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">openNotification</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Opens the notification shade.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="openQuickSettings()"></A>
-
-<div class="jd-details api apilevel-18">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">openQuickSettings</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Opens the Quick Settings shade.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="pressBack()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressBack</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the BACK button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressDPadCenter()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressDPadCenter</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the CENTER button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressDPadDown()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressDPadDown</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the DOWN button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressDPadLeft()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressDPadLeft</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the LEFT button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressDPadRight()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressDPadRight</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the RIGHT button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressDPadUp()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressDPadUp</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the UP button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressDelete()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressDelete</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the DELETE key.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressEnter()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressEnter</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the ENTER key.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressHome()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressHome</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the HOME button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressKeyCode(int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressKeyCode</span>
- <span class="normal">(int keyCode, int metaState)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press using a key code.
-
- See <code><a href="../../../../../reference/android/view/KeyEvent.html">KeyEvent</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>keyCode</td>
- <td>the key code of the event.</td>
- </tr>
- <tr>
- <th>metaState</td>
- <td>an integer in which each bit set to 1 represents a pressed meta key</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressKeyCode(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressKeyCode</span>
- <span class="normal">(int keyCode)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press using a key code.
-
- See <code><a href="../../../../../reference/android/view/KeyEvent.html">KeyEvent</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressMenu()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressMenu</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the MENU button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressRecentApps()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressRecentApps</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the Recent Apps button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="pressSearch()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pressSearch</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the SEARCH button.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful, else return false</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">registerWatcher</span>
- <span class="normal">(String name, <a href="UiWatcher.html">UiWatcher</a> watcher)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Registers a <code><a href="UiWatcher.html">UiWatcher</a></code> to run automatically when the testing framework is unable to
- find a match using a <code><a href="UiSelector.html">UiSelector</a></code>. See <code><a href="#runWatchers()">runWatchers()</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>name</td>
- <td>to register the UiWatcher</td>
- </tr>
- <tr>
- <th>watcher</td>
- <td><code><a href="UiWatcher.html">UiWatcher</a></code></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="removeWatcher(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">removeWatcher</span>
- <span class="normal">(String name)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Removes a previously registered <code><a href="UiWatcher.html">UiWatcher</a></code>.
-
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>name</td>
- <td>used to register the UiWatcher</td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="resetWatcherTriggers()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">resetWatcherTriggers</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Resets a <code><a href="UiWatcher.html">UiWatcher</a></code> that has been triggered.
- If a UiWatcher runs and its <code><a href="UiWatcher.html#checkForCondition()">checkForCondition()</a></code> call
- returned <code>true</code>, then the UiWatcher is considered triggered.
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code></p></div>
-
- </div>
-</div>
-
-
-<A NAME="runWatchers()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">runWatchers</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>This method forces all registered watchers to run.
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code></p></div>
-
- </div>
-</div>
-
-
-<A NAME="setCompressedLayoutHeirarchy(boolean)"></A>
-
-<div class="jd-details api apilevel-18">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">setCompressedLayoutHeirarchy</span>
- <span class="normal">(boolean compressed)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Enables or disables layout hierarchy compression.
-
- If compression is enabled, the layout hierarchy derived from the Acessibility
- framework will only contain nodes that are important for uiautomator
- testing. Any unnecessary surrounding layout nodes that make viewing
- and searching the hierarchy inefficient are removed.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>compressed</td>
- <td>true to enable compression; else, false to disable</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setOrientationLeft()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">setOrientationLeft</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates orienting the device to the left and also freezes rotation
- by disabling the sensors.
-
- If you want to un-freeze the rotation and re-enable the sensors
- see <code><a href="#unfreezeRotation()">unfreezeRotation()</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setOrientationNatural()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">setOrientationNatural</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates orienting the device into its natural orientation and also freezes rotation
- by disabling the sensors.
-
- If you want to un-freeze the rotation and re-enable the sensors
- see <code><a href="#unfreezeRotation()">unfreezeRotation()</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setOrientationRight()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">setOrientationRight</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Simulates orienting the device to the right and also freezes rotation
- by disabling the sensors.
-
- If you want to un-freeze the rotation and re-enable the sensors
- see <code><a href="#unfreezeRotation()">unfreezeRotation()</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="sleep()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">sleep</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>This method simply presses the power button if the screen is ON else
- it does nothing if the screen is already OFF.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="swipe(android.graphics.Point[], int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">swipe</span>
- <span class="normal">(Point[] segments, int segmentSteps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a swipe between points in the Point array. Each step execution is throttled
- to 5ms per step. So for a 100 steps, the swipe will take about 1/2 second to complete</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>segments</td>
- <td>is Point array containing at least one Point object</td>
- </tr>
- <tr>
- <th>segmentSteps</td>
- <td>steps to inject between two Points</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on success</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="swipe(int, int, int, int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">swipe</span>
- <span class="normal">(int startX, int startY, int endX, int endY, int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a swipe from one coordinate to another using the number of steps
- to determine smoothness and speed. Each step execution is throttled to 5ms
- per step. So for a 100 steps, the swipe will take about 1/2 second to complete.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>is the number of move steps sent to the system</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>false if the operation fails or the coordinates are invalid</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="takeScreenshot(java.io.File)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">takeScreenshot</span>
- <span class="normal">(File storePath)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Take a screenshot of current window and store it as PNG
-
- Default scale of 1.0f (original size) and 90% quality is used
- The screenshot is adjusted per screen rotation</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>storePath</td>
- <td>where the PNG should be written to</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if screen shot is created successfully, false otherwise</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="takeScreenshot(java.io.File, float, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">takeScreenshot</span>
- <span class="normal">(File storePath, float scale, int quality)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Take a screenshot of current window and store it as PNG
-
- The screenshot is adjusted per screen rotation</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>storePath</td>
- <td>where the PNG should be written to</td>
- </tr>
- <tr>
- <th>scale</td>
- <td>scale the screenshot down if needed; 1.0f for original size</td>
- </tr>
- <tr>
- <th>quality</td>
- <td>quality of the PNG compression; range: 0-100</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if screen shot is created successfully, false otherwise</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="unfreezeRotation()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">unfreezeRotation</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Re-enables the sensors and un-freezes the device rotation allowing its contents
- to rotate with the device physical rotation. During a test execution, it is best to
- keep the device frozen in a specific orientation until the test case execution has completed.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="waitForIdle(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">waitForIdle</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Waits for the current application to idle.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>in milliseconds</td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="waitForIdle()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">waitForIdle</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Waits for the current application to idle.
- Default wait timeout is 10 seconds</p></div>
-
- </div>
-</div>
-
-
-<A NAME="waitForWindowUpdate(java.lang.String, long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">waitForWindowUpdate</span>
- <span class="normal">(String packageName, long timeout)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Waits for a window content update event to occur.
-
- If a package name for the window is specified, but the current window
- does not have the same package name, the function returns immediately.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>packageName</td>
- <td>the specified window package name (can be <code>null</code>).
- If <code>null</code>, a window update from any front-end window will end the wait</td>
- </tr>
- <tr>
- <th>timeout</td>
- <td>the timeout for the wait</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if a window update occurred, false if timeout has elapsed or if the current
- window does not have the specified package name</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="wakeUp()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">wakeUp</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>This method simulates pressing the power button if the screen is OFF else
- it does nothing if the screen is already ON.
-
- If the screen was OFF and it just got turned ON, this method will insert a 500ms delay
- to allow the device time to wake up and accept input.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th></td>
- <td>RemoteException</td>
- </tr>
- <tr>
- <th>RemoteException</td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiObject.jd b/docs/html/tools/help/uiautomator/UiObject.jd
deleted file mode 100644
index 4ce257b..0000000
--- a/docs/html/tools/help/uiautomator/UiObject.jd
+++ /dev/null
@@ -1,3543 +0,0 @@
-page.title=UiObject
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>A <code><a href="#">UiObject</a></code> is a representation of a view. It is
-not in any way directly bound to a view as an object reference. A <code><a href="#">UiObject</a></code>
-contains information to help it locate a matching view at runtime based on the
-<code><a href="#UiSelector.html">UiSelector</a></code> properties specified in
-its constructor. Once you create an instance of a UiObject, it can be reused for
-different views that match the selector criteria.</p>
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- =========== ENUM CONSTANT SUMMARY =========== -->
-<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">int</td>
- <td class="jd-linkcol"><a href="#FINGER_TOUCH_HALF_WIDTH">FINGER_TOUCH_HALF_WIDTH</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">int</td>
- <td class="jd-linkcol"><a href="#SWIPE_MARGIN_LIMIT">SWIPE_MARGIN_LIMIT</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="#WAIT_FOR_EVENT_TMEOUT">WAIT_FOR_EVENT_TMEOUT</a></td>
- <td class="jd-descrcol" width="100%"><em>
- This constant is deprecated.
- use <code><a href="Configurator.html#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout(long)</a></code>
-</em></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="#WAIT_FOR_SELECTOR_POLL">WAIT_FOR_SELECTOR_POLL</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="#WAIT_FOR_SELECTOR_TIMEOUT">WAIT_FOR_SELECTOR_TIMEOUT</a></td>
- <td class="jd-descrcol" width="100%"><em>
- This constant is deprecated.
- use <code><a href="Configurator.html#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code>
-</em></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="#WAIT_FOR_WINDOW_TMEOUT">WAIT_FOR_WINDOW_TMEOUT</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#UiObject(com.android.uiautomator.core.UiSelector)">UiObject</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Constructs a UiObject to represent a view that matches the specified
- selector criteria.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#clearTextField()">clearTextField</a></span>()</nobr>
-
- <div class="jd-descrdiv">Clears the existing text contents in an editable field.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#click()">click</a></span>()</nobr>
-
- <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#clickAndWaitForNewWindow()">clickAndWaitForNewWindow</a></span>()</nobr>
-
- <div class="jd-descrdiv">Waits for window transitions that would typically take longer than the
- usual default timeouts.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#clickBottomRight()">clickBottomRight</a></span>()</nobr>
-
- <div class="jd-descrdiv">Clicks the bottom and right corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#clickTopLeft()">clickTopLeft</a></span>()</nobr>
-
- <div class="jd-descrdiv">Clicks the top and left corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#dragTo(com.android.uiautomator.core.UiObject, int)">dragTo</a></span>(<a href="#">UiObject</a> destObj, int steps)</nobr>
-
- <div class="jd-descrdiv">Drags this object to a destination UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#dragTo(int, int, int)">dragTo</a></span>(int destX, int destY, int steps)</nobr>
-
- <div class="jd-descrdiv">Drags this object to arbitrary coordinates.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#exists()">exists</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if view exists.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Rect</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getBounds()">getBounds</a></span>()</nobr>
-
- <div class="jd-descrdiv">Returns the view's <code>bounds</code> property.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getChild(com.android.uiautomator.core.UiSelector)">getChild</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Creates a new UiObject for a child view that is under the present UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getChildCount()">getChildCount</a></span>()</nobr>
-
- <div class="jd-descrdiv">Counts the child views immediately under the present UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getClassName()">getClassName</a></span>()</nobr>
-
- <div class="jd-descrdiv">Retrieves the <code>className</code> property of the UI element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getContentDescription()">getContentDescription</a></span>()</nobr>
-
- <div class="jd-descrdiv">Reads the <code>content_desc</code> property of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getFromParent(com.android.uiautomator.core.UiSelector)">getFromParent</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Creates a new UiObject for a sibling view or a child of the sibling view,
- relative to the present UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getPackageName()">getPackageName</a></span>()</nobr>
-
- <div class="jd-descrdiv">Reads the view's <code>package</code> property</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- <a href="UiSelector.html">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getSelector()">getSelector</a></span>()</nobr>
-
- <div class="jd-descrdiv">Debugging helper.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getText()">getText</a></span>()</nobr>
-
- <div class="jd-descrdiv">Reads the <code>text</code> property of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Rect</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getVisibleBounds()">getVisibleBounds</a></span>()</nobr>
-
- <div class="jd-descrdiv">Returns the visible bounds of the view.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isCheckable()">isCheckable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>checkable</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isChecked()">isChecked</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the UI element's <code>checked</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isClickable()">isClickable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>clickable</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isEnabled()">isEnabled</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>enabled</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isFocusable()">isFocusable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the UI element's <code>focusable</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isFocused()">isFocused</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the UI element's <code>focused</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isLongClickable()">isLongClickable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the view's <code>long-clickable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isScrollable()">isScrollable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the view's <code>scrollable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#isSelected()">isSelected</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>selected</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#longClick()">longClick</a></span>()</nobr>
-
- <div class="jd-descrdiv">Long clicks the center of the visible bounds of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#longClickBottomRight()">longClickBottomRight</a></span>()</nobr>
-
- <div class="jd-descrdiv">Long clicks bottom and right corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#longClickTopLeft()">longClickTopLeft</a></span>()</nobr>
-
- <div class="jd-descrdiv">Long clicks on the top and left corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#performMultiPointerGesture(android.view.MotionEvent.PointerCoords[]...)">performMultiPointerGesture</a></span>(PointerCoords... touches)</nobr>
-
- <div class="jd-descrdiv">Performs a multi-touch gesture.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int)">performTwoPointerGesture</a></span>(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps)</nobr>
-
- <div class="jd-descrdiv">Generates a two-pointer gesture with arbitrary starting and ending points.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pinchIn(int, int)">pinchIn</a></span>(int percent, int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- toward the other, from the edges to the center of this UiObject .</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#pinchOut(int, int)">pinchOut</a></span>(int percent, int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- opposite across the other, from the center out towards the edges of the
- this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setText(java.lang.String)">setText</a></span>(String text)</nobr>
-
- <div class="jd-descrdiv">Sets the text in an editable field, after clearing the field's content.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#swipeDown(int)">swipeDown</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe down action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#swipeLeft(int)">swipeLeft</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe left action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#swipeRight(int)">swipeRight</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe right action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#swipeUp(int)">swipeUp</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe up action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#waitForExists(long)">waitForExists</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Waits a specified length of time for a view to become visible.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#waitUntilGone(long)">waitUntilGone</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Waits a specified length of time for a view to become undetectable.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- AccessibilityNodeInfo</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#findAccessibilityNodeInfo(long)">findAccessibilityNodeInfo</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Finds a matching UI element in the accessibility hierarchy, by
- using the selector for this UiObject.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Object</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">clone</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">equals</span>(Object arg0)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">finalize</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- Class<?></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">getClass</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">hashCode</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notify</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notifyAll</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">toString</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0)</nobr>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- ========= ENUM CONSTANTS DETAIL ======== -->
-<h2>Constants</h2>
-
-
-
-
-<A NAME="FINGER_TOUCH_HALF_WIDTH"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
- static
- final
- int
- </span>
- FINGER_TOUCH_HALF_WIDTH
- </h4>
- <div class="api-level">
-
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
- <div class="jd-tagdata">
- <span class="jd-tagtitle">Constant Value: </span>
- <span>
-
- 20
- (0x00000014)
-
- </span>
- </div>
-
- </div>
-</div>
-
-
-
-<A NAME="SWIPE_MARGIN_LIMIT"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
- static
- final
- int
- </span>
- SWIPE_MARGIN_LIMIT
- </h4>
- <div class="api-level">
-
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
- <div class="jd-tagdata">
- <span class="jd-tagtitle">Constant Value: </span>
- <span>
-
- 5
- (0x00000005)
-
- </span>
- </div>
-
- </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_EVENT_TMEOUT"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
- static
- final
- long
- </span>
- WAIT_FOR_EVENT_TMEOUT
- </h4>
- <div class="api-level">
-
-
-
-
- </div>
- <div class="jd-details-descr">
- <p>
- <p class="caution"><strong>
- This constant is deprecated.</strong><br/>
- use <code><a href="Configurator.html#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout(long)</a></code>
-
- </p>
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
- <div class="jd-tagdata">
- <span class="jd-tagtitle">Constant Value: </span>
- <span>
-
- 3000
- (0x0000000000000bb8)
-
- </span>
- </div>
-
- </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_SELECTOR_POLL"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
- static
- final
- long
- </span>
- WAIT_FOR_SELECTOR_POLL
- </h4>
- <div class="api-level">
-
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
- <div class="jd-tagdata">
- <span class="jd-tagtitle">Constant Value: </span>
- <span>
-
- 1000
- (0x00000000000003e8)
-
- </span>
- </div>
-
- </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_SELECTOR_TIMEOUT"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
- static
- final
- long
- </span>
- WAIT_FOR_SELECTOR_TIMEOUT
- </h4>
- <div class="api-level">
-
-
-
-
- </div>
- <div class="jd-details-descr">
- <p>
- <p class="caution"><strong>
- This constant is deprecated.</strong><br/>
- use <code><a href="Configurator.html#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code>
-
- </p>
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
- <div class="jd-tagdata">
- <span class="jd-tagtitle">Constant Value: </span>
- <span>
-
- 10000
- (0x0000000000002710)
-
- </span>
- </div>
-
- </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_WINDOW_TMEOUT"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
- static
- final
- long
- </span>
- WAIT_FOR_WINDOW_TMEOUT
- </h4>
- <div class="api-level">
-
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
- <div class="jd-tagdata">
- <span class="jd-tagtitle">Constant Value: </span>
- <span>
-
- 5500
- (0x000000000000157c)
-
- </span>
- </div>
-
- </div>
-</div>
-
-
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<A NAME="UiObject(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiObject</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Constructs a UiObject to represent a view that matches the specified
- selector criteria.</p></div>
-
- </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="clearTextField()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- void
- </span>
- <span class="sympad">clearTextField</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Clears the existing text contents in an editable field.
-
- The <code><a href="UiSelector.html">UiSelector</a></code> of this object must reference a UI element that is editable.
-
- When you call this method, the method first sets focus at the start edge of the field.
- The method then simulates a long-press to select the existing text, and deletes the
- selected text.
-
- If a "Select-All" option is displayed, the method will automatically attempt to use it
- to ensure full text selection.
-
- Note that it is possible that not all the text in the field is selected; for example,
- if the text contains separators such as spaces, slashes, at symbol etc.
- Also, not all editable fields support the long-press functionality.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="click()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">click</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true id successful else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="clickAndWaitForNewWindow(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">clickAndWaitForNewWindow</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.
-
- This method differ from <code><a href="#click()">click()</a></code> only in that this method waits for a
- a new window transition as a result of the click. Some examples of a window transition:
- <li>launching a new activity</li>
- <li>bringing up a pop-up menu</li>
- <li>bringing up a dialog</li></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>timeout before giving up on waiting for a new window</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the event was triggered, else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="clickAndWaitForNewWindow()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">clickAndWaitForNewWindow</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Waits for window transitions that would typically take longer than the
- usual default timeouts.
- See <code><a href="#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow(long)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the event was triggered, else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="clickBottomRight()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">clickBottomRight</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Clicks the bottom and right corner of the UI element</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on success</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="clickTopLeft()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">clickTopLeft</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Clicks the top and left corner of the UI element</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on success</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="dragTo(com.android.uiautomator.core.UiObject, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">dragTo</span>
- <span class="normal">(<a href="#">UiObject</a> destObj, int steps)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Drags this object to a destination UiObject.
- The number of steps specified in your input parameter can influence the
- drag speed, and varying speeds may impact the results. Consider
- evaluating different speeds when using this method in your tests.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>destObj</td>
- <td>the destination UiObject.</td>
- </tr>
- <tr>
- <th>steps</td>
- <td>usually 40 steps. You can increase or decrease the steps to change the speed.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="dragTo(int, int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">dragTo</span>
- <span class="normal">(int destX, int destY, int steps)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Drags this object to arbitrary coordinates.
- The number of steps specified in your input parameter can influence the
- drag speed, and varying speeds may impact the results. Consider
- evaluating different speeds when using this method in your tests.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>destX</td>
- <td>the X-axis coordinate.</td>
- </tr>
- <tr>
- <th>destY</td>
- <td>the Y-axis coordinate.</td>
- </tr>
- <tr>
- <th>steps</td>
- <td>usually 40 steps. You can increase or decrease the steps to change the speed.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="exists()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">exists</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Check if view exists.
-
- This methods performs a <code><a href="#waitForExists(long)">waitForExists(long)</a></code> with zero timeout. This
- basically returns immediately whether the view represented by this UiObject
- exists or not. If you need to wait longer for this view, then see
- <code><a href="#waitForExists(long)">waitForExists(long)</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the view represented by this UiObject does exist</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getBounds()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- Rect
- </span>
- <span class="sympad">getBounds</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Returns the view's <code>bounds</code> property. See <code><a href="#getVisibleBounds()">getVisibleBounds()</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>Rect</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getChild(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiObject</a>
- </span>
- <span class="sympad">getChild</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Creates a new UiObject for a child view that is under the present UiObject.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>selector</td>
- <td>for child view to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>a new UiObject representing the child view</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getChildCount()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- int
- </span>
- <span class="sympad">getChildCount</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Counts the child views immediately under the present UiObject.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>the count of child views.</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getClassName()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getClassName</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Retrieves the <code>className</code> property of the UI element.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>class name of the current node represented by this UiObject</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td>if no match was found</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="getContentDescription()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getContentDescription</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Reads the <code>content_desc</code> property of the UI element</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>value of node attribute "content_desc"</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getFromParent(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiObject</a>
- </span>
- <span class="sympad">getFromParent</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Creates a new UiObject for a sibling view or a child of the sibling view,
- relative to the present UiObject.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>selector</td>
- <td>for a sibling view or children of the sibling view</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>a new UiObject representing the matched view</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getPackageName()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getPackageName</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Reads the view's <code>package</code> property</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getSelector()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
- final
-
-
- <a href="UiSelector.html">UiSelector</a>
- </span>
- <span class="sympad">getSelector</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Debugging helper. A test can dump the properties of a selector as a string
- to its logs if needed. <code>getSelector().toString();</code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiSelector.html">UiSelector</a></code></li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getText()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">getText</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Reads the <code>text</code> property of the UI element</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>text value of the current node represented by this UiObject</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td>if no match could be found</td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getVisibleBounds()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- Rect
- </span>
- <span class="sympad">getVisibleBounds</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Returns the visible bounds of the view.
-
- If a portion of the view is visible, only the bounds of the visible portion are
- reported.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>Rect</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">See Also</h5>
- <ul class="nolist"><li><code><a href="#getBounds()">getBounds()</a></code></li>
- </ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="isCheckable()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isCheckable</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>checkable</code> property is currently true.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isChecked()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isChecked</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Check if the UI element's <code>checked</code> property is currently true</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isClickable()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isClickable</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>clickable</code> property is currently true.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isEnabled()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isEnabled</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>enabled</code> property is currently true.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isFocusable()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isFocusable</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Check if the UI element's <code>focusable</code> property is currently true.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isFocused()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isFocused</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Check if the UI element's <code>focused</code> property is currently true</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isLongClickable()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isLongClickable</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Check if the view's <code>long-clickable</code> property is currently true</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isScrollable()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isScrollable</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Check if the view's <code>scrollable</code> property is currently true</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="isSelected()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">isSelected</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>selected</code> property is currently true.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if it is else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="longClick()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">longClick</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Long clicks the center of the visible bounds of the UI element</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if operation was successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="longClickBottomRight()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">longClickBottomRight</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Long clicks bottom and right corner of the UI element</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if operation was successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="longClickTopLeft()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">longClickTopLeft</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Long clicks on the top and left corner of the UI element</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if operation was successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="performMultiPointerGesture(android.view.MotionEvent.PointerCoords[]...)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">performMultiPointerGesture</span>
- <span class="normal">(PointerCoords... touches)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a multi-touch gesture. You must specify touch coordinates for
- at least 2 pointers. Each pointer must have all of its touch steps
- defined in an array of <code><a href="../../../../../reference/android/view/MotionEvent.PointerCoords.html">MotionEvent.PointerCoords</a></code>. You can use this method to
- specify complex gestures, like circles and irregular shapes, where each
- pointer may take a different path.
-
- To create a single point on a pointer's touch path:
- <code>
- PointerCoords p = new PointerCoords();
- p.x = stepX;
- p.y = stepY;
- p.pressure = 1;
- p.size = 1;
- </code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>touches</td>
- <td>represents the pointers' paths. Each <code><a href="../../../../../reference/android/view/MotionEvent.PointerCoords.html">MotionEvent.PointerCoords</a></code>
- array represents a different pointer. Each <code><a href="../../../../../reference/android/view/MotionEvent.PointerCoords.html">MotionEvent.PointerCoords</a></code> in an
- array element represents a touch point on a pointer's path.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
- <code>false</code> otherwise</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">performTwoPointerGesture</span>
- <span class="normal">(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Generates a two-pointer gesture with arbitrary starting and ending points.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>startPoint1</td>
- <td>start point of pointer 1</td>
- </tr>
- <tr>
- <th>startPoint2</td>
- <td>start point of pointer 2</td>
- </tr>
- <tr>
- <th>endPoint1</td>
- <td>end point of pointer 1</td>
- </tr>
- <tr>
- <th>endPoint2</td>
- <td>end point of pointer 2</td>
- </tr>
- <tr>
- <th>steps</td>
- <td>the number of steps for the gesture. Steps are injected
- about 5 milliseconds apart, so 100 steps may take around 0.5 seconds to complete.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
- <code>false</code> otherwise</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="pinchIn(int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pinchIn</span>
- <span class="normal">(int percent, int steps)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a two-pointer gesture, where each pointer moves diagonally
- toward the other, from the edges to the center of this UiObject .</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>percent</td>
- <td>percentage of the object's diagonal length for the pinch gesture</td>
- </tr>
- <tr>
- <th>steps</td>
- <td>the number of steps for the gesture. Steps are injected
- about 5 milliseconds apart, so 100 steps may take around 0.5 seconds to complete.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
- <code>false</code> otherwise</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="pinchOut(int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">pinchOut</span>
- <span class="normal">(int percent, int steps)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a two-pointer gesture, where each pointer moves diagonally
- opposite across the other, from the center out towards the edges of the
- this UiObject.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>percent</td>
- <td>percentage of the object's diagonal length for the pinch gesture</td>
- </tr>
- <tr>
- <th>steps</td>
- <td>the number of steps for the gesture. Steps are injected
- about 5 milliseconds apart, so 100 steps may take around 0.5 seconds to complete.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
- <code>false</code> otherwise</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="setText(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">setText</span>
- <span class="normal">(String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets the text in an editable field, after clearing the field's content.
-
- The <code><a href="UiSelector.html">UiSelector</a></code> selector of this object must reference a UI element that is editable.
-
- When you call this method, the method first simulates a <code><a href="#click()">click()</a></code> on
- editable field to set focus. The method then clears the field's contents
- and injects your specified text into the field.
-
- If you want to capture the original contents of the field, call <code><a href="#getText()">getText()</a></code> first.
- You can then modify the text and use this method to update the field.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>text</td>
- <td>string to set</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if operation is successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="swipeDown(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">swipeDown</span>
- <span class="normal">(int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe down action on the UiObject.
- The swipe gesture can be performed over any surface. The targeted
- UI element does not need to be scrollable.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="swipeLeft(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">swipeLeft</span>
- <span class="normal">(int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe left action on the UiObject.
- The swipe gesture can be performed over any surface. The targeted
- UI element does not need to be scrollable.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="swipeRight(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">swipeRight</span>
- <span class="normal">(int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe right action on the UiObject.
- The swipe gesture can be performed over any surface. The targeted
- UI element does not need to be scrollable.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="swipeUp(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">swipeUp</span>
- <span class="normal">(int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe up action on the UiObject.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true of successful</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="waitForExists(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">waitForExists</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Waits a specified length of time for a view to become visible.
-
- This method waits until the view becomes visible on the display, or
- until the timeout has elapsed. You can use this method in situations where
- the content that you want to select is not immediately displayed.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>the amount of time to wait (in milliseconds)</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the view is displayed, else false if timeout elapsed while waiting</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="waitUntilGone(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">waitUntilGone</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Waits a specified length of time for a view to become undetectable.
-
- This method waits until a view is no longer matchable, or until the
- timeout has elapsed.
-
- A view becomes undetectable when the <code><a href="UiSelector.html">UiSelector</a></code> of the object is
- unable to find a match because the element has either changed its state or is no
- longer displayed.
-
- You can use this method when attempting to wait for some long operation
- to compete, such as downloading a large file or connecting to a remote server.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>time to wait (in milliseconds)</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the element is gone before timeout elapsed, else false if timeout elapsed
- but a matching element is still found.</li></ul>
- </div>
-
- </div>
-</div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-<h2>Protected Methods</h2>
-
-
-
-<A NAME="findAccessibilityNodeInfo(long)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
-
-
-
-
- AccessibilityNodeInfo
- </span>
- <span class="sympad">findAccessibilityNodeInfo</span>
- <span class="normal">(long timeout)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Finds a matching UI element in the accessibility hierarchy, by
- using the selector for this UiObject.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>timeout</td>
- <td>in milliseconds</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>AccessibilityNodeInfo if found else null</li></ul>
- </div>
-
- </div>
-
-
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd b/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd
deleted file mode 100644
index c34fdfd..0000000
--- a/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd
+++ /dev/null
@@ -1,606 +0,0 @@
-page.title=UiObjectNotFoundException
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Generated in test runs when a <code><a href="UiSelector.html">UiSelector</a></code> selector could not be matched
- to any UI element displayed.
-</p>
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
-
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#UiObjectNotFoundException(java.lang.String)">UiObjectNotFoundException</a></span>(String msg)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
-
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#UiObjectNotFoundException(java.lang.String, java.lang.Throwable)">UiObjectNotFoundException</a></span>(String detailMessage, Throwable throwable)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
-
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#UiObjectNotFoundException(java.lang.Throwable)">UiObjectNotFoundException</a></span>(Throwable throwable)
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Throwable-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Throwable
-
-<div id="inherited-methods-java.lang.Throwable">
- <div id="inherited-methods-java.lang.Throwable-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Throwable-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
- synchronized
-
-
-
- Throwable
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">fillInStackTrace</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- Throwable
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getCause</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getLocalizedMessage</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getMessage</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- StackTraceElement[]
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getStackTrace</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
- synchronized
-
-
-
- Throwable
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">initCause</span>(Throwable arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">printStackTrace</span>(PrintWriter arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">printStackTrace</span>(PrintStream arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">printStackTrace</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">setStackTrace</span>(StackTraceElement[] arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">toString</span>()
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">equals</span>(Object arg0)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- Class<?>
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">getClass</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- int
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">hashCode</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">notify</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">notifyAll</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
-
-
-
- String
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">toString</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>()
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>(long arg0, int arg1)
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
-
-
- final
-
-
- void
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad">wait</span>(long arg0)
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<a id="UiObjectNotFoundException(java.lang.String)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiObjectNotFoundException</span>
- <span class="normal">(String msg)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
- </div>
-</div>
-
-
-<a id="UiObjectNotFoundException(java.lang.String, java.lang.Throwable)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiObjectNotFoundException</span>
- <span class="normal">(String detailMessage, Throwable throwable)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
- </div>
-</div>
-
-
-<a id="UiObjectNotFoundException(java.lang.Throwable)"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiObjectNotFoundException</span>
- <span class="normal">(Throwable throwable)</span>
- </h4>
- <div class="api-level">
- <div>
-
-</div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
- </div>
diff --git a/docs/html/tools/help/uiautomator/UiScrollable.jd b/docs/html/tools/help/uiautomator/UiScrollable.jd
deleted file mode 100644
index 8f6b1dd..0000000
--- a/docs/html/tools/help/uiautomator/UiScrollable.jd
+++ /dev/null
@@ -1,3283 +0,0 @@
-page.title=UiScrollable
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>A <code><a href="UiCollection.html">UiCollection</a></code>
-that supports searching for items in scrollable layout elements. This class can
-be used with horizontally or vertically scrollable controls.</p>
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- =========== ENUM CONSTANT SUMMARY =========== -->
-<table id="inhconstants" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Constants</div></th></tr>
-
-
-
-
-<tr class="api" >
-<td colspan="12">
-
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
- ><img id="inherited-constants-com.android.uiautomator.core.UiObject-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>From class
-<a href="UiObject.html">com.android.uiautomator.core.UiObject</a>
-<div id="inherited-constants-com.android.uiautomator.core.UiObject">
- <div id="inherited-constants-com.android.uiautomator.core.UiObject-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-constants-com.android.uiautomator.core.UiObject-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
- <tr class="api" >
- <td class="jd-typecol">int</td>
- <td class="jd-linkcol"><a href="UiObject.html#FINGER_TOUCH_HALF_WIDTH">FINGER_TOUCH_HALF_WIDTH</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">int</td>
- <td class="jd-linkcol"><a href="UiObject.html#SWIPE_MARGIN_LIMIT">SWIPE_MARGIN_LIMIT</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_EVENT_TMEOUT">WAIT_FOR_EVENT_TMEOUT</a></td>
- <td class="jd-descrcol" width="100%"><em>
- This constant is deprecated.
- use <code><a href="Configurator.html#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout(long)</a></code>
-</em></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_SELECTOR_POLL">WAIT_FOR_SELECTOR_POLL</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_SELECTOR_TIMEOUT">WAIT_FOR_SELECTOR_TIMEOUT</a></td>
- <td class="jd-descrcol" width="100%"><em>
- This constant is deprecated.
- use <code><a href="Configurator.html#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code>
-</em></td>
- </tr>
-
-
- <tr class="api" >
- <td class="jd-typecol">long</td>
- <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_WINDOW_TMEOUT">WAIT_FOR_WINDOW_TMEOUT</a></td>
- <td class="jd-descrcol" width="100%"></td>
- </tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-
-</table>
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#UiScrollable(com.android.uiautomator.core.UiSelector)">UiScrollable</a></span>(<a href="UiSelector.html">UiSelector</a> container)</nobr>
-
- <div class="jd-descrdiv">Constructor.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#flingBackward()">flingBackward</a></span>()</nobr>
-
- <div class="jd-descrdiv">Performs a backwards fling action with the default number of fling
- steps (5).</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#flingForward()">flingForward</a></span>()</nobr>
-
- <div class="jd-descrdiv">Performs a forward fling with the default number of fling steps (5).</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#flingToBeginning(int)">flingToBeginning</a></span>(int maxSwipes)</nobr>
-
- <div class="jd-descrdiv">Performs a fling gesture to reach the beginning of a scrollable layout element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#flingToEnd(int)">flingToEnd</a></span>(int maxSwipes)</nobr>
-
- <div class="jd-descrdiv">Performs a fling gesture to reach the end of a scrollable layout element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</nobr>
-
- <div class="jd-descrdiv">Searches for a child element in the present scrollable container.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
- <div class="jd-descrdiv">Searches for a child element in the present scrollable container.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getChildByInstance(com.android.uiautomator.core.UiSelector, int)">getChildByInstance</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</nobr>
-
- <div class="jd-descrdiv">Searches for a child element in the present scrollable container that
- matches the selector you provided.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</nobr>
-
- <div class="jd-descrdiv">Searches for a child element in the present scrollable container.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
- <div class="jd-descrdiv">Searches for a child element in the present scrollable
- container.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getMaxSearchSwipes()">getMaxSearchSwipes</a></span>()</nobr>
-
- <div class="jd-descrdiv">Gets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- double</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#getSwipeDeadZonePercentage()">getSwipeDeadZonePercentage</a></span>()</nobr>
-
- <div class="jd-descrdiv">Returns the percentage of a widget's size that's considered as a no-touch
- zone when swiping.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollBackward(int)">scrollBackward</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a backward scroll.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollBackward()">scrollBackward</a></span>()</nobr>
-
- <div class="jd-descrdiv">Performs a backward scroll with the default number of scroll steps (55).</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollDescriptionIntoView(java.lang.String)">scrollDescriptionIntoView</a></span>(String text)</nobr>
-
- <div class="jd-descrdiv">Performs a forward scroll action on the scrollable layout element until
- the content-description is found, or until swipe attempts have been exhausted.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollForward()">scrollForward</a></span>()</nobr>
-
- <div class="jd-descrdiv">Performs a forward scroll with the default number of scroll steps (55).</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollForward(int)">scrollForward</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a forward scroll.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollIntoView(com.android.uiautomator.core.UiSelector)">scrollIntoView</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Perform a scroll forward action to move through the scrollable layout
- element until a visible item that matches the selector is found.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollIntoView(com.android.uiautomator.core.UiObject)">scrollIntoView</a></span>(<a href="UiObject.html">UiObject</a> obj)</nobr>
-
- <div class="jd-descrdiv">Perform a forward scroll action to move through the scrollable layout element until
- a visible item that matches the <code><a href="UiObject.html">UiObject</a></code> is found.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollTextIntoView(java.lang.String)">scrollTextIntoView</a></span>(String text)</nobr>
-
- <div class="jd-descrdiv">Performs a forward scroll action on the scrollable layout element until
- the text you provided is visible, or until swipe attempts have been exhausted.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollToBeginning(int)">scrollToBeginning</a></span>(int maxSwipes)</nobr>
-
- <div class="jd-descrdiv">Scrolls to the beginning of a scrollable layout element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollToBeginning(int, int)">scrollToBeginning</a></span>(int maxSwipes, int steps)</nobr>
-
- <div class="jd-descrdiv">Scrolls to the beginning of a scrollable layout element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollToEnd(int, int)">scrollToEnd</a></span>(int maxSwipes, int steps)</nobr>
-
- <div class="jd-descrdiv">Scrolls to the end of a scrollable layout element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollToEnd(int)">scrollToEnd</a></span>(int maxSwipes)</nobr>
-
- <div class="jd-descrdiv">Scrolls to the end of a scrollable layout element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiScrollable</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setAsHorizontalList()">setAsHorizontalList</a></span>()</nobr>
-
- <div class="jd-descrdiv">Set the direction of swipes to be horizontal when performing scroll actions.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiScrollable</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setAsVerticalList()">setAsVerticalList</a></span>()</nobr>
-
- <div class="jd-descrdiv">Set the direction of swipes to be vertical when performing scroll actions.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiScrollable</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setMaxSearchSwipes(int)">setMaxSearchSwipes</a></span>(int swipes)</nobr>
-
- <div class="jd-descrdiv">Sets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiScrollable</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#setSwipeDeadZonePercentage(double)">setSwipeDeadZonePercentage</a></span>(double swipeDeadZonePercentage)</nobr>
-
- <div class="jd-descrdiv">Sets the percentage of a widget's size that's considered as no-touch
- zone when swiping.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#exists(com.android.uiautomator.core.UiSelector)">exists</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Used privately when performing swipe searches to decide if an element has become
- visible or not.</div>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiCollection" class="jd-expando-trigger closed"
- ><img id="inherited-methods-com.android.uiautomator.core.UiCollection-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- <a href="UiCollection.html">com.android.uiautomator.core.UiCollection</a>
-
-<div id="inherited-methods-com.android.uiautomator.core.UiCollection">
- <div id="inherited-methods-com.android.uiautomator.core.UiCollection-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-com.android.uiautomator.core.UiCollection-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiCollection.html#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
- <div class="jd-descrdiv">Searches for child UI element within the constraints of this UiCollection <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiCollection.html#getChildByInstance(com.android.uiautomator.core.UiSelector, int)">getChildByInstance</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</nobr>
-
- <div class="jd-descrdiv">Searches for child UI element within the constraints of this UiCollection <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiCollection.html#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
- <div class="jd-descrdiv">Searches for child UI element within the constraints of this UiCollection <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiCollection.html#getChildCount(com.android.uiautomator.core.UiSelector)">getChildCount</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern)</nobr>
-
- <div class="jd-descrdiv">Counts child UI element instances matching the <code>childPattern</code>
- argument.</div>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
- ><img id="inherited-methods-com.android.uiautomator.core.UiObject-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- <a href="UiObject.html">com.android.uiautomator.core.UiObject</a>
-
-<div id="inherited-methods-com.android.uiautomator.core.UiObject">
- <div id="inherited-methods-com.android.uiautomator.core.UiObject-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-com.android.uiautomator.core.UiObject-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#clearTextField()">clearTextField</a></span>()</nobr>
-
- <div class="jd-descrdiv">Clears the existing text contents in an editable field.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#click()">click</a></span>()</nobr>
-
- <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow()">clickAndWaitForNewWindow</a></span>()</nobr>
-
- <div class="jd-descrdiv">Waits for window transitions that would typically take longer than the
- usual default timeouts.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#clickBottomRight()">clickBottomRight</a></span>()</nobr>
-
- <div class="jd-descrdiv">Clicks the bottom and right corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#clickTopLeft()">clickTopLeft</a></span>()</nobr>
-
- <div class="jd-descrdiv">Clicks the top and left corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#dragTo(com.android.uiautomator.core.UiObject, int)">dragTo</a></span>(<a href="UiObject.html">UiObject</a> destObj, int steps)</nobr>
-
- <div class="jd-descrdiv">Drags this object to a destination UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#dragTo(int, int, int)">dragTo</a></span>(int destX, int destY, int steps)</nobr>
-
- <div class="jd-descrdiv">Drags this object to arbitrary coordinates.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#exists()">exists</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if view exists.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- AccessibilityNodeInfo</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#findAccessibilityNodeInfo(long)">findAccessibilityNodeInfo</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Finds a matching UI element in the accessibility hierarchy, by
- using the selector for this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Rect</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getBounds()">getBounds</a></span>()</nobr>
-
- <div class="jd-descrdiv">Returns the view's <code>bounds</code> property.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getChild(com.android.uiautomator.core.UiSelector)">getChild</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Creates a new UiObject for a child view that is under the present UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getChildCount()">getChildCount</a></span>()</nobr>
-
- <div class="jd-descrdiv">Counts the child views immediately under the present UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getClassName()">getClassName</a></span>()</nobr>
-
- <div class="jd-descrdiv">Retrieves the <code>className</code> property of the UI element.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getContentDescription()">getContentDescription</a></span>()</nobr>
-
- <div class="jd-descrdiv">Reads the <code>content_desc</code> property of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="UiObject.html">UiObject</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getFromParent(com.android.uiautomator.core.UiSelector)">getFromParent</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Creates a new UiObject for a sibling view or a child of the sibling view,
- relative to the present UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getPackageName()">getPackageName</a></span>()</nobr>
-
- <div class="jd-descrdiv">Reads the view's <code>package</code> property</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- <a href="UiSelector.html">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getSelector()">getSelector</a></span>()</nobr>
-
- <div class="jd-descrdiv">Debugging helper.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getText()">getText</a></span>()</nobr>
-
- <div class="jd-descrdiv">Reads the <code>text</code> property of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Rect</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#getVisibleBounds()">getVisibleBounds</a></span>()</nobr>
-
- <div class="jd-descrdiv">Returns the visible bounds of the view.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isCheckable()">isCheckable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>checkable</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isChecked()">isChecked</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the UI element's <code>checked</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isClickable()">isClickable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>clickable</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isEnabled()">isEnabled</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>enabled</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isFocusable()">isFocusable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the UI element's <code>focusable</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isFocused()">isFocused</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the UI element's <code>focused</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isLongClickable()">isLongClickable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the view's <code>long-clickable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isScrollable()">isScrollable</a></span>()</nobr>
-
- <div class="jd-descrdiv">Check if the view's <code>scrollable</code> property is currently true</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#isSelected()">isSelected</a></span>()</nobr>
-
- <div class="jd-descrdiv">Checks if the UI element's <code>selected</code> property is currently true.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#longClick()">longClick</a></span>()</nobr>
-
- <div class="jd-descrdiv">Long clicks the center of the visible bounds of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#longClickBottomRight()">longClickBottomRight</a></span>()</nobr>
-
- <div class="jd-descrdiv">Long clicks bottom and right corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#longClickTopLeft()">longClickTopLeft</a></span>()</nobr>
-
- <div class="jd-descrdiv">Long clicks on the top and left corner of the UI element</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#performMultiPointerGesture(android.view.MotionEvent.PointerCoords[]...)">performMultiPointerGesture</a></span>(PointerCoords... touches)</nobr>
-
- <div class="jd-descrdiv">Performs a multi-touch gesture.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int)">performTwoPointerGesture</a></span>(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps)</nobr>
-
- <div class="jd-descrdiv">Generates a two-pointer gesture with arbitrary starting and ending points.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#pinchIn(int, int)">pinchIn</a></span>(int percent, int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- toward the other, from the edges to the center of this UiObject .</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#pinchOut(int, int)">pinchOut</a></span>(int percent, int steps)</nobr>
-
- <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- opposite across the other, from the center out towards the edges of the
- this UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#setText(java.lang.String)">setText</a></span>(String text)</nobr>
-
- <div class="jd-descrdiv">Sets the text in an editable field, after clearing the field's content.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#swipeDown(int)">swipeDown</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe down action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#swipeLeft(int)">swipeLeft</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe left action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#swipeRight(int)">swipeRight</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe right action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#swipeUp(int)">swipeUp</a></span>(int steps)</nobr>
-
- <div class="jd-descrdiv">Performs the swipe up action on the UiObject.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#waitForExists(long)">waitForExists</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Waits a specified length of time for a view to become visible.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="UiObject.html#waitUntilGone(long)">waitUntilGone</a></span>(long timeout)</nobr>
-
- <div class="jd-descrdiv">Waits a specified length of time for a view to become undetectable.</div>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Object</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">clone</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">equals</span>(Object arg0)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">finalize</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- Class<?></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">getClass</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">hashCode</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notify</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notifyAll</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">toString</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0)</nobr>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<A NAME="UiScrollable(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiScrollable</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> container)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Constructor.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>container</td>
- <td>a <code><a href="UiSelector.html">UiSelector</a></code> selector to identify the scrollable
- layout element.</td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="flingBackward()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">flingBackward</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a backwards fling action with the default number of fling
- steps (5). If the swipe direction is set to vertical,
- then the swipe will be performed from top to bottom. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- left to right. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if scrolled, and false if can't scroll anymore</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="flingForward()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">flingForward</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a forward fling with the default number of fling steps (5).
- If the swipe direction is set to vertical, then the swipes will be
- performed from bottom to top. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- right to left. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="flingToBeginning(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">flingToBeginning</span>
- <span class="normal">(int maxSwipes)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a fling gesture to reach the beginning of a scrollable layout element.
- The beginning can be at the top-most edge in the case of vertical controls, or
- the left-most edge for horizontal controls. Make sure to take into
- account devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on scrolled else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="flingToEnd(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">flingToEnd</span>
- <span class="normal">(int maxSwipes)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a fling gesture to reach the end of a scrollable layout element.
- The end can be at the bottom-most edge in the case of vertical controls, or
- the right-most edge for horizontal controls. Make sure to take into
- account devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on scrolled, else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByDescription</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container.
- The search first looks for a child element that matches the selector
- you provided, then looks for the content-description in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the content-description).</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</td>
- <td><code><a href="UiSelector.html">UiSelector</a></code> for a child in a scollable layout element</td>
- </tr>
- <tr>
- <th>text</td>
- <td>Content-description to find in the children of
- the <code>childPattern</code> match (may be a partial match)</td>
- </tr>
- <tr>
- <th>allowScrollSearch</td>
- <td>set to true if scrolling is allowed</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByDescription</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container.
- The search first looks for a child element that matches the selector
- you provided, then looks for the content-description in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the content-description). By default, this method performs a
- scroll search.
- See <code><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByDescription(UiSelector, String, boolean)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</td>
- <td><code><a href="UiSelector.html">UiSelector</a></code> for a child in a scollable layout element</td>
- </tr>
- <tr>
- <th>text</td>
- <td>Content-description to find in the children of
- the <code>childPattern</code> match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getChildByInstance(com.android.uiautomator.core.UiSelector, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByInstance</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container that
- matches the selector you provided. The search is performed without
- scrolling and only on visible elements.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</td>
- <td><code><a href="UiSelector.html">UiSelector</a></code> for a child in a scollable layout element</td>
- </tr>
- <tr>
- <th>instance</td>
- <td>int number representing the occurance of
- a <code>childPattern</code> match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByText</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container. The
- search first looks for a child element that matches the
- selector you provided, then looks for the text in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the text).</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</td>
- <td><code><a href="UiSelector.html">UiSelector</a></code> selector for a child in a scrollable layout element</td>
- </tr>
- <tr>
- <th>text</td>
- <td>String to find in the children of the <code>childPattern</code> match</td>
- </tr>
- <tr>
- <th>allowScrollSearch</td>
- <td>set to true if scrolling is allowed</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="UiObject.html">UiObject</a>
- </span>
- <span class="sympad">getChildByText</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable
- container. The search first looks for a child element that matches the
- selector you provided, then looks for the text in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the text). By default, this method performs a
- scroll search.
- See <code><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByText(UiSelector, String, boolean)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>childPattern</td>
- <td><code><a href="UiSelector.html">UiSelector</a></code> selector for a child in a scrollable layout element</td>
- </tr>
- <tr>
- <th>text</td>
- <td>String to find in the children of the <code>childPattern</code> match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
-
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getMaxSearchSwipes()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- int
- </span>
- <span class="sympad">getMaxSearchSwipes</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Gets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.
- See <code><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription(UiSelector, String)</a></code> and
- <code><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText(UiSelector, String)</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>max the number of search swipes to perform until giving up</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="getSwipeDeadZonePercentage()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- double
- </span>
- <span class="sympad">getSwipeDeadZonePercentage</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Returns the percentage of a widget's size that's considered as a no-touch
- zone when swiping. The no-touch zone is set as a percentage of a widget's total
- width or height, denoting a margin around the swipable area of the widget.
- Swipes must start and end inside this margin. This is important when the
- widget being swiped may not respond to the swipe if started at a point
- too near to the edge. The default is 10% from either edge.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>a value between 0 and 1</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollBackward(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollBackward</span>
- <span class="normal">(int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a backward scroll. If the swipe direction is set to vertical,
- then the swipes will be performed from top to bottom. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- left to right. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>number of steps. Use this to control the speed of the scroll action.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollBackward()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollBackward</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a backward scroll with the default number of scroll steps (55).
- If the swipe direction is set to vertical,
- then the swipes will be performed from top to bottom. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- left to right. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if scrolled, and false if can't scroll anymore</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollDescriptionIntoView(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollDescriptionIntoView</span>
- <span class="normal">(String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll action on the scrollable layout element until
- the content-description is found, or until swipe attempts have been exhausted.
- See <code><a href="#setMaxSearchSwipes(int)">setMaxSearchSwipes(int)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>text</td>
- <td>content-description to find within the contents of this scrollable layout element.</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if item is found; else, false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollForward()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollForward</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll with the default number of scroll steps (55).
- If the swipe direction is set to vertical,
- then the swipes will be performed from bottom to top. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- right to left. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollForward(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollForward</span>
- <span class="normal">(int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll. If the swipe direction is set to vertical,
- then the swipes will be performed from bottom to top. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- right to left. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>number of steps. Use this to control the speed of the scroll action</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollIntoView(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollIntoView</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Perform a scroll forward action to move through the scrollable layout
- element until a visible item that matches the selector is found.
-
- See <code><a href="#scrollDescriptionIntoView(java.lang.String)">scrollDescriptionIntoView(String)</a></code> and <code><a href="#scrollTextIntoView(java.lang.String)">scrollTextIntoView(String)</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>selector</td>
- <td><code><a href="UiSelector.html">UiSelector</a></code> selector</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the item was found and now is in view; else, false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollIntoView(com.android.uiautomator.core.UiObject)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollIntoView</span>
- <span class="normal">(<a href="UiObject.html">UiObject</a> obj)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Perform a forward scroll action to move through the scrollable layout element until
- a visible item that matches the <code><a href="UiObject.html">UiObject</a></code> is found.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>obj</td>
- <td><code><a href="UiObject.html">UiObject</a></code></td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if the item was found and now is in view else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollTextIntoView(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollTextIntoView</span>
- <span class="normal">(String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll action on the scrollable layout element until
- the text you provided is visible, or until swipe attempts have been exhausted.
- See <code><a href="#setMaxSearchSwipes(int)">setMaxSearchSwipes(int)</a></code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>text</td>
- <td>test to look for</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if item is found; else, false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollToBeginning(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollToBeginning</span>
- <span class="normal">(int maxSwipes)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the beginning of a scrollable layout element. The beginning
- can be at the top-most edge in the case of vertical controls, or the
- left-most edge for horizontal controls. Make sure to take into account
- devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on scrolled else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollToBeginning(int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollToBeginning</span>
- <span class="normal">(int maxSwipes, int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the beginning of a scrollable layout element. The beginning
- can be at the top-most edge in the case of vertical controls, or the
- left-most edge for horizontal controls. Make sure to take into account
- devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>use steps to control the speed, so that it may be a scroll, or fling</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on scrolled else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollToEnd(int, int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollToEnd</span>
- <span class="normal">(int maxSwipes, int steps)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the end of a scrollable layout element. The end can be at the
- bottom-most edge in the case of vertical controls, or the right-most edge for
- horizontal controls. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>steps</td>
- <td>use steps to control the speed, so that it may be a scroll, or fling</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on scrolled else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="scrollToEnd(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- boolean
- </span>
- <span class="sympad">scrollToEnd</span>
- <span class="normal">(int maxSwipes)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the end of a scrollable layout element. The end can be at the
- bottom-most edge in the case of vertical controls, or the right-most edge for
- horizontal controls. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true on scrolled, else false</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Throws</h5>
- <table class="jd-tagtable">
- <tr>
- <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
- <td></td>
- </tr>
- </table>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="setAsHorizontalList()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiScrollable</a>
- </span>
- <span class="sympad">setAsHorizontalList</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the direction of swipes to be horizontal when performing scroll actions.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>reference to itself</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="setAsVerticalList()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiScrollable</a>
- </span>
- <span class="sympad">setAsVerticalList</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the direction of swipes to be vertical when performing scroll actions.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>reference to itself</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="setMaxSearchSwipes(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiScrollable</a>
- </span>
- <span class="sympad">setMaxSearchSwipes</span>
- <span class="normal">(int swipes)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.
- See <code><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription(UiSelector, String)</a></code> and
- <code><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText(UiSelector, String)</a></code>.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>swipes</td>
- <td>the number of search swipes to perform until giving up</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>reference to itself</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="setSwipeDeadZonePercentage(double)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiScrollable</a>
- </span>
- <span class="sympad">setSwipeDeadZonePercentage</span>
- <span class="normal">(double swipeDeadZonePercentage)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Sets the percentage of a widget's size that's considered as no-touch
- zone when swiping.
- The no-touch zone is set as percentage of a widget's total width or height,
- denoting a margin around the swipable area of the widget. Swipes must
- always start and end inside this margin. This is important when the
- widget being swiped may not respond to the swipe if started at a point
- too near to the edge. The default is 10% from either edge.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>swipeDeadZonePercentage</td>
- <td>is a value between 0 and 1</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>reference to itself</li></ul>
- </div>
-
- </div>
-</div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-<h2>Protected Methods</h2>
-
-
-
-<A NAME="exists(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
-
-
-
-
- boolean
- </span>
- <span class="sympad">exists</span>
- <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Used privately when performing swipe searches to decide if an element has become
- visible or not.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true if found else false</li></ul>
- </div>
-
- </div>
-
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiSelector.jd b/docs/html/tools/help/uiautomator/UiSelector.jd
deleted file mode 100644
index 1f045fd..0000000
--- a/docs/html/tools/help/uiautomator/UiSelector.jd
+++ /dev/null
@@ -1,2286 +0,0 @@
-page.title=UiSelector
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Specifies the elements in the layout hierarchy for tests to target, filtered
-by properties such as text value, content-description, class name, and state
-information. You can also target an element by its location in a layout
-hierarchy.</p>
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- </nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#UiSelector()">UiSelector</a></span>()</nobr>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#checkable(boolean)">checkable</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that are checkable.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#checked(boolean)">checked</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that
- are currently checked (usually for checkboxes).</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#childSelector(com.android.uiautomator.core.UiSelector)">childSelector</a></span>(<a href="#">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Adds a child UiSelector criteria to this selector.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#className(java.lang.String)">className</a></span>(String className)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
- <T>
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#className(java.lang.Class<T>)">className</a></span>(Class<T> type)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#classNameMatches(java.lang.String)">classNameMatches</a></span>(String regex)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the class property
- for a widget, using a regular expression.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#clickable(boolean)">clickable</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that are clickable.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#description(java.lang.String)">description</a></span>(String desc)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#descriptionContains(java.lang.String)">descriptionContains</a></span>(String desc)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#descriptionMatches(java.lang.String)">descriptionMatches</a></span>(String regex)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#descriptionStartsWith(java.lang.String)">descriptionStartsWith</a></span>(String desc)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#enabled(boolean)">enabled</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that are enabled.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#focusable(boolean)">focusable</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that are focusable.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#focused(boolean)">focused</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that have focus.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#fromParent(com.android.uiautomator.core.UiSelector)">fromParent</a></span>(<a href="#">UiSelector</a> selector)</nobr>
-
- <div class="jd-descrdiv">Adds a child UiSelector criteria to this selector which is used to
- start search from the parent widget.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#index(int)">index</a></span>(int index)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the widget by its node
- index in the layout hierarchy.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#instance(int)">instance</a></span>(int instance)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the
- widget by its instance number.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#longClickable(boolean)">longClickable</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that are long-clickable.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#packageName(java.lang.String)">packageName</a></span>(String name)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the package name
- of the application that contains the widget.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#packageNameMatches(java.lang.String)">packageNameMatches</a></span>(String regex)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the package name
- of the application that contains the widget.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#resourceId(java.lang.String)">resourceId</a></span>(String id)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the given resource ID.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#resourceIdMatches(java.lang.String)">resourceIdMatches</a></span>(String regex)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the resource ID
- of the widget, using a regular expression.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#scrollable(boolean)">scrollable</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that are scrollable.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#selected(boolean)">selected</a></span>(boolean val)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match widgets that
- are currently selected.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#text(java.lang.String)">text</a></span>(String text)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the visible text displayed
- in a widget (for example, the text label to launch an app).</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#textContains(java.lang.String)">textContains</a></span>(String text)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the visible text in a widget
- where the visible text must contain the string in your input argument.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#textMatches(java.lang.String)">textMatches</a></span>(String regex)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match the visible text displayed in a layout
- element, using a regular expression.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#textStartsWith(java.lang.String)">textStartsWith</a></span>(String text)</nobr>
-
- <div class="jd-descrdiv">Set the search criteria to match visible text in a widget that is
- prefixed by the text parameter.</div>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#toString()">toString</a></span>()</nobr>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- <a href="#">UiSelector</a></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad"><a href="#cloneSelector()">cloneSelector</a></span>()</nobr>
-
- </td></tr>
-
-
-
-</table>
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
- <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
- <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
- <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
- ><img id="inherited-methods-java.lang.Object-trigger"
- src="../../../../../assets/images/styles/disclosure_down.png"
- class="jd-expando-trigger-img" /></a>
-From class
-
- java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
- <div id="inherited-methods-java.lang.Object-list"
- class="jd-inheritedlinks">
- </div>
- <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
- <table class="jd-sumtable-expando">
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- Object</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">clone</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- boolean</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">equals</span>(Object arg0)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">finalize</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- Class<?></nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">getClass</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- int</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">hashCode</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notify</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">notifyAll</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
-
-
-
- String</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">toString</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>()</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
- </td></tr>
-
-
-
- <tr class="api" >
- <td class="jd-typecol"><nobr>
-
-
- final
-
-
- void</nobr>
- </td>
- <td class="jd-linkcol" width="100%"><nobr>
- <span class="sympad">wait</span>(long arg0)</nobr>
-
- </td></tr>
-
-
-</table>
- </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<A NAME="UiSelector()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
-
- </span>
- <span class="sympad">UiSelector</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
- </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="checkable(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">checkable</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are checkable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="checked(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">checked</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that
- are currently checked (usually for checkboxes).
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="childSelector(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">childSelector</span>
- <span class="normal">(<a href="#">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Adds a child UiSelector criteria to this selector.
-
- Use this selector to narrow the search scope to
- child widgets under a specific parent widget.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with this added search criterion</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="className(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">className</span>
- <span class="normal">(String className)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>className</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="className(java.lang.Class<T>)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">className</span>
- <span class="normal">(Class<T> type)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>type</td>
- <td>type</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="classNameMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">classNameMatches</span>
- <span class="normal">(String regex)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the class property
- for a widget, using a regular expression.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>regex</td>
- <td>a regular expression</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="clickable(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">clickable</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are clickable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="description(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">description</span>
- <span class="normal">(String desc)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must match exactly
- with the string in your input argument.
-
- Matching is case-sensitive.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>desc</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="descriptionContains(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">descriptionContains</span>
- <span class="normal">(String desc)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must contain
- the string in your input argument.
-
- Matching is case-insensitive.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>desc</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="descriptionMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">descriptionMatches</span>
- <span class="normal">(String regex)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must match exactly
- with the string in your input argument.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>regex</td>
- <td>a regular expression</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="descriptionStartsWith(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">descriptionStartsWith</span>
- <span class="normal">(String desc)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must start
- with the string in your input argument.
-
- Matching is case-insensitive.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>desc</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="enabled(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">enabled</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are enabled.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="focusable(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">focusable</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are focusable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="focused(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">focused</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that have focus.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="fromParent(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">fromParent</span>
- <span class="normal">(<a href="#">UiSelector</a> selector)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Adds a child UiSelector criteria to this selector which is used to
- start search from the parent widget.
-
- Use this selector to narrow the search scope to
- sibling widgets as well all child widgets under a parent.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with this added search criterion</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="index(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">index</span>
- <span class="normal">(int index)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the widget by its node
- index in the layout hierarchy.
-
- The index value must be 0 or greater.
-
- Using the index can be unreliable and should only
- be used as a last resort for matching. Instead,
- consider using the <code><a href="#instance(int)">instance(int)</a></code> method.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>index</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="instance(int)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">instance</span>
- <span class="normal">(int instance)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the
- widget by its instance number.
-
- The instance value must be 0 or greater, where
- the first instance is 0.
-
- For example, to simulate a user click on
- the third image that is enabled in a UI screen, you
- could specify a a search criteria where the instance is
- 2, the <code><a href="#className(java.lang.String)">className(String)</a></code> matches the image
- widget class, and <code><a href="#enabled(boolean)">enabled(boolean)</a></code> is true.
- The code would look like this:
- <code>
- new UiSelector().className("android.widget.ImageView")
- .enabled(true).instance(2);
- </code></p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>instance</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="longClickable(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">longClickable</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are long-clickable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="packageName(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">packageName</span>
- <span class="normal">(String name)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the package name
- of the application that contains the widget.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>name</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="packageNameMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">packageNameMatches</span>
- <span class="normal">(String regex)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the package name
- of the application that contains the widget.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>regex</td>
- <td>a regular expression</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="resourceId(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">resourceId</span>
- <span class="normal">(String id)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the given resource ID.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>id</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="resourceIdMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">resourceIdMatches</span>
- <span class="normal">(String regex)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the resource ID
- of the widget, using a regular expression.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>regex</td>
- <td>a regular expression</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 18</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="scrollable(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">scrollable</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are scrollable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="selected(boolean)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">selected</span>
- <span class="normal">(boolean val)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that
- are currently selected.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>val</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="text(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">text</span>
- <span class="normal">(String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the visible text displayed
- in a widget (for example, the text label to launch an app).
-
- The text for the element must match exactly with the string in your input
- argument. Matching is case-sensitive.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>text</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="textContains(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">textContains</span>
- <span class="normal">(String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the visible text in a widget
- where the visible text must contain the string in your input argument.
-
- The matching is case-sensitive.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>text</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="textMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">textMatches</span>
- <span class="normal">(String regex)</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the visible text displayed in a layout
- element, using a regular expression.
-
- The text in the widget must match exactly with the string in your
- input argument.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>regex</td>
- <td>a regular expression</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
- </div>
-</div>
-
-
-<A NAME="textStartsWith(java.lang.String)"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">textStartsWith</span>
- <span class="normal">(String text)</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match visible text in a widget that is
- prefixed by the text parameter.
-
- The matching is case-insensitive.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Parameters</h5>
- <table class="jd-tagtable">
- <tr>
- <th>text</td>
- <td>Value to match</td>
- </tr>
- </table>
- </div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
- </div>
-
- </div>
-</div>
-
-
-<A NAME="toString()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
-
-
- String
- </span>
- <span class="sympad">toString</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
- <div></div>
-
-
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
- </div>
-</div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-<h2>Protected Methods</h2>
-
-
-
-<A NAME="cloneSelector()"></A>
-
-<div class="jd-details api">
- <h4 class="jd-details-title">
- <span class="normal">
- protected
-
-
-
-
- <a href="#">UiSelector</a>
- </span>
- <span class="sympad">cloneSelector</span>
- <span class="normal">()</span>
- </h4>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Since</h5>
- <ul class="nolist"><li>Android API Level 17</li></ul>
- </div>
-
- </div>
-
-
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiWatcher.jd b/docs/html/tools/help/uiautomator/UiWatcher.jd
deleted file mode 100644
index 9268c35..0000000
--- a/docs/html/tools/help/uiautomator/UiWatcher.jd
+++ /dev/null
@@ -1,74 +0,0 @@
-page.title=UiWatcher
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
- h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<p>Represents a conditional watcher on the target device. To learn how to register a conditional
- watcher, see <code><a href="UiDevice.html#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">UiDevice.registerWatcher()</a></code>.
-</p>
-<h2>Summary</h2>
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
- <tr class="api" >
- <td class="jd-typecol">
- abstract
-
-
-
-
- boolean
- </td>
- <td class="jd-linkcol" width="100%">
- <span class="sympad"><a href="#checkForCondition()">checkForCondition</a></span>()
-
- <div class="jd-descrdiv">The testing framework calls this handler method automatically when the framework
- is unable to find a match using the <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-
- </td></tr>
-
-</table>
-
-</div><!-- jd-descr (summary) -->
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-<a id="checkForCondition()"></a>
-
-<div class="jd-details api ">
- <h4 class="jd-details-title">
- <span class="normal">
- public
-
-
- abstract
-
- boolean
- </span>
- <span class="sympad">checkForCondition</span>
- <span class="normal">()</span>
- </h4>
- <div class="api-level">
-
- </div>
- <div class="jd-details-descr">
-
- <div class="jd-tagdata jd-tagdescr"><p>The testing framework calls this handler method automatically when the framework is unable to find a match using the <code><a href="UiSelector.html">UiSelector</a></code>. When a match is not found after a predetermined time has elapsed, the framework calls the checkForCondition() method of all registered watchers on the device. You can use this method to handle known blocking issues that are preventing the test from proceeding. For example, you can check if a dialog appeared that is blocking the the test, then close the dialog or perform some other appropriate action to allow the test to continue.</p></div>
- <div class="jd-tagdata">
- <h5 class="jd-tagtitle">Returns</h5>
- <ul class="nolist"><li>true to indicate a matched condition, or false if no matching condition is found
-</li></ul>
- </div>
-
- </div>
diff --git a/docs/html/tools/help/uiautomator/index.jd b/docs/html/tools/help/uiautomator/index.jd
deleted file mode 100644
index 5eda4a3..0000000
--- a/docs/html/tools/help/uiautomator/index.jd
+++ /dev/null
@@ -1,188 +0,0 @@
-page.title=uiautomator
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ul>
- <li><a href="#syntax">Syntax</a></li>
- <li><a href="#options">Options</a></li>
- <lI><a href="#api">uiautomator API</a>
- <ul>
- <li><a href="#classes">Classes</a></li>
- <li><a href="#interfaces">Interfaces</a></li>
- <li><a href="#exceptions">Exceptions</a></li>
- </ul>
- </lI>
- </ul>
- </div>
-</div>
-
-<p>The {@code uiautomator} testing framework lets you test your user interface (UI) efficiently by creating automated functional UI testcases that can be run against your app on one or more devices.</p>
-<p>For more information on testing with the {@code uiautomator} framework, see <a href="{@docRoot}tools/testing/testing_ui.html">UI Testing</a>.</p>
-
-<h2 id="syntax">Syntax</h2>
-<p>To run your testcases on the target device, you can use the {@code adb shell} command to invoke the {@code uiautomator} tool. The syntax is:
-<pre>
-adb shell uiautomator runtest <JARS> -c <CLASSES> [options]
-</pre>
-</p>
-<p>Here’s an example:</p>
-<pre>adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings</pre>
-
-<h2 id="options">Command-line Options</h2>
-<p>The following table describes the subcommands and options for {@code uiautomator}.</p>
-
-<p class="table-caption" id="table1">
-<strong>Table 1.</strong> Command-line options for {@code uiautomator}</p>
-<table>
-<tr>
- <th>Subcommand</th>
- <th>Option</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td rowspan="7"><code>runtest</code></td>
-<td><nobr>{@code <JARS>}</nobr></td>
-<td><strong>Required</strong>. The {@code <JARS>} argument is the name of one or more JAR files that you deployed to the target device which contain your uiautomator testcases. You can list more than one JAR file by using a space as a separator.</td>
-</tr>
-
-<tr>
-<td><nobr><code>-c <CLASSES> </code></nobr></td>
-<td><strong>Required (API 17 or lower)</strong>.The {@code <CLASSES>}
-argument is a list of test classes or test methods in {@code <JARS>} to run.
-<p>Each class or method must be fully
-qualified with the package name, in one of these formats:
-<ul>
-<li>{@code package_name.class_name}</li>
-<li>{@code package_name.class_name#method_name}</li>
-</ul>
-You can list multiple classes or methods by using a space as a separator.</p>
-<p class="note"><strong>Note:</strong>This argument is not required for API 18
-and higher. If not specified, all test cases in {@code <JARS>} will be run.
-</p>
-</td>
-</tr>
-
-<tr>
-<td><nobr><code>--nohup</code></nobr></td>
-<td>Runs the test to completion on the device even if its parent process is terminated (for example, if the device is disconnected).</td>
-</tr>
-
-<tr>
-<td><nobr><code>-e <NAME> <VALUE></code></nobr></td>
-<td><p>Specify other name-value pairs to be passed to test classes. May be repeated.</p><p class="note"><strong>Note: </strong>The {@code -e} options cannot be combined; you must prefix each option with a separate {@code -e} flag. </p></td>
-</tr>
-
-<tr>
-<td><nobr><code>-e debug [true|false]</code></nobr></td>
-<td>Wait for debugger to connect before starting.</td>
-</tr>
-
-<tr>
-<td><code>dump [file]</code></td>
-<td>Generate an XML file with a dump of the current UI hierarchy. If a filepath is not specified, by default, the generated dump file is stored on the device in this location {@code /storage/sdcard0/window_dump.xml}.</td>
-</tr>
-
-<tr>
-<td><nobr><code>-e outputFormat simple | -s</code></nobr></td>
-<td>Enables less verbose JUnit style output.</td>
-</tr>
-
-<tr>
-<td><code>events</code></td>
-<td> </td>
-<td>Prints out accessibility events to the console until the connection to the device is terminated</td>
-</tr>
-</table>
-
-<h2 id="api">uiautomator API</h2>
-<p>The {@code uiautomator} API is bundled in the {@code uiautomator.jar} file under the {@code <android-sdk>/platforms/} directory. The API includes these key classes, interfaces, and exceptions that allow you to capture and manipulate UI components on the target app:</p>
-
-<h3 id="classes">Classes</h3>
-<table>
-<tr>
- <th>Class</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiCollection.html">{@code com.android.uiautomator.core.UiCollection}</a></nobr></td>
-<td>Used to enumerate a container's user interface (UI) elements for the purpose of counting, or targeting a sub elements by a child's text or description.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiDevice.html">{@code com.android.uiautomator.core.UiDevice}</a></nobr></td>
-<td>Provides access to state information about the device. You can also use this class to simulate user actions on the device, such as pressing the d-pad hardware button or pressing the Home and Menu buttons.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code com.android.uiautomator.core.UiObject}</a></nobr></td>
-<td>Represents a user interface (UI) element.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiScrollable.html">{@code com.android.uiautomator.core.UiScrollable}</a></nobr></td>
-<td>Provides support for searching for items in a scrollable UI container.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code com.android.uiautomator.core.UiSelector}</a></nobr></td>
-<td>Represents a query for one or more target UI elements on a device screen. </td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/Configurator.html">{@code com.android.uiautomator.core.Configurator}</a></nobr></td>
-<td>Allows you to set key parameters for running uiautomator tests.</td>
-</tr>
-
-</table>
-
-<h3 id="interfaces">Interfaces</h3>
-
-<table>
-<tr>
- <th>Interface</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiWatcher.html">{@code com.android.uiautomator.core.UiWatcher}</a></nobr></td>
-<td>Represents a conditional watcher on the target device.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/IAutomationSupport.html">{@code com.android.uiautomator.testrunner.IAutomationSupport}</a></nobr></td>
-<td>Provides auxiliary support for running test cases.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiAutomatorTestCase.html">{@code com.android.uiautomator.testrunner.UiAutomatorTestCase}</a></nobr></td>
-<td>Defines an environment for running multiple tests. All {@code uiautomator} test cases should extend this class.</td>
-</tr>
-
-</table>
-
-<h3 id="exceptions">Exceptions</h3>
-
-<table>
-<tr>
- <th>Exception</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiObjectNotFoundException.html">{@code com.android.uiautomator.core.UiObjectNotFoundException}</a></nobr></td>
-<td>Indicates when a a <a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code UiSelector}</a> could not be matched to any UI element displayed.</td>
-</tr>
-
-</table>
-
-
-
-
-
-
diff --git a/docs/html/tools/help/vector-asset-studio.jd b/docs/html/tools/help/vector-asset-studio.jd
deleted file mode 100644
index bdf46eb..0000000
--- a/docs/html/tools/help/vector-asset-studio.jd
+++ /dev/null
@@ -1,620 +0,0 @@
-page.title=Vector Asset Studio
-parent.title=Tools
-parent.link=index.html
-page.tags=vector
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>In this document</h2>
-<ol>
- <li><a href="#about">About Vector Asset Studio</a></li>
- <li><a href="#running">Running Vector Asset Studio</a></li>
- <li><a href="#importing">Importing a Vector Graphic</a></li>
- <li><a href="#layout">Adding a Vector Drawable to a Layout</a></li>
- <li><a href="#referring">Referring to a Vector Drawable in Code</a></li>
- <li><a href="#code">Modifying XML Code Generated by Vector Asset Studio</a></li>
- <li><a href="#delete">Deleting a Vector Asset from a Project</a></li>
- <li><a href="#apk">Delivering an App Containing Vector Drawables</a></li>
-</ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Create Vector Drawables</a></li>
- <li><a href="https://www.google.com/design/icons" class="external-link">Material Icons</a></li>
- <li><a href="{@docRoot}reference/android/graphics/drawable/Drawable.html">Drawable Class</a></li>
- <li><a href="{@docRoot}reference/android/graphics/drawable/VectorDrawable.html">VectorDrawable Class</a></li>
- <li><a href="https://android-developers.blogspot.com/2016/02/android-support-library-232.html" class="external-link">Android Support Library 23.2</a></li>
- </ol>
-
- <h2>Videos</h2>
- <ol>
- <li><a href="http://www.youtube.com/watch?t=126&v=wlFVIIstKmA" class="external-link">DevBytes: Android Vector Graphics</a></li>
- <li><a href="http://www.youtube.com/watch?v=8e3I-PYJNHg" class="external-link">Android Studio Support for Vector Graphics</a></li>
- </ol>
-
- <h2>Dependencies and Prerequisites</h2>
- <ul>
- <li><a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a> 1.5.0 or higher</li>
- </ul>
-
-</div>
-</div>
-
-<p>Vector Asset Studio helps you add material icons
-and import Scalable Vector Graphic (SVG) files into your app project as a drawable resource.
-Compared to raster images, vector drawables can reduce the size of your app and be resized without
-loss of image quality. They help you to more easily support different Android devices with varying
-screen sizes and resolutions because you can display one vector drawable on all of them. </p>
-
-<h2 id="about">About Vector Asset Studio</h2>
-
-<p>Vector Asset Studio adds a vector graphic to the project as an XML file that describes the image.
-Maintaining one XML file can be easier than updating multiple raster graphics at various
-resolutions.</p>
-
-<p>Android 4.4 (API level 20) and lower doesn't support vector drawables. If
-your minimum API level is set at one of these API levels, you have two options
-when using Vector Asset Studio:
-generate Portable Network Graphic (PNG) files (the default) or use the Support
-Library.</p>
-
-<p>For backward-compatibility, Vector Asset Studio generates
-raster images of the vector drawable. The vector and raster drawables are
-packaged together in the APK. You can refer to vector assets as
-{@link android.graphics.drawable.Drawable} in Java code or
-<code>@drawable</code> in XML code; when your app runs, the corresponding vector
-or raster image displays automatically depending on the API level.</p>
-
-<p>To instead use Android Support Library 23.2 or higher, you must add
-some statements to your <code>build.gradle</code> file. This technique uses
-vector drawables only.</p>
-
-
-
-<h3 id="types">Supported vector graphic types</h3>
-
-<p>The Google material design specification provides <a href="http://www.google.com/design/icons" class="external-link">material icons</a>
-that you can use in your Android apps. Vector
-Asset Studio helps you choose, import, and size material icons, as well as
-define opacity and the
-Right-to-Left (RTL) mirroring setting.</p>
-
-<p>Vector Asset Studio also helps you to import your own SVG files. SVG is an XML-based open
-standard of the World Wide Web Consortium (W3C). Vector Asset Studio supports the essential
-standard, but not all features. When you specify an SVG file, Vector Asset Studio gives immediate
-feedback about whether the graphics code is supported or not. If the SVG code is supported, it
-converts the file into an XML file containing {@link
-android.graphics.drawable.VectorDrawable} code.</p>
-
-<p>For Android 5.0 (API level 21) and higher, you can use the {@link
-android.graphics.drawable.AnimatedVectorDrawable} class to animate the properties of {@link
-android.graphics.drawable.VectorDrawable}. For more information, see
-<a href="{@docRoot}training/material/animations.html#AnimVector">Animating Vector Drawables</a>.</p>
-
-<h3 id="when">Considerations for SVG files</h3>
-
-<p>A vector drawable is appropriate for simple icons. The
-<a href="http://www.google.com/design/icons" class="external-link">material icons</a> provide good
-examples of the types
-of images that work well as vector drawables in an app. In contrast, many app launch icons do have
-many details, so they work better as raster images.</p>
-
-<p>The initial loading of a vector graphic can cost more CPU cycles than the corresponding raster
-image. Afterward, memory use and performance are similar between the two. We recommend that you
-limit a vector image to a maximum of 200 x 200 dp; otherwise, it can take too long to draw.</p>
-
-<p>Although vector drawables do support one or more colors, in many cases it makes sense to color
-icons black (<code>android:fillColor="#FF000000"</code>). Using this approach, you can add a
-<a href="{@docRoot}training/material/drawables.html#DrawableTint">tint</a> to the vector drawable
-that you placed in a layout, and the icon color changes to the tint color. If the icon color
-isn't black, the icon color might instead blend with the tint color.</p>
-
-<h3 id="apilevel">Vector drawable backward-compatibility solutions</h3>
-
-<p>The following table summarizes the two techniques you can use for
-backward-compatibility with Android 4.4 (API level 20) and lower:</p>
-
-
-<table>
- <tr>
- <th scope="col">Technique</th>
- <th scope="col">Drawables in APK</th>
- <th scope="col">VectorDrawable XML Elements</th>
- <th scope="col">Android Plugin for Gradle</th>
- <th scope="col">Build Flags</th>
- <th scope="col">App Code</th>
- </tr>
-
- <tr>
- <td><strong>PNG generation</strong></td>
- <td>Vector and raster</td>
- <td><a href="#apilevel">Subset supported</a></td>
- <td>1.5.0 or higher</td>
- <td>Default</td>
- <td>Variety of coding techniques supported</td>
- </tr>
- <tr>
- <td><strong>Support Library 23.2 or higher</strong></td>
- <td>Vector</td>
- <td>Full support</td>
- <td>2.0 or higher</td>
- <td>Support Library statements required</td>
- <td><a href="https://android-developers.blogspot.com/2016/02/android-support-library-232.html" class="external-link">Subset of coding techniques supported</a></td>
- </tr>
-
-</table>
-
-<p>Using vector graphics can produce a smaller APK, but the initial loading
-of vector graphics can take longer.</p>
-
-<h4 id="pngoption">PNG generation</h4>
-
-<p>Android 5.0 (API level 21) and higher provides vector drawable support. If your app has a
-minimum API level that is lower, Vector Asset Studio adds the vector drawable file to your
-project; also, at build time, Gradle creates PNG raster images at various
-resolutions. Gradle generates the PNG densities specified by the Domain Specific Language (DSL)
-<a href="http://google.github.io/android-gradle-dsl/1.4/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:generatedDensities" class="external-link">generatedDensities</a> property
-in a <code>build.gradle</code> file. To generate PNGs, the build system requires Android
-Plugin for Gradle 1.5.0 or higher.</p>
-
-<p>For Android 5.0 (API level 21) and higher, Vector Asset Studio supports all of the {@link
-android.graphics.drawable.VectorDrawable} elements. For backward compatibility with Android 4.4 (API
-level 20) and lower, Vector Asset Studio supports the following XML elements:</p>
-
-<div class="wrap">
- <div class="cols">
- <div class="col-1of3">
-
-<p><code><vector></code></p>
-<ul>
- <li><code>android:width</code></li>
- <li><code>android:height</code></li>
- <li><code>android:viewportWidth</code></li>
- <li><code>android:viewportHeight</code></li>
- <li><code>android:alpha</code></li>
-</ul>
-
-</div>
-
-<div class="col-1of3">
-
-<p><code><group></code></p>
-<ul>
- <li><code>android:rotation</code></li>
- <li><code>android:pivotX</code></li>
- <li><code>android:pivotY</code></li>
- <li><code>android:scaleX</code></li>
- <li><code>android:scaleY</code></li>
- <li><code>android:translateX</code></li>
- <li><code>android:translateY</code></li>
-</ul>
-
-</div>
-
-
-<div class="col-1of3">
-
-<p><code><path></code></p>
-<ul>
- <li><code>android:pathData</code></li>
- <li><code>android:fillColor</code></li>
- <li><code>android:strokeColor</code></li>
- <li><code>android:strokeWidth</code></li>
- <li><code>android:strokeAlpha</code></li>
- <li><code>android:fillAlpha</code></li>
- <li><code>android:strokeLineCap</code></li>
- <li><code>android:strokeLineJoin</code></li>
- <li><code>android:strokeMiterLimit</code></li>
-</ul>
-
-</div>
-
-</div>
-</div>
-
-<p>Only Android 5.0 (API level 21) and higher supports dynamic attributes, for example, <code>android:fillColor="?android:attr/colorControlNormal"</code>.</p>
-
-<p>You can change the XML code that Vector Asset Studio generates, although it’s not a best practice.
-Changing the values in the code should not cause any issues, as long as they’re valid and static. If
-you want to add XML elements, you need to make sure that they’re supported based on your minimum API
-level.</p>
-
-<h4 id="sloption">Support Library</h4>
-
-<p>This technique requires Android Support Library 23.2 or higher and Android
-Plugin for Gradle 2.0 or higher, and uses vector drawables only. Before using
-Vector Asset Studio, you must add a statement to your
-<code>build.gradle</code> file:</p>
-
-<pre>
-android {
- defaultConfig {
- vectorDrawables.useSupportLibrary = true
- }
-}
-
-dependencies {
- compile 'com.android.support:appcompat-v7:23.2.0'
-}
- </pre>
-
- <p>You must also use coding techniques that are compatible with the Support
- Library. For more information, see
- <a href="https://android-developers.blogspot.com/2016/02/android-support-library-232.html"
- class="external-link">Android Support Library 23.2</a>.</p>
-
-<h2 id="running">Running Vector Asset Studio</h2>
-
-<p>To start Vector Asset Studio:</p>
-
-<ol>
- <li>In Android Studio, open an Android app project.</li>
- <li>In the <em>Project</em> window, select the
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
- <li>Right-click the <strong>res</strong> folder and select <strong>New</strong> >
- <strong>Vector Asset</strong>.</li>
- <p>Some other project views and folders have this menu item as well.</p>
- <p>Vector Asset Studio appears.</p>
- <img src="{@docRoot}images/tools/vas-materialicon.png" />
- <li>If a <em>Need newer Android plugin for Gradle</em> dialog appears instead, correct
- your Gradle version as follows:</li>
- <ol type="a">
- <li>Select <strong>File</strong> > <strong>Project Structure</strong>.</li>
- <li>In the <em>Project Structure</em> dialog, select <strong>Project</strong>.</li>
- <li>In the <strong>Android Plugin Version</strong> field, change the Android Plugin for Gradle
- version to <strong>1.5.0</strong> or higher, and click <strong>OK</strong>.</li>
- <p>Gradle syncs the project.</p>
- <li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
- of the <em>Project</em> window, right-click the <strong>res</strong> folder and select
- <strong>New</strong> > <strong>Vector Asset</strong>.</li>
- <p>Vector Asset Studio appears.</p>
- </ol>
- <li>Continue with <a href="#importing">Importing a Vector Graphic</a>.</li>
-</ol>
-
-<h2 id="importing">Importing a Vector Graphic</h2>
-
-<p>Vector Asset Studio helps you to import a vector graphics file into your app project. Follow one
- of the following procedures:</p>
-<ul>
- <li><a href="#materialicon">Adding a material icon</a></li>
- <li><a href="#svg">Importing an SVG file</a></li>
-</ul>
-
-<h3 id="materialicon">Adding a material icon</h3>
-
-<p>After you <a href="#running">open Vector Asset Studio</a>, you can add a material icon as
-follows:</p>
-
-<ol>
- <li>In Vector Asset Studio, select <strong>Material Icon</strong>.</li>
- <li>Click <strong>Choose</strong>.</li>
- <li>Select a material icon and click <strong>OK</strong>.</li>
- <p>The icon appears in the <strong>Vector Drawable Preview</strong>.</p>
- <li>Optionally change the resource name, size, opacity, and Right-To-Left (RTL) mirroring setting:
- <ul>
- <li><strong>Resource name</strong> - Type a new name if you don’t want to use the default name.
- Vector Asset Studio automatically creates a unique name (adds a number to the end of the name)
- if that resource name already exists in the project. The name can contain lowercase
- characters, underscores, and digits only.</li>
- <li><strong>Override default size from material design</strong> - Select this option if you
- want to adjust the size of the image. When you type a new size, the change appears in the
- preview area.</li>
- <p>The default is 24 x 24 dp, which is defined in the
- <a href="http://www.google.com/design/icons" class="external-link">material design</a>
- specification. Deselect the checkbox to return to the default.</p>
- <li><strong>Opacity</strong> - Use the slider to adjust the opacity of the image. The change
- appears in the preview area.</li>
- <li><strong>Enable auto mirroring for RTL layout</strong> - Select this option if you want a
- mirror image to display when the layout is right to left, instead of left to right. For
- example, some languages are read right to left; if you have an arrow icon, you might want to
- display a mirror image of it in this case. Note that if you’re working with an older project,
- you might also
- need to add <code>android:supportsRtl="true"</code> to your app manifest. Auto-mirroring is
- supported on Android 5.0 (API level 21) and higher, and the Support Library.</li>
- </ul>
- <li>Click <strong>Next</strong>.</li>
- <li>Optionally change the module and resource directory:</li>
- <ul>
- <li><strong>Target Module</strong> - Select a module in the project where you want to add the
- resource. For more information, see
- <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">Creating an Android Module</a>.</li>
- <li><strong>Res Directory</strong> - Select the resource source set where you want to add the
- vector asset: <code>src/main/res</code>, <code>src/debug/res</code>,
- <code>src/release/res</code>,
- or a user-defined source set. The main source set applies to all build variants, including
- debug and release. The debug and release source sets override the main source set and apply
- to one version of a build. The debug source set is for debugging only. To define a new source
- set, select <strong>File</strong> > <strong>Project Structure</strong> > <strong>app</strong> >
- <strong>Build Types</strong>. For example, you could define a beta source set and create a
- version of an icon that includes the text "BETA” in the bottom right corner.
- For more information, see
- <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Working with Build Variants</a>.</li>
- </ul>
- <p>The <strong>Output Directories</strong> area displays the vector image and the directory
- where it will appear.</p>
- <li>Click <strong>Finish</strong>.</li>
- <p>Vector Asset Studio adds an XML file defining the vector drawable to the project in the
- <code>app/src/main/res/drawable/</code> folder. From the
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of the
- <em>Project</em>
- window, you can view the generated vector XML file in the <strong>drawable</strong> folder.</p>
- <li>Build the project.</li>
- <p>If the minimum API level is Android 4.4 (API level 20) and lower, and you
- haven't enabled the Support Library technique, Vector Asset Studio generates
- PNG files. From the
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a>
- of the <em>Project</em> window, you can view the generated PNG and XML files in the
- <code>app/build/generated/res/pngs/debug/</code> folder.</p>
- <p>You should not edit these generated raster files, but instead work with the vector XML file.
- The
- build system regenerates the raster files automatically when needed so you don’t need to maintain
- them.</p>
-</ol>
-
-<h3 id="svg">Importing a Scalable Vector Graphic (SVG)</h3>
-
-<p>After you <a href="#running">open Vector Asset Studio</a>, you can import an SVG file as
-follows:</p>
-
-<ol>
- <li>In Vector Asset Studio, select <strong>Local SVG file</strong>.</li>
- <p>The file must be on a local drive. If it’s located on the network, for example, you need to
- download it to a local drive first.</p>
- <li>Specify an <strong>Image file</strong> by clicking <strong>…</strong> .</li>
- <p>The image appears in the <strong>Vector Drawable Preview</strong>.</p>
- <p>However, if the SVG file contains unsupported features, an error appears at the bottom left of
- Vector Asset Studio, as shown in the following figure.</p>
- <img src="{@docRoot}images/tools/vas-svgerror.png" />
- <p>In this case, you can’t use Vector Asset Studio to add the graphics file. Click
- <strong>More</strong> to view the errors. For a list of supported elements, see
- <a href="#apilevel">Vector Drawable Support at Different API Levels</a>.</p>
- <li>Optionally change the resource name, size, opacity, and Right-To-Left (RTL) mirroring
- setting:</li>
- <ul>
- <li><strong>Resource name</strong> - Type a new name if you don’t want to use the default
- name. Vector Asset Studio automatically creates a unique name (adds a number to the end of the
- name) if that resource name already exists in the project. The name can contain lowercase
- characters, underscores, and digits only.</li>
- <li><strong>Override default size from material design</strong> - Select this option if you
- want to adjust the size of the image. After you select it, the size changes to the size of the
- image itself. Whenever you change the size, the change appears in the preview area.</li>
- <p>The default is 24 x 24 dp, which is defined in the
- <a href="http://www.google.com/design/icons" class="external-link">material design</a>
- specification. Deselect the checkbox to return to the default.</p>
- <li><strong>Opacity</strong> - Use the slider to adjust the opacity of the image. The change
- appears in the preview area.</li>
- <li><strong>Enable auto mirroring for RTL layout</strong> - Select this option if you want a
- mirror image to display when the layout is right to left, instead of left to right. For
- example, some languages are read right to left; if you have an arrow icon, you might want to
- display a mirror image of it in this case. Note that if you’re working with an older project,
- you might
- need to add <code>android:supportsRtl="true"</code> to your app manifest. Auto-mirroring is
- supported on Android 5.0 (API level 21) and higher, and the Support Library.</li>
- </ul>
- <li>Click <strong>Next</strong>.</li>
- <li>Optionally change the module and resource directory:</li>
- <ul>
- <li><strong>Target Module</strong> - Select a module in the project where you want to add the
- resource. For more information, see
- <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">Creating an Android Module</a>.</li>
- <li><strong>Res Directory</strong> - Select the resource source set where you want to add the
- vector asset: <code>src/main/res</code>, <code>src/debug/res</code>, <code>src/release/res</code>,
- or a user-defined source set. The main source set applies to all build variants, including
- debug and release. The debug and release source sets override the main source set and apply
- to one version of a build. The debug source set is for debugging only. To define a new source
- set, select <strong>File</strong> > <strong>Project Structure</strong> > <strong>app</strong> >
- <strong>Build Types</strong>. For example, you could define a beta source set and create a
- version of an icon that includes the text "BETA” in the bottom right corner.
- For more information, see
- <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Working with Build Variants</a>.</li>
- </ul>
- <p>The <strong>Output Directories</strong> area displays the vector image and the directory
- where it will appear.</p>
- <li>Click <strong>Finish</strong>.</li>
- <p>Vector Asset Studio adds an XML file defining the vector drawable to the project in the
- <code>app/src/main/res/drawable/</code> folder. From the
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of the
- <em>Project</em>
- window, you can view the generated vector XML file in the <strong>drawable</strong> folder.</p>
- <li>Build the project.</li>
- <p>If the minimum API level is Android 4.4 (API level 20) and lower, and you
- haven't enabled the Support Library technique, Vector Asset Studio generates
- PNG files. From the
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a>
- of the <em>Project</em> window, you can view the generated PNG and XML files in the
- <code>app/build/generated/res/pngs/debug/</code> folder.</p>
- <p>You should not edit these generated raster files, but instead work with the vector XML file.
- The
- build system regenerates the raster files automatically when needed so you don’t need to maintain
- them.</p>
-</ol>
-
-<h2 id="layout">Adding a Vector Drawable to a Layout</h2>
-
-<p>In a layout file, you can set any icon-related widget, such as {@link android.widget.ImageButton},
-{@link android.widget.ImageView}, and so on, to point to a vector asset. For example, the following
-layout shows a vector asset displayed on a button:</p>
-
-<img src="{@docRoot}images/tools/vas-layout.png" />
-
-<p>To display a vector asset on a widget, as shown in the figure:</p>
-
-<ol>
- <li>Open a project and <a href="#running">import a vector asset</a>.</li>
- <li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of
- the <em>Project</em> window, double-click a layout XML file, such as
- <code>content_main.xml</code>.</li>
- <li>Click the <strong>Design</strong> tab to display the
- <a href="{@docRoot}sdk/installing/studio-layout.html">Layout Editor</a>.</li>
- <li>Drag the {@link
-android.widget.ImageButton} widget from the <em>Palette</em> window onto the Layout Editor.</li>
- <li>In the <em>Properties</em> window, locate the <strong>src</strong> property of the
- <code>ImageButton</code> instance and click <strong>…</strong> .</li>
- <li>In the <em>Resources</em> dialog, select the <strong>Project</strong> tab, navigate to the
- <strong>Drawable</strong> folder, and select a vector asset. Click <strong>OK</strong>.</li>
- <p>The vector asset appears on the <code>ImageButton</code> in the layout.</p>
- <li>To change the color of the image to the accent color defined in the theme, locate the
- <strong>tint</strong> property in the <em>Properties</em> window and click <strong>…</strong> .
- </li>
- <li>In the <em>Resources</em> dialog, select the <strong>Project</strong> tab, navigate to the
- <strong>Color</strong> folder, and select <strong>colorAccent</strong>. Click <strong>OK</strong>.
- </li>
- <p>The color of the image changes to the accent color in the layout.</p>
-</ol>
-
-<p>If you're not using the Support Library technique, the
-<code>ImageButton</code> code should be similar to the following:</p>
-
-<pre>
-<ImageButton
- android:id="@+id/imageButton"
- android:src="@drawable/ic_build_24dp"
- android:tint="@color/colorAccent"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/textView2"
- android:layout_marginTop="168dp" />
-</pre>
-
-<h2 id="referring">Referring to a Vector Drawable in Code</h2>
-
-<p>You can normally refer to a vector drawable resource in a generic way in your code, and when
-your app runs, the corresponding vector or raster image displays automatically depending on the API
-level:</p>
-
-<ul>
- <li>In most cases, you can refer to vector assets as <code>@drawable</code> in XML code or
- {@link android.graphics.drawable.Drawable} in Java code. </li>
- <p>For example, the following layout XML code applies the image to a view:</p>
-<pre>
-<ImageView
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:src="@drawable/myimage" />
-</pre>
- <p>The following Java code retrieves the image as a {@link android.graphics.drawable.Drawable}:</p>
-<pre>
-Resources res = {@link android.content.Context#getResources()};
-Drawable drawable = res.{@link android.content.res.Resources#getDrawable(int) getDrawable}(R.drawable.myimage);
-</pre>
- <li>Occasionally, you might need to typecast the drawable resource to its exact class, such as
- when you need to use specific features of the {@link android.graphics.drawable.VectorDrawable}
- class. To do so, you could use Java code such as the following:</li>
-<pre>
-if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- VectorDrawable vectorDrawable = (VectorDrawable) drawable;
-} else {
- BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
-}
-</pre>
-</ul>
-
-<p>For the Support Library technique, you must use coding techniques that are
-compatible with the Support Library. For more information, see
- <a href="https://android-developers.blogspot.com/2016/02/android-support-library-232.html"
- class="external-link">Android Support Library 23.2</a>.</p>
-
-
-<h2 id="code">Modifying XML Code Generated by Vector Asset Studio</h2>
-
-<p>You can modify the vector asset XML code, but not the PNGs and corresponding XML code generated
-at build time. However, we don't recommended it.</p>
-
-<p>When using the PNG generation technique, Vector Asset Studio makes sure that the vector
-drawable and the PNGs match, and that the manifest contains the proper code. If you add code that's
-<a href="#apilevel">not supported</a> on Android 4.4 (API level 20) and lower, your vector and PNG
-images might differ. You also need to make sure that the manifest contains the code to support your
-changes.</p>
-
-<p>To modify the vector XML file when you're not using the Support Library
-technique:</p>
-
-<ol>
- <li>In the <em>Project</em> window, double-click the generated vector XML file in the
- <strong>drawable</strong> folder.</li>
- <p>The XML file appears in the editor and <em>Preview</em> windows.</p>
-
- <img src="{@docRoot}images/tools/vas-codepreview.png" />
-
- <li>Edit the XML code based on what’s supported by the minimum API level:</li>
- <ul>
- <li>Android 5.0 (API level 21) and higher - Vector Asset Studio supports all of the
- {@link android.graphics.drawable.Drawable} and
- {@link android.graphics.drawable.VectorDrawable} elements. You can add XML elements and
- change values.</li>
- <li>Android 4.4 (API level 20) and lower - Vector Asset Studio supports all of the
- {@link android.graphics.drawable.Drawable} elements and a subset of the
- {@link android.graphics.drawable.VectorDrawable} elements. See
- <a href="#apilevel">Support at Different API Levels</a> for a list. You can change values in
- the generated code and add XML elements that are supported. Dynamic attributes aren't
- supported.</li>
- </ul>
- <p>For example, if you didn’t select the RTL option in Vector Asset Studio but realize you now
- need it, you can add the
- <a href="{@docRoot}reference/android/R.attr.html#autoMirrored">autoMirrored</a>
- attribute later. To view the RTL version, select <strong>Preview Right-to-Left Layout</strong> in
- the <img src="{@docRoot}images/tools/vas-rtlmenu.png" style="vertical-align:sub;margin:0;height:17px" alt="" />
- menu of the <em>Preview</em> window. (Select <strong>None</strong> to remove the RTL preview.)</p>
-<img src="{@docRoot}images/tools/vas-rtl.png" />
- <p class="note"><strong>Note:</strong> If you’re working with an older project, you might need to
- add <code>android:supportsRtl="true"</code> to your app manifest. Also, because
- <code>autoMirrored</code> is a dynamic attribute, it's supported on Android 5.0 (API level 21) and
- higher only.</p>
- <li>Build the project and check that the vector and raster images look the same.</li>
- <p>Remember that the generated PNGs could display differently in the <em>Preview</em> window than
- in the app due to different rendering engines and any changes made to the vector drawable before a
- build. If you add code to the vector XML file created by Vector Asset Studio, any features
- unsupported in Android 4.4 (API level 20) and lower don't appear in the generated PNG files. As a
- result, when you add code, you should always check that the generated PNGs match the vector
- drawable. To do so, you could double-click the PNG in the
- <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a> of the
- <em>Project</em>
- window; the left margin of the code editor also displays the PNG image when your code refers to
- the drawable.</p>
- <img src="{@docRoot}images/tools/vas-imageincode.png" />
-</ol>
-
-
-<h2 id="delete">Deleting a Vector Asset from a Project</h2>
-
-<p>To remove a vector asset from a project:</p>
-
-<ol>
- <li>In the <em>Project</em> window, delete the generated vector XML file by selecting the file and
- pressing the <strong>Delete</strong> key (or select <strong>Edit</strong> >
- <strong>Delete</strong>).</li>
- <p>The <em>Safe Delete</em> dialog appears.</p>
- <li>Optionally select options to find where the file is used in the project, and click
- <strong>OK</strong>.</li>
- <p>Android Studio deletes the file from the project and the drive. However, if you chose to search
- for places in the project where the file is used and some usages are found, you can view them and
- decide whether to delete the file.</p>
- <li>Select <strong>Build</strong> > <strong>Clean Project</strong>.</li>
- <p>Any auto-generated PNG and XML files corresponding to the deleted vector
- asset are removed from the project and the drive.</p>
-</ol>
-
-<h2 id="apk">Delivering an App Containing Vector Drawables</h2>
-
-<p>If you used the Support Library technique or your minimum API level is
-Android 5.0 (API level 21) or higher, your APK will contain the vector images
-that you added with Vector Asset Studio.
-These APKs will be smaller than if the vector images were converted to PNGs.
-</p>
-
-
-<p>When your minimum API level includes Android 4.4 (API level 20) or lower,
- and you have corresponding vector and raster images in your project,
- you have two options for delivering your APK files:</p>
-
-<ul>
- <li>Create one APK that includes both the vector images and the corresponding
- raster representations. This solution is the simplest to implement.</li>
- <li>Create separate APKs for different API levels. When you don’t include the
- corresponding raster images in the APK for Android 5.0 (API level 21) and
- higher, the APK can be much smaller in size. For more information, see
- <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a>.
- </li>
-</ul>
diff --git a/docs/html/tools/help/zipalign.jd b/docs/html/tools/help/zipalign.jd
deleted file mode 100755
index ed82b27..0000000
--- a/docs/html/tools/help/zipalign.jd
+++ /dev/null
@@ -1,67 +0,0 @@
-page.title=zipalign
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>zipalign is an archive alignment tool that provides important
-optimization to Android application (.apk) files.
-The purpose is to ensure that all uncompressed data starts
-with a particular alignment relative to the start of the file. Specifically,
-it causes all uncompressed data within the .apk, such as images or raw files,
-to be aligned on 4-byte boundaries. This
-allows all portions to be accessed directly with {@code mmap()} even if they
-contain binary data with alignment restrictions.
-The benefit is a reduction in the amount of RAM consumed
-when running the application.</p>
-
-<p>This tool should always be used to align your .apk file before
-distributing it to end-users. The Android build tools can handle
-this for you. Android Studio automatically aligns your .apk after it signs it with your
-private key.
-The build scripts used
-when compiling your application with Gradle also align your .apk,
-as long as you have provided the path to your keystore and the key alias in
-your project {@code gradle.properties} file, so that the build tools
-can sign the package first.</p>
-
-<p class="caution"><strong>Caution:</strong> zipalign must only be performed
-<strong>after</strong> the .apk file has been signed with your private key.
-If you perform zipalign before signing, then the signing procedure will undo
-the alignment. Also, do not make alterations to the aligned package.
-Alterations to the archive, such as renaming or deleting entries, will
-potentially disrupt the alignment of the modified entry and all later
-entries. And any files added to an "aligned" archive will not be aligned.</p>
-
-<p>The adjustment is made by altering the size of
-the "extra" field in the zip Local File Header sections. Existing data
-in the "extra" fields may be altered by this process.</p>
-
-<p>For more information about how to use zipalign when building your
-application, please read <a href="{@docRoot}tools/publishing/app-signing.html">Signing
-Your Application</a>.</p>
-
-
-<h3>Usage</h3>
-
-<p>To align {@code infile.apk} and save it as {@code outfile.apk}:</p>
-
-<pre>zipalign [-f] [-v] <alignment> infile.apk outfile.apk</pre>
-
-<p>To confirm the alignment of {@code existing.apk}:</p>
-
-<pre>zipalign -c -v <alignment> existing.apk</pre>
-
-<p>The {@code <alignment>} is an integer that defines the byte-alignment boundaries.
-This must always be 4 (which provides 32-bit alignment) or else it effectively
-does nothing.</p>
-
-<p>Flags:</p>
-
-<ul>
- <li>{@code -f} : overwrite existing outfile.zip</li>
- <li>{@code -v} : verbose output</li>
- <li>{@code -c} : confirm the alignment of the given file</li>
-</ul>
-
-
-
diff --git a/docs/html/tools/performance/allocation-tracker/index.jd b/docs/html/tools/performance/allocation-tracker/index.jd
deleted file mode 100644
index d68f601..0000000
--- a/docs/html/tools/performance/allocation-tracker/index.jd
+++ /dev/null
@@ -1,153 +0,0 @@
-page.title=Allocation Tracker Walkthrough
-meta.tags="android, performance, profiling, tools, memoryleaks, memoryheap"
-page.tags="android", "performance", "profiling", "tools", "memoryleaks", "memoryheap"
-page.metaDescription=Record you app's memory allocations with their call stack to identify code that allocates and frees objects unnecessarily.
-page.image=tools/performance/thumbnails/tools_allocation_tracker.png
-page.article=true
-
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#WorkingWithAllocationTracker">Working with Allocation Tracker</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
- Heap Viewer Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
- Memory Monitor Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/comparison.html">
- Comparison: Memory Monitor, Heap Viewer, Allocation Tracker</a>
- <li><a href="{@docRoot}tools/performance/traceview/index.html">
- Traceview Walkthrough</a></li>
-</ul>
-
-</div>
-
-
- <p>This walkthrough shows the basic usage and workflow for the Allocation Tracker tool in Android
- Studio. Allocation Tracker records an app's memory allocations and lists all
- allocated objects for the profiling cycle with their call stack, size, and allocating code.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Identifying where many similar object types, from roughly the same call stack, are
- allocated and deallocated over a very short period of time.</li>
-
- <li>Finding the places in your code that may contribute to inefficient memory use.</li>
- </ul>
-
- <p>Before using Allocation Tracker, profile your code with the
- <a href="{@docRoot}tools/performance/memory-monitor/index.html">Memory
- Monitor Tool</a>. If you see many garbage collection events in a short amount of time, use
- <a href="{@docRoot}tools/performance/heap-viewer/index.html">Heap
- Viewer</a> to identify candidate object types, and Allocation Tracker to determine where this is
- happening in your code.</p>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>A mobile device with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- enabled.</li>
-
- <li>Application code. Use your own code, or the <a href=
- "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
- "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
- </ul>
-
- <h2 id="WorkingWithAllocationTracker">Working with Allocation Tracker</h2>
-
- <p>Allocation Tracker records each memory allocation that your app performs during the profiling
- cycle. You tell Allocation Tracker to start recording and it logs allocations
- until you tell it to stop.</p>
-
-<hr>
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image01.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Steps for starting Allocation Tracker in Android DDMS.
- </p>
- </div>
-
- <li>Connect your mobile device to your computer.</li>
-
- <li>Open your application in Android Studio, build the source, and run it on your device or
- emulator.</li>
-
- <li>Click the <b>Android</b> button at the bottom of your Android Studio window.</li>
-
- <li>If you are using the Android Device Monitor, click the RECORD button
- <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image02.png">
- (Start Allocation Tracking tooltip) in the Android DDMS tool bar. If you are using Android
- Studio, click the
- <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image02.png">
- icon in the <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> tool
- bar. </li>
-
- <li>Interact with your application.</li>
-
- <li>Click the (same) STOP button (Stop Allocation Tracking tooltip).</li>
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="7">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image03.png"
- alt=""
- width="440px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Example of Allocation Tracker output in Android DDMS.
- </p>
- </div>
-
- <li>After a few seconds, a pane with your recorded data opens.
-
- <p>Note that allocations are logged on
- the device, and the data file is transferred to the host computer, parsed for information, and
- displayed.</p></li>
-
- <li>The pane populates with a table.
-
- <ul>
- <li>Each row represents a memory allocation event.</li>
-
- <li>Each column represents information about the allocation, such as the object type,
- the thread, and its size. </li>
-
- <li>The columns are movable, resizable, and sortable.</li>
- </ul>
-
- <p>Use the Filter to show only allocations from your app.</li>
-
- <li>Click on an object to see its full stack trace.</li>
- </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/performance/batterystats-battery-historian/charts.jd b/docs/html/tools/performance/batterystats-battery-historian/charts.jd
deleted file mode 100644
index cbe9d85..0000000
--- a/docs/html/tools/performance/batterystats-battery-historian/charts.jd
+++ /dev/null
@@ -1,124 +0,0 @@
-page.title=Battery Historian Charts
-meta.tags="android, performance, profiling, tools, battery, historian, batterydrain
-page.tags="android", performance", "profiling", "tools", "battery", "historian" "batterydrain"
-page.metaDescription=Examine and interpret the collected battery usage data in your browser.
-page.image=tools/performance/thumbnails/tools_battery_historian.png
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#BatteryHistorianCharts">Battery Historian Charts</a></li>
- <li><a href="#FilteringBatterystats">Filtering batterystats output</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/batterystats-battery-historian/index.html">
- Batterystats & Battery Historian Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/systrace/index.html">
- Systrace Walkthrough</a></li>
-</ul>
-
-</div>
-
-
- <p id="BatteryHistorianCharts">
- The Battery Historian chart graphs power-relevant events over time.</p>
-
- <p>Each row shows a colored bar segment when a system component is active
- and thus drawing current from the battery. The chart does <i>not</i> show <i>how much</i> battery was used by the
- component, only that the app was active. Charts are organized by category.</p>
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image02.png"
- alt=""
- height="" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Example of Battery Historian output.
- </p>
- </div>
-
- <h3>Battery usage categories</h3>
-
- <ul>
- <li><b>battery_level</b>: When the battery level was recorded and logged.
- Reported in percent, where 093 is 93%. Provides an overall measure of how fast the battery
- is draining.</li>
-
- <li><b>top</b>: The application running at the top; usually, the application that is visible to
- the user. If you want to measure battery drain while your app is active, make sure
- it's the top app. If you want to measure battery drain while your app is in
- the background, make sure it's <i>not</i> the top app.</li>
-
- <li><b>wifi_running</b>: Shows that the Wi-Fi network connection was active.</li>
-
- <li><b>screen</b>: Screen is turned on.</li>
-
- <li><b>phone_in_call</b>: Recorded when the phone is in a call.</li>
-
- <li><b>wake_lock</b>: App wakes up, grabs a lock, does small work, then goes back to sleep.
- This is one of the most important pieces of information. Waking up the phone is expensive, so
- if you see lots of short bars here, that might be a problem.</li>
-
- <li><b>running</b>: Shows when the CPU is awake. Check whether it is awake and asleep
- when you expect it to be.</li>
-
- <li><b>wake_reason</b>: The last thing that caused the kernel to wake up. If
- it's your app, determine whether it was necessary.</li>
-
- <li><b>mobile_radio</b>: Shows when the radio was on. Starting the radio is battery expensive.
- Many narrow bars close to each other can indicate opportunities for
- batching and other optimizations.</li>
-
- <li><b>gps</b>: Indicates when the GPS was on. Make sure this is what you expect.</li>
-
- <li><b>sync:</b> Shows when an app was syncing with a backend. The sync bar also shows which
- app did the syncing. For users, this can show apps where they might turn syncing off to save
- battery. Developers should sync as little as possible and only as often as necessary.</li>
- </ul>
-
-
- <p class="note"><strong>Note:</strong>
- Not every chart will show every category.</p>
-
- <h2 id="FilteringBatterystats">Filtering batterystats output</h2>
-
- <p>You can gather additional information from the <code>batterystats.txt</code> file
- where you saved the output from the batterystats command.</p>
-
- <div class="figure" style="">
-<img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image03.png"
- alt=""
- width="340px" />
- <p class="img-caption">
- <strong>Figure 2.</strong>Example of filtered batterystats output.
- </p>
- </div>
-
- <p>Open the file in a text editor and search for:</p>
-
- <ol>
- <li><b><code>Battery History</code></b>: A time series of power-relevant events, such as
- screen, Wi-Fi, and app launch. These are also visible through Battery Historian.</li>
-
- <li><b><code>Per-PID Stats</code></b>: How long each process ran.</li>
-
- <li><b><code>Statistics since last charge</code></b>: System-wide statistics, such as
- cell signal levels and screen brightness. Provides an overall picture of what's happening
- with the device. This information is especially useful
- to make sure no external events are affecting your experiment.</li>
-
- <li><b><code>Estimated power use (mAh)</code></b> by UID and peripheral: This is currently an
- extremely rough estimate and should not be considered experiment data.</li>
-
- <li><b><code>Per-app mobile ms per packet</code></b>: Radio-awake-time divided by packets sent.
- An efficient app will transfer all its traffic in batches, so the lower this number the
- better.</li>
-
- <li><b><code>All partial wake locks</code></b>: All app-held wakelocks, by aggregate
- duration and count.</li>
- </ol>
diff --git a/docs/html/tools/performance/batterystats-battery-historian/index.jd b/docs/html/tools/performance/batterystats-battery-historian/index.jd
deleted file mode 100644
index 2072df9..0000000
--- a/docs/html/tools/performance/batterystats-battery-historian/index.jd
+++ /dev/null
@@ -1,129 +0,0 @@
-page.title=Batterystats & Battery Historian Walkthrough
-meta.tags="android, performance, profiling, tools, battery, batterystats, historian, batterydrain
-page.tags="android", "performance", "profiling", "tools", "battery", "batterystats", "historian", "batterydrain"
-page.metaDescription=Collect battery usage data from your device and display it graphically in your browser.
-page.image=tools/performance/thumbnails/tools_battery_historian.png
-page.article=true
-
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/batterystats-battery-historian/charts.html">
- Battery Historian Charts</a></li>
- <li><a href="{@docRoot}tools/performance/systrace/index.html">
- Systrace Walkthrough</a></li>
-</ul>
-
-</div>
-
- <p>This walkthrough shows the basic usage and workflow for the Batterystats tool and the Battery
- Historian script.</p>
-
- <p>Batterystats collects battery data from your device, and Battery Historian converts that data
- into an HTML visualization that you can view in your Browser. Batterystats is part of the Android
- framework, and Battery Historian is open-sourced and available on GitHub at <a href=
- "https://github.com/google/battery-historian">https://github.com/google/battery-historian</a>.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Showing you where and how processes are drawing current from the battery.</li>
-
- <li>Identifying tasks in your app that could be deferred or even removed to improve battery
- life.</li>
- </ul>
-
- <h2>Prerequisites</h2>
-
- <ul>
- <li>A mobile device with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- enabled running Android 5.0 or higher.</li>
- </ul>
-
- <h2>Working with Batterystats & Battery Historian</h2>
-
- <div class="sidebox-wrapper" style="width:400px;">
- <div class="sidebox" style="width:350px;">
- <h2>Summary</h2>
- <code>
- <p><b>https://github.com/google/battery-historian</b></p>
- <p>> adb kill-server</p>
- <p>> adb devices</p>
- <p>> adb shell dumpsys batterystats --reset</p>
- <p><disconnect and play with app>...<reconnect></p>
- <p>> adb devices</p>
- <p>>adb shell dumpsys batterystats > batterystats.txt</p>
- <p>> python historian.py batterystats.txt > batterystats.html</p>
- </code>
- </div>
- </div>
-
- <ol>
-
- <li>Download the open-source Battery Historion Python script from GitHub (<a href=
- "https://github.com/google/battery-historian">https://github.com/google/battery-historian</a>).
- </li>
-
- <li>Unzip the file to extract the Battery Historian folder. Inside the folder,
- find the <code>historian.py</code> file
- and move it to the Desktop or another <em>writable</em> directory.</li>
-
- <li>Connect your mobile device to your computer.</li>
-
- <li>On your computer, open a Terminal window.</li>
-
- <li>Change to the directory where you've saved <code>historian.py</code>,
- <br>for example:
- <code>cd ~/Desktop</code></li>
-
- <li>Shut down your running adb server.
- <br><code>> adb kill-server</code></li>
-
- <li>Restart adb and check for connected devices.
- <br><code>> adb devices</code>
- <br><img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image01.png">
- <br>If you don't see any devices, make sure your phone is connected, and USB Debugging
- is turned on, and then kill and restart adb.</li>
-
- <li>Reset battery data gathering.
- <br><code>> adb shell dumpsys batterystats --reset</code>
- <p>Resetting erases old battery collection data; otherewise, the output will be huge.</p>
- </li>
-
- <li>Disconnect your device from your computer so that you are only drawing current from the
- device's battery.</li>
-
- <li>Play with your app for a short time.</li>
-
- <li>Reconnect your phone.</li>
-
- <li>Make sure your phone is recognized: <code>> adb devices</code></li>
-
- <li>Dump all battery data. This can take a while:
- <br><code>> adb shell dumpsys batterystats > batterystats.txt</code></li>
-
- <li>Create a HTML version of the data dump for Battery Historian:
- <br><code>> python historian.py batterystats.txt > batterystats.html</code></li>
-
- <li>Open the <code>batterystats.htm</code> file in your browser.</li>
-
- <li>Continue with <a href="{@docRoot}tools/performance/batterystats-battery-historian/charts.html">
- Battery Historian Charts</a>.
- </li>
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image02.png"
- alt=""
- <p class="img-caption">
- <strong>Figure 1. </strong>Battery Historian output.
- </p>
- </div>
- </ol>
-
-
-
diff --git a/docs/html/tools/performance/comparison.jd b/docs/html/tools/performance/comparison.jd
deleted file mode 100644
index f79e762..0000000
--- a/docs/html/tools/performance/comparison.jd
+++ /dev/null
@@ -1,134 +0,0 @@
-page.title=Memory Profilers
-meta.tags="android, performance, profiling, tools, memory, memoryleaks, garbagecollection"
-page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "garbagecollection"
-page.metaDescription=Heap Viewer, Memory Monitor, and Allocation Tracker are complementary tools that visualize the memory your app uses.
-page.image=tools/performance/thumbnails/tools_memory_monitor.png
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#MemoryMonitor">Memory Monitor</a></li>
- <li><a href="#HeapViewer">Heap Viewer</a></li>
- <li><a href="#AllocationTracker">Allocation Tracker</a></li>
-
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
- Memory Monitor Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
- Heap Viewer Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
- Allocation Tracker Walkthrough</a></li>
-</ul>
-
-</div>
-
- <p>Heap Viewer, Memory Monitor, and Allocation Tracker are complementary tools that visualize the
- memory your app uses.</p>
-
- <ol>
- <li>Use the
- <a href="{@docRoot}tools/performance/memory-monitor/index.html">
- Memory Monitor Tool</a> to find out whether undesirable garbage collection (GC) event patterns might
- be causing your performance problems.</li>
-
- <li>Run
- <a href="{@docRoot}tools/performance/heap-viewer/index.html">
- Heap Viewer</a> to identify object types that get or stay allocated
- unexpectedely or unecessarily.</li>
-
- <li>Use
- <a href="{@docRoot}tools/performance/allocation-tracker/index.html">
- Allocation Tracker</a> to identify where in your code the problem might be.</li>
- </ol>
-
- <h2 id="MemoryMonitor">Memory Monitor</h2>
-
-<div>
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/compare_MemoryMonitor.png"
- alt=""
- height="" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Memory Monitor.
- </p>
- </div>
-
- <ul>
- <li>Shows available and used memory as they both change over time <i>for your app</i> in a
- graph, with dips indicating Garbage Collection (GC) events.</li>
-
- <li>Provides a quick way to test whether app slowness might be related
- to excessive GC events.</li>
-
- <li>Provides a quick way to see whether app crashes might be related
- to running out of memory.</li>
-
- <li>Runs live on your application and updates about once a second.</li>
-
- <li>Helps quickly identify the potential of memory leaks.</li>
-
- <li>Helps identify GC patterns for your application and determine whether
- they are healthy and what you expect.</li>
-
- <li>Is easy to use, and it is easy to interpret what you see.</li>
-
- <li>However, Memory Monitor does not tell you which objects are the cause
- of your problems, or where in your code it might be.</li>
- </ul>
-
- <h2 id="HeapViewer">Heap Viewer</h2>
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/studio-hprof-viewer.png"
- alt=""
- height="" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Heap Viewer.
- </p>
- </div>
-
-
- <ul>
- <li>Shows snapshots of a number of objects allocated by type.</li>
-
- <li>Samples data every time a garbage collection event occurs
- naturally or triggered by you.</li>
-
- <li>Helps identify which object types might be involved in memory leaks.</li>
-
- <li>However, you have to look for changes over time yourself by tracking what's
- happening in the graph.</li>
- <br><br><br><br>
- </ul>
-
- <h2 id="AllocationTracker">Allocation Tracker</h2>
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/studio-allocation-tracker.png"
- alt=""ge
- height="" />
- <p class="img-caption">
- <strong>Figure 3. </strong>Allocation Tracker.
- </p>
- </div>
-
- <ul>
- <li>Shows when and where your code allocates object types, their size, allocating thread, and
- stack traces.</li>
-
- <li>Helps recognize memory churn through recurring allocation/deallocation patterns.</li>
-
- <li>Can be used in combination with Heap Viewer to track down memory leaks. For example, if you
- see a bitmap object resident on the heap, you can find its allocation location with Allocation
- Tracker.</li>
-
- <li>However, it takes time and experience to learn to interpret the output from this tool.</li>
-
- </ul>
diff --git a/docs/html/tools/performance/debug-gpu-overdraw/index.jd b/docs/html/tools/performance/debug-gpu-overdraw/index.jd
deleted file mode 100644
index e6b85fd..0000000
--- a/docs/html/tools/performance/debug-gpu-overdraw/index.jd
+++ /dev/null
@@ -1,156 +0,0 @@
-page.title=Debug GPU Overdraw Walkthrough
-meta.tags="android, performance, profiling, tools, rendering, overdraw"
-page.tags="android", "performance", "profiling", "tools", "rendering", "overdraw"
-page.metaDescription=Use color-coding to show how many times each pixel is redrawn on the screen to reduce rendering overhead.
-page.image=tools/performance/thumbnails/tools_debug_gpu_overdraw.png
-page.article=true
-
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#VisualizingOverdraw">Visualizing Overdraw</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/profile-gpu-rendering/index.html">
- Profile GPU Rendering Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
- Hierarchy Viewer Walkthrough</a></li>
-</ul>
-
-</div>
-
- <p>This walkthrough shows how to visualize overdraw on your mobile device by color-coding
- interface elements based on how often they are drawn underneath.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Showing where an app might be doing more rendering work than necessary.</li>
-
- <li>Helping you see where you might be able to reduce rendering overhead.</li>
- </ul>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>A mobile device with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- enabled.</li>
- </ul>
-
-
- <h2 id="VisualizingOverdraw">Visualizing Overdraw on your Mobile Device</h2>
-
- <ul class="no-bullet">
- <!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img
- src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image01.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Steps for turning on Debug GPU Overdraw.
- </p>
- </div>
-
- <li>On your mobile device, go to <b>Settings</b> and tap <b>Developer Options</b>.</li>
-
- <li>In the <em>Hardware accelerated rendering</em> section,
- select <b>Debug GPU Overdraw</b>.</li>
-
- <li>In the <b>Debug GPU overdraw</b> popup, select <b>Show overdraw areas</b>.</li>
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="5">
-
- <div class="figure" style="padding-right:100px">
- <img
- src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image02.png"
- alt=""
- width="180px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Example of<br>Debug GPU Overdraw output.
- </p>
- </div>
-
- <li>Don't panic as your screen turns into a delirium of colors.
- The coloring is provided to help you diagnose your app's display behavior.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="6">
-
- <div class="figure" style="">
- <img
- src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image03.png"
- alt=""
- width="300px" />
- <p class="img-caption">
- <strong>Figure 3. </strong>Color key for Debug GPU Overdraw output.
- </p>
- </div>
-
- <br><br>
- <li>The colors are hinting at the amount of overdraw on your screen for each pixel, as
- follows:
-
- <ul>
- <li><b>True color:</b> No overdraw</li>
- <li><b>Blue:</b> Overdrawn once</li>
- <li><b>Green:</b> Overdrawn twice</li>
- <li><b>Pink:</b> Overdrawn three times</li>
- <li><b>Red:</b> Overdrawn four or more times</li>
- </ul>
- </li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="7">
-
- <div class="figure" style="">
- <img
- src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image04.png"
- alt=""
- width="300px" />
- <p class="img-caption">
- <strong>Figure 4. </strong>Examples of undesirable and desirable
- <br>Debug GPU Overdraw output.
- </p>
- </div>
-
- <br><br><br>
- <li>Some overdraw is unavoidable. As you are tuning your app's
- user interface, the goal is to arrive at a visualization that shows mostly true
- colors and 1X overdraw in blue.</li>
-
- </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/performance/heap-viewer/index.jd b/docs/html/tools/performance/heap-viewer/index.jd
deleted file mode 100644
index bfcbe1f..0000000
--- a/docs/html/tools/performance/heap-viewer/index.jd
+++ /dev/null
@@ -1,176 +0,0 @@
-page.title=Heap Viewer Walkthrough
-meta.tags="android, performance, profiling, tools, memory, memoryleaks, memoryheap"
-page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "memoryheap"
-page.metaDescription=Report in real-time how many objects of what types and sizes your application is allocating and find memory leaks.
-page.image=tools/performance/thumbnails/tools_heap_viewer.png
-page.article=true
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#WorkingWithHeapViewer">Working with Heap Viewer</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
- Memory Monitor Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
- Allocation Tracker Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/comparison.html">
- Comparison: Memory Monitor, Heap Viewer, Allocation Tracker</a>
- <li><a href="{@docRoot}tools/performance/traceview/index.html">
- Traceview Walkthrough</a></li>
-</ul>
-
-</div>
-
-
- <p>This walkthrough shows the basic usage and workflow for the Heap Viewer tool. Heap Viewer
- reports in real-time what <i>types</i> of objects your application has allocated, how many, and
- their sizes on the heap.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Getting a sense of how your app allocates and frees memory.</li>
-
- <li>Identifying memory leaks.</li>
- </ul>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>A mobile device running Android 5.0 or higher with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- enabled.</li>
-
- <li>Application code. Use your own code, or the <a href=
- "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
- "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
- </ul>
-
- <h2 id="WorkingWithHeapViewer">Working with Heap Viewer</h2>
-
- <ul class="no-bullet">
- <!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image01.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Starting Memory Monitor.
- </p>
- </div>
-
- <li>Connect your mobile device to your computer.</li>
-
- <li>Open your application in Android Studio, build the source, and run it on your device or
- emulator.</li>
-
- <li>Start the Android Device Monitor from Android Studio: <strong>Tools -> Android
- -> Android Device Monitor</strong>.
-
- <p>You can also start the <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a>
- in Android Studio: Click the <em>Android</em> tab in the lower-left corner of the application
- window. The CPU and Memory Monitor views appear.</p> </li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="4">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image02.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Steps for Using Heap Viewer.
- </p>
- </div>
-
- <li>In the device and application drop-downs, select the app you want to monitor.</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="8">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image03.png"
- alt=""
- width="300px" />
- <p class="img-caption">
- <strong>Figure 3. </strong>Update Heap button.
- </p>
- </div>
-
- <li>To save a heap dump, click the Dump Java Heap icon. The heap snapshot file
- with the filename <code>Snapshot-yyyy.mm.dd-hh.mm.ss.hprof</code> appears in the
- <em>Captures</em> tab.</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="9">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image04.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 4. </strong>Triggering GC (Garbage Collection).
- </p>
- </div>
-
- <li>Note the <em>Heap updates will happen
- after every GC for this client.</em> message.</li>
-
- <li>Click the <strong>Initiate CG</strong> icon to
- trigger a garbage collection event.
- </li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="11">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image05.png"
- alt=""
- width="480px" />
- <p class="img-caption">
- <strong>Figure 5. </strong>Example Heap Viewer output.
- </p>
- </div>
-
- <li>Double-click the heap snapshot file to open the heap viewer and see detailed information
- about the current allocations on the heap.</li>
-
- </ol>
-</div></li>
-
- </ul>
diff --git a/docs/html/tools/performance/hierarchy-viewer/index.jd b/docs/html/tools/performance/hierarchy-viewer/index.jd
deleted file mode 100644
index ebf23e5..0000000
--- a/docs/html/tools/performance/hierarchy-viewer/index.jd
+++ /dev/null
@@ -1,330 +0,0 @@
-page.title=Hierarchy Viewer Walkthrough
-meta.tags="android, performance, profiling, tools, rendering, hierarchyviewer"
-page.tags="android", "performance", "profiling", "tools", "rendering", "hierarchyviewer"
-page.metaDescription=Visualize your app's view hierarchy to help you simplify your layouts.
-page.image=tools/performance/thumbnails/tools_hierarchy_viewer.png
-page.article=true
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#WorkingWithHierarchyViewer">Working with Hierarchy Viewer</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html">
- Device Setup for Hierarchy Viewer</a></li>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/profiling.html">
- Profiling with Hierarchy Viewer</a></li>
- <li><a href=
- "http://developer.android.com/tools/debugging/debugging-ui.html#viewhierarchy">Hierarchy Viewer
- </a></li>
- <li><a href="/guide/topics/ui/overview.html#Layout">View Hierarchies</a></li>
- <li><a href="{@docRoot}tools/performance/importing-legacy-apps.html">
- Importing Legacy Apps into Android Studio<a></li>
- <li><a href="{@docRoot}tools/device.html">Using Hardware Devices</a></li>
-</ul>
-
-</div>
-
- <p>This walkthrough shows the basic usage and workflow for the Hierarchy Viewer tool.</p>
-
- <p>The Hierarchy Viewer tool visualizes your app's <a href=
- "http://developer.android.com/guide/topics/ui/overview.html#Layout">view hierarchy</a> and
- profiles the relative rendering speed for each view.
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Simplifying your view hierarchy to reduce overdraw, and make it easier to manage.</li>
-
- <li>Finding potential rendering performance bottlenecks related to the structure and shape of your
- view hierarchy.</li>
- </ul>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>A mobile device set up to work with Hierarchy Viewer:</li>
-
- <li style="list-style: none; display: inline">
- <ol>
- <li>You must have <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer
- Options</a> enabled on your mobile device. You must use a physical device to get
- accurate measurements.</li>
-
- <li>Set an {@code ANDROID_HVPROTO} environment variable on the desktop machine
- that is connected to your device. For more information, see
- <a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html">Device Setup for Hierarchy Viewer</a>.</li>
- </ol>
- </li>
-
- <li>Debuggable app code with a view hierarchy. Use your own code, or the code for the <a href=
- "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
- "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
- </ul>
-
- <h2 id="WorkingWithHierarchyViewer">Working with Hierarchy Viewer</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image001.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Starting Android Device Monitor.
- </p>
- </div>
-
- <li>Connect your mobile device to your computer.</li>
-
- <li>Open your application in Android Studio, build the source, and run it on your device.</li>
-
- <li>From Android Studio, start the Android Device Monitor: <b>Tools > Android >
- Android Device Monitor</b>.</li>
-
- <li>Allow <b>USB Debugging</b> on your phone (if asked).</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="6">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image005.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Android Device Monitor.
- </p>
- </div>
-
- <li>Figure 2 illustrates what is initially shown in the Device Monitor tool. This varies
- depending on your setup.
- <p>Make sure your device
- and the package for your application are showing in the Devices (DDMS mode) or Windows
- (Hierarchy Viewer mode) tab. You can choose <b>Window > Reset Perspective</b> to get
- back to the default arrangement.</p>
- <p>If the app does not appear, make sure you
- followed the <a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html"> device
- setup instructions</a>, then start over at step 1.</p></li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="7">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image002.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 3. </strong>Changing Perspective to Hierarchy Viewer.
- </p>
- </div>
-
- <li>In Android Device Monitor (ADM), in the menu bar, choose <b>Window > Open
- Perspective</b>, and in the popup click <b>Hierarchy View</b>.<br>
-
- <p>OR</p>
- <p> Click the <b>Hierarchy View</b> button if it's already visible.<br>
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image003.png">
- </p></li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="9">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image006.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 4. </strong>Hierarchy Viewer layout.
- </p>
- </div>
-
- <li>If not already open, the Hierarchy View panes open.<br>
- The example screen in Figure 4 shows an example of these panes.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="10">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image004.png"
- alt=""
- width="240px" />
- <p class="img-caption">
- <strong>Figure 5. </strong>Resetting the Perspective.
- </p>
- </div>
-
- <li>If you see a different window arrangement, in Android Device Manager, use
- <b>Window > Reset Perspective</b> to return to the default layout for this tutorial.
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="11">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image007.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 6. </strong>Populated Hierarchy Viewer.
- </p>
- </div>
-
- <li>Double-click your application in the Windows tab. This populates the panes with the
- view hierarchy of your application.
- This display is a static representation of the complete view hierarchy defined for the
- app.</li>
-
- <li>You can adjust the sizes of the panes and ADM will preserve your
- arrangement in future sessions.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="13">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image008.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 7. </strong>Hierarchy Viewer panes.
- </p>
- </div>
-
- <li>If necessary, click the <b>Layout View</b> tab to hide the Console and show a wireframe of
- your layout. The outline of the currently selected view is red. Click an outline to select
- it.</li>
-
- <li>The rest of the panes:
-
- <ul>
- <li>The <b>Tree Overview</b> in the upper right gives you a bird's-eye view of your
- app's complete <a href=
- "http://developer.android.com/guide/topics/ui/overview.html#Layout">View</a> <a href=
- "http://developer.android.com/guide/topics/ui/overview.html#Layout">Hierarchy</a>.</li>
-
- <li>In the <b>Tree Overview</b>, move the gray viewport rectangle to change what section of
- your hierarchy shows in the <b>Tree View</b> pane (in the center).</li>
-
- <li>In the <b>Tree View</b>, you can drag and zoom the tree using your mouse.</li>
- </ul>
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="15">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image009.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 7. </strong>Parts of the View node display.
- </p>
- </div>
-
- <li>Click on a View node to display details. Here is an annotated close-up of a node
- and its details.</li>
-
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="16">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image010.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 8. </strong>Location of View Properties tab.
- </p>
- </div>
-
- <li>Click the <b>View Properties</b> tab at the top right (next to the Windows tab) to see
- properties of the selected View node.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="17">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image011.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 9. </strong>Rendering a view in a popup.
- </p>
- </div>
-
- <li>Double-click a View node in the Tree View to render it in a popup window.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="18">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image012.png"
- alt=""
- width="240px" />
- <p class="img-caption">
- <strong>Figure 10. </strong>Node with its type and id.
- </p>
- </div>
-
- <li>Nodes in the Tree View show a Type, which indicates the View class,
- and an id, which is the view identifier in your code.</li>
-
- </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/performance/hierarchy-viewer/profiling.jd b/docs/html/tools/performance/hierarchy-viewer/profiling.jd
deleted file mode 100644
index b505228..0000000
--- a/docs/html/tools/performance/hierarchy-viewer/profiling.jd
+++ /dev/null
@@ -1,169 +0,0 @@
-page.title=Profiling with Hierarchy Viewer
-meta.tags="android, performance, profiling, tools, rendering, hierarchyviewer
-page.tags="android", "performance", "profiling", "tools", "rendering", "hierarchyviewer"
-page.metaDescription=Profile the relative rendering speed for each view.
-page.image=tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png
-page.article=true
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#ProfilingWithHierarchyViewer">Profiling with Hierarchy Viewer</a></li>
- <li><a href="#InterpretingResults">Interpreting Profiling Results</a></li>
-
-</ul>
-</div>
-
-<p>This walkthrough shows you how to profile your app's view hiearchy with
- Hierarchy Viewer, and how to interpret the results.</p>
-
-<h2 id="WhatYouNeed">Prerequisites</h2>
-
-<ul>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html">
- Device Setup for Hierarchy Viewer</a></li>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
- Hierarchy Viewer Walkthrough</a></li>
-</ul>
-
-<h2 id="ProfilingWithHierarchyViewer">Profiling Steps</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-
- <ol class="padded">
-
- <div class="figure" style="">
-<img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image014.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>View hierarchy after profiling.
- </p>
- </div>
-
- <li>Start Hierarchy Viewer for your app.</li>
-
- <li>In the <b>Tree View</b> or the <b>Layout View</b>, click on the View node whose
- children you want to profile.</li>
-
- <li>To start profiling, click the small button with three circles
-<img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image013.png">
- at the top of the Tree View.
-
- </li>
-
- <li>For large view hierarchies, profiling may take a few seconds.</li>
-
- <li>Each view in your subtree gets three dots, which can be green, yellow, or red.
-
- <ul>
- <li>The left dot represents the Draw Process of the rendering pipeline.</li>
- <li>The middle dot represents the Layout Phase.</li>
- <li>The right dot represents the Execute Phase.</li>
- </ul>
- </li>
-
-</ol></div>
-
-</li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="5">
-
- <div class="figure" style="">
-<img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image015.png"
- alt=""
- width="240px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>How the colored dots relate<br>to the rendering pipeline.
- </p>
- </div>
-
- <li>These dots roughly correspond to the Measure,
- Layout, and Draw
- phases of the processing pipeline.</li>
-
- <li>The color of the dots indicates the relative performance
- of this node in respect to all other profiled nodes.
-
- <ul>
- <li><strong>Green</strong> means the view renders faster than at least
- half of the other views.</li>
-
- <li><strong>Yellow</strong> means the view renders faster than the bottom
- half of the other views.</li>
-
- <li><strong>Red</strong> means the view is among the slowest
- half of views.</li>
- </ul>
- </li>
-
- </ol>
-</div></li>
-</ul>
-
- <h2 id="InterpretingResults">Interpreting Hierarchy Viewer Profiling Results</h2>
-
- <p>Hierarchy Viewer measures the <em>relative performance</em> of a
- node</b>, so there are always red nodes in a profile, and it
- doesn't necessarily mean that view is too slow for the users of
- your app.</p>
-
- <p>Hierarchy Viewer software rasterizes your Activity to acquire the timing
- information. Rasterization is the process of taking a high-level primitive, such as a
- circle or a vector font, and turning it into pixels on the screen. Typically,
- rasterization is done by the GPU on your device, but in the case of
- software rasterization, rendering is done on the CPU with
- ordinary software. This means that the absolute
- reported timings are correct relative to each other, but are bloated and vary
- depending on the overall and changing CPU workload on your device and PC. Profile
- several times to get a feel for the average measurements.</p>
-
- <p>The following are guidelines for interpreting Hierarchy Viewer profiling output.</p>
-
- <p>A red node is a potential problem in any situation where your app has
- unexpectedly slow performance. In a relative setting, there is always a
- slowest node; make sure it is the node you expect.
- The following examples illustrate how to interpret red dots.</p>
-
- <ul>
- <li>Look for red dots in leaf nodes or view groups with only a few children. This
- might point to a problem. Your app may not be slow, or it may not be slow on your
- device, but you need to be aware of why that dot is red.
- <a href="{@docRoot}tools/performance/systrace/index.html"> Systrace</a> or
- <a href="{@docRoot}tools/performance/traceview/index.html"> Traceview</a>
- can give you additional information. </li>
-
- <li>If you have a view group with many children and a red measure phase, take a
- look at the children to see how they are performing.</li>
-
- <li>A view with yellow or even red dots might not be performing slowly on the
- device. That's where the actual numbers are helpful.
- <a href="{@docRoot}tools/performance/systrace/index.html"> Systrace</a> or
- <a href="{@docRoot}tools/performance/traceview/index.html"> Traceview</a>
- can give you additional information.</li>
-
- <li>If the root view of a hierarchy has a red measure phase, red layout phase, and
- yellow draw phase, this is somewhat typical, because it's the
- parent of all the other views.</li>
-
- <li>If a leaf node in a tree with 20+ views has a red draw phase, this <i>is</i> a
- problem. Check your OnDraw method for code that shouldn't be
- there.</li>
- </ul>
diff --git a/docs/html/tools/performance/hierarchy-viewer/setup.jd b/docs/html/tools/performance/hierarchy-viewer/setup.jd
deleted file mode 100644
index aaac1ca..0000000
--- a/docs/html/tools/performance/hierarchy-viewer/setup.jd
+++ /dev/null
@@ -1,89 +0,0 @@
-page.title=Device Setup for Hierarchy Viewer
-meta.tags="android, performance, profiling, tools, rendering, hierarchyviewer"
-page.tags="android", "performance", "profiling", "tools", "rendering", "hierarchyviewer"
-page.metaDescription=Set up your mobile device to work with Hierarchy Viewer.
-page.image=tools/performance/thumbnails/tools_hierarchy_viewer.png
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
- Hierarchy Viewer Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/profiling.html">
- Profiling with Hierarchy Viewer</a></li>
-</ul>
-
-</div>
-
- <p>To run Hierarchy Viewer, you must enable Developer Options on your mobile device and perform
- some setup on your computer.</p>
-
- <h2>Configuring Devices</h2>
-
- <ol>
- <li><p>Enable <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- on your mobile device.</p></li>
-
- <li>Depending on the type of device you have, do one of the following:
- <ul>
- <li>If you have a locked device running Android 4.0 or lower, follow the instructions
- for <a href=
- "https://github.com/romainguy/ViewServer">installing and configuring ViewServer</a>.
- </li>
- <li>If you have an unlocked device running Android 4.0 or lower,
- no further configuration is needed.</li>
- <li>If you have a device running Android 4.1 or higher, you must set an environment
- variable on your development machine. For more information,
- see <a href="#hvproto-variable">Setting the ANDROID_HVPROTO variable</a>
- </ul>
- </li>
- </ol>
-
-
- <h2 id="hvproto-variable">Setting the ANDROID_HVPROTO variable</h2>
-
- <h3>Windows</h3>
-
- <ol>
- <li>Click <b>My Computer > Property > Advanced > Environment Variables.</b></li>
-
- <li>Click <b>New.</b></li>
-
- <li>In variables name put: <code>ANDROID_HVPROTO</code></li>
-
- <li>In variable value put: <code>ddm</code></li>
-
- <li>Click <b>OK</b><./li>
- </ol>
-
- <h3>Mac</h3>
-
- <ol>
- <li>Edit <code>~/.bash_profile</code></li>
-
- <li>Add:
- <br><code>#Hierarchy Viewer Variable
- <br>export ANDROID_HVPROTO=ddm</code>
- </li>
-
- <li><code>source ~/.bash_profile</code></li>
- </ol>
-
- <h3>Linux</h3>
-
- <ol>
- <li>Edit <code>~/.bash_profile</code></li>
-
- <li>Add:
-
- <br><code>#Hierarchy Viewer Variable
- <br>export ANDROID_HVPROTO=ddm</code>
- </li>
-
- <li><code>source ~/.bash_profile</code></li>
- </ol>
diff --git a/docs/html/tools/performance/importing-legacy-apps.jd b/docs/html/tools/performance/importing-legacy-apps.jd
deleted file mode 100644
index cee3519..0000000
--- a/docs/html/tools/performance/importing-legacy-apps.jd
+++ /dev/null
@@ -1,149 +0,0 @@
-page.title=Importing Legacy Apps into Android Studio
-meta.tags="android, performance, profiling, tools"
-page.tags="android", "performance", "profiling", "tools"
-page.metaDescription=Required changes when importing legacy apps into Android Studio.
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#StepsForImporting">Steps for Importing</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="/tools/device.html">Using Hardware Devices</a></li>
- <li><a href="/tools/help/index.html">Tools</a></li>
-</ul>
-
-</div>
-
-
- <p>Importing some pre-Android-1.0 projects into Android 1.0 or newer can trigger a series of
- errors. This document shows you how to resolve them, using a version of the Sunshine app used in
- the <a href="https://www.udacity.com/course/ud853">Android Fundamentals Udacity Course</a> as an
- example.</p>
-
- <p><b>CAVEAT:</b> As with all documentation of this kind, the details are likely to vary for each
- application and each update of Android Studio.</p>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>The latest version of <a href="http://developer.android.com/sdk/index.html">Android
- Studio</a> (this document uses version 1.1).</li>
-
- <li>It helps to know how to <a href="https://developer.android.com/training/index.html">build
- and run apps from Android Studio</a> on your device.</li>
-
- <li>To use Sunshine, you need to download code from <a href=
- "https://github.com/">github.com</a>. More info at <a href=
- "https://help.github.com/">help.github.com</a>.</li>
- </ul>
-
- <h2 id="StepsForImporting">Steps for Importing Sunshine into Android Studio 1.1.0</h2>
-
- <ol>
- <li>Download Sunshine ZIP from GitHub: <a href=
- "https://github.com/udacity/sunshine/tree/6.10-update-map-intent">https://github.com/udacity/sunshine/tree/6.10-update-map-intent</a>.
- (If you are having any problems with Android Studio or the app, use the following version, or
- your own app, to follow along with the example.<a href=
- "https://github.com/udacity/sunshine/tree/3.13-add-share-action-provider">https://github.com/udacity/sunshine/tree/3.13-add-share-action-provider</a>)
-
- <li>Unzip the application to extract the code folder.</li>
-
- <li>Start Android Studio. (This works best if you close all projects, then restart.)</li>
-
- <li>Click <b>Import</b> <b>project (Eclipse ADT, Gradle, etc.)</b>.
- <br><img src="{@docRoot}images/tools/performance/import_image001.png">
- </li>
-
- <li>In the popup, find and select the Sunshine-6-10-updated-map-intent folder and click
- <b>OK</b>.
- <br><img src="{@docRoot}images/tools/performance/import_image002.png">
- </li>
-
- <li>If prompted, choose a destination folder for your project. If prompted to choose a build
- system, choose Gradle. (These prompts vary, depending on your project and Android Studio
- version.) If you need more guidance, see this <a href=
- "http://www.lynda.com/articles/eclipse-into-android-studio">Lynda tutorial</a>.</li>
-
- <li>Wait for the import to complete. If you see no errors, you are now ready to work with your
- app.
-
- <p><b>If you get a Gradle error:</b></p>
-
- <li>If you get a Gradle error, you have some extra work to do.(Because the Import
- didn(t finish, at this point, you may only see the <b>Gradle
- Scripts</b> directory in your Project view.)</li>
-
- <li>You may see the link <b>Install missing platform(s) and sync
- project</b>, or a link to install missing build tools.
- Click whatever link and
- proceed.</li>
-
- <li>The next time through, your build will fail with:
- <br><img src="{@docRoot}images/tools/performance/import_image003.png">
- </li>
-
- <li>Click the <b>Fix plugin version and re-import project</b> link
- in the error message. This will rebuild the app and present you with new of errors.
- <br><img src="{@docRoot}images/tools/performance/import_image004.png">
- </li>
-
- <li>Click the <b>Gradle Settings</b> link in the error message.</li>
-
- <li>Check the <b>Use auto-import</b> and click <b>OK</b>.
- <br><img src="{@docRoot}images/tools/performance/import_image005.png">
- </li>
-
- <li>Expand the project hierarchy and find the <b>build.gradle file</b>.The file you are looking
- for is not the one showing at the top level, but the one inside <b>Sunshine</b> <b>></b>
- <b>app > build.gradle</b>, as shown below.
- <br><img src="{@docRoot}images/tools/performance/import_image006.png">
- </li>
-
- <li>Double-click the <code>build.gradle</code> file.</li>
-
- <li>Make the following changes to the file:</li>
- <ul>
- <li>Set <code>compileSdkVersion 21</code></li>
-
- <li>Set <code>targetSdkVersion 21</code></li>
-
- <li>Replace <code>runProguard</code> with <code>minifyEnabled</code></li>
- </ul>
-
- <p>Your file should look like this: </p>
- <img src="{@docRoot}images/tools/performance/import_image007.png">
- </li>
-
- <li>Save (Ctrl-S).</li>
-
- <p>For the following two messages (Steps 18/19), what you see might vary. You might see either
- message or both messages in sequence. Click the appropriate links to continue until the Language
- Level Changed dialog opens.</p>
-
- <li>In the code view bar, click the <b>Try again</b> link.
- <br><img src="{@docRoot}images/tools/performance/import_image008.png">
- </li>
-
- <li>If you see these warnings, click the <b>Sync now</b> link.
- <br><img src="{@docRoot}images/tools/performance/import_image009.png">
- </li>
-
- <li>In the Language Level Changed dialog, click <b>Yes</b>. And if you get the Gradle Running
- dialog, <b>Yes</b> again.
- <br><img src="{@docRoot}images/tools/performance/import_image010.png">
- </li>
-
- <li>After the project reloads, run the app on your device. (If it crashes the first time, try
- again, and it will run.)
- <br><img src="{@docRoot}images/tools/performance/import_image011.png">
- </li>
- </ol>
-
diff --git a/docs/html/tools/performance/index.jd b/docs/html/tools/performance/index.jd
deleted file mode 100644
index 299b05e..0000000
--- a/docs/html/tools/performance/index.jd
+++ /dev/null
@@ -1,84 +0,0 @@
-page.title=Performance Profiling Tools
-meta.tags="android, develop, performance, profiling, tools, gather"
-page.tags="android", "develop", "performance", "profiling", "tools" "gather"
-page.metaDescription=Android Studio profiling tools for evaluating your app's performance.
-page.article=true
-
-@jd:body
-
- <p>Putting pixels on the screen involves four primary pieces of hardware.
- To greatly simplify, the CPU computes display lists, the GPU renders images to
- the display, the memory stores images and data, and the battery provides
- electrical power. Each of these pieces of hardware has constraints; pushing
- or exceeding those constraints causes your app to be slow, have
- bad display performance, or exhaust the battery.
-
- <p>To discover what causes your specific performance problems, you need to
- take a look under the hood, use tools to collect data about your app's
- execution behavior, surface that data as lists and
- graphics, understand and analyze what you see, and improve your code.</p>
-
- <p>Android Studio and your device provide profiling tools to record and
- visualize the rendering, compute, memory, and battery performance of your
- app.</p>
-
-<p class="note">
- <strong>Note:</strong> While profiling an app, you should <a href=
- "{@docRoot}tools/building/building-studio.html#disable-ir">disable Instant
- Run</a>. There is a small performance impact when <a href=
- "{@docRoot}tools/building/building-studio.html#instant-run">using Instant
- Run</a> and a slightly larger impact when updating methods. This
- performance impact could interfere with information provided by performance
- profiling tools. Additionally, the stub methods generated while using the
- feature can complicate stack traces.
-</p>
-
-<h2 id="rendering-tools">Rendering Analysis Tools</h2>
-
-<p>Visualize the rendering behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/performance/rendering"
- data-cardSizes="9x3"
- data-maxResults="6">
- </div>
-</div>
-
-<h2 id="memory-tools">Memory Analysis Tools</h2>
-
-<p>Visualize the memory behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/performance/memory"
- data-cardSizes="9x3"
- data-maxResults="6">
- </div>
-</div>
-
-<h2 id="cpu-tools">Compute Analysis Tools</h2>
-
-<p>Visualize the CPU behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/performance/cpu"
- data-cardSizes="9x3"
- data-maxResults="4">
- </div>
-</div>
-
-<h2 id="battery-tools">Battery Analysis Tools</h2>
-
-<p>Visualize the battery behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
- <div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:tools/performance/battery"
- data-cardSizes="9x3"
- data-maxResults="4">
- </div>
-</div>
-
-
diff --git a/docs/html/tools/performance/memory-monitor/index.jd b/docs/html/tools/performance/memory-monitor/index.jd
deleted file mode 100644
index 5b9d0c8..0000000
--- a/docs/html/tools/performance/memory-monitor/index.jd
+++ /dev/null
@@ -1,192 +0,0 @@
-page.title=Memory Monitor Walkthrough
-meta.tags="android, performance, profiling, tools, memory, memoryleaks, garbagecollection, memorymonitor"
-page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "garbagecollection", "memorymonitor"
-page.metaDescription=Graph memory usage and garbage collection events for your app in real-time.
-page.image=tools/performance/thumbnails/tools_memory_monitor.png
-page.article=true
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#WorkingWithMemoryMonitor">Working with Memory Monitor</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
- Heap Viewer Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
- Allocation Tracker Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/comparison.html">
- Comparison: Memory Monitor, Heap Viewer, Allocation Tracker</a>
- <li><a href="{@docRoot}tools/performance/traceview/index.html">
- Traceview Walkthrough</a></li>
-</ul>
-
-</div>
-
-
- <p>This walkthrough shows the basic usage and workflow for the Memory Monitor tool in Android
- Studio. Memory Monitor reports in real-time how your app allocates memory.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Showing available and used memory in a graph, and garbage collection events over time.</li>
-
- <li>Quickly testing whether app slowness might be related
- to excessive garbage collection events.</li>
-
- <li>Quickly testing whether app crashes may be related to running out of
- memory.</li>
- </ul>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>A mobile device with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- enabled.</li>
-
- <li>An Application with USB Debugging enabled. Use your own, or the <a href=
- "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
- "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
- </ul>
-
- <h2 id="WorkingWithMemoryMonitor">Working with Memory Monitor</h2>
-
- <ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image001.png"
- alt=""
- width="300px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Enable ADB Integration.
- </p>
- </div>
-
- <li>If you're using a mobile device, connect it to your computer.</li>
-
- <li>Open your application in Android Studio, build the source,
- and run it on your device or emulator.</li>
-
- <li>In Android Studio, choose <strong>Tools > Android > Enable ADB Integration</strong>.
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="4">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image001b.png"
- alt=""
- width="240px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>The Android Monitor tab.
- </p>
- </div>
-
- <li>Click the <strong>Android Monitor</strong> tab at the bottom of the runtime window.</li>
-
- <li>Click the <strong>Memory</strong> tab to show the Memory Monitor tool.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="6">
-
- <div class="figure" style="">
- <img src="/images/tools/performance/memory-monitor/gettingstarted_image002.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 3. </strong>The Memory Monitor pane.
- </p>
- </div>
-
- <li>Choose your device from the drop-down menu at the top left of the pane.
- </li>
-
- <li>Choose the Activity to monitor from the drop-down menu at the top right of the pane.
- </li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="8">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image003.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 4. </strong>Allocated and free memory in Memory Monitor.
- </p>
- </div>
-
- <li>Once Memory Monitor starts tracking your device, a stacked graph appears,
- tracking memory usage over time.
-
- <p>Dark blue: Amount of memory that your app
- is currently using.</p>
-
- <p>Light blue: Available, unallocated memory.</p>
- </li>
-
- <li>Over time, this graph updates, showing changes in memory usage.</li>
-
- <li>As your app allocates and frees memory, the allocated amount shown in the
- graph changes.</li>
-
- <li>When you see the allocated memory drop by a large amount, a garbage
- collection (GC) event has occurred.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="12">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image005.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 5. </strong>Forcing a GC (Garbage Collection) event.
- </p>
- </div>
-
- <li>You can force a garbage collection event by clicking on the garbage truck
- icon
-<img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image004.png">.
- </li>
-
- </ol>
-</div></li>
-</ul>
-
-
diff --git a/docs/html/tools/performance/profile-gpu-rendering/index.jd b/docs/html/tools/performance/profile-gpu-rendering/index.jd
deleted file mode 100644
index 5d22e8c..0000000
--- a/docs/html/tools/performance/profile-gpu-rendering/index.jd
+++ /dev/null
@@ -1,181 +0,0 @@
-page.title=Profiling GPU Rendering Walkthrough
-meta.tags="android, performance, profiling, tools, rendering, gpu"
-page.tags="android", "performance", "profiling", "tools", "rendering", "gpu"
-page.metaDescription=Overlay a graph on your device, showing how long it takes to render UI elements relative to the 16-ms-per-frame benchmark.
-page.image=tools/performance/thumbnails/tools_profile_gpu_rendering.png
-page.article=true
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#ProfileGPURendering">Profile GPU Rendering</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/debug-gpu-overdraw/index.html">
- Debug GPU Overdraw Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
- Hierarchy Viewer Walkthrough</a></li>
-</ul>
-
-</div>
-
- <p>This walkthrough shows how to use Profile GPU Rendering on your mobile device.</p>
-
- <p>Profile GPU Rendering gives you a quick visual representation of how much time it takes to
- render the frames of a UI window relative to the 16-ms-per-frame benchmark.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Quickly seeing how a UI window performs against the 16-ms-per-frame target.</li>
-
- <li>Identifying whether any part of the rendering pipeline stands out in using processing
- time.</li>
-
- <li>Looking for spikes in frame rendering time associated with user or program actions.</li>
- </ul>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>A mobile device running at least Android 4.1 with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- enabled.</li>
- </ul>
-
-<h2 id="ProfileGPURendering">Working with Profile GPU Rendering</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img
-src="{@docRoot}images/tools/performance/profile-gpu-rendering/gettingstarted_image001.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Turning on Profile GPU Rendering.
- </p>
- </div>
-
- <li>On your mobile device, go to <b>Settings ></b> <b>Developer Options</b>.</li>
-
- <li>In the <em>Monitoring</em> section, select <b>Profile GPU Rendering</b>.</li>
-
- <li>In the Profile GPU Rendering popup, choose <b>On screen as bars</b> to overlay the graphs
- on the screen of your mobile device.</li>
-
- <li>Go to the app that you want to profile.</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-
- <div class="figure" style="">
- <img
-src="{@docRoot}images/tools/performance/profile-gpu-rendering/gettingstarted_image002.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Screen when Profile GPU Rendering is on.
- </p>
- </div>
-
- <h3>What you see:</h3>
-
- <ul>
- <li>For each visible application, the tool displays a graph.</li>
-
- <li>The horizontal axis shows time elapsing, and the vertical axis time per frame in
- milliseconds.</li>
-
- <li>As you interact with your application, vertical bars show up on your screen, appearing
- from left to right, graphing frame performance over time.</li>
-
- <li>Each vertical bar represents one frame of rendering.
- The taller the bar, the longer it took to render.</li>
-
- <li>The green line marks the 16 millisecond target. Every time a frame crosses the green line,
- your app is missing a frame, and your users may see this as stuttering images.
- </ul>
-
-</div></li>
-
-<li style="list-style-type:none;><!-- fix issue with visible disc -->
-<div style="overflow:hidden">
-<hr>
-
- <h3>The Profile GPU Rendering Graph</h3>
-
- <img
-src="{@docRoot}images/tools/performance/profile-gpu-rendering/gettingstarted_image003.png"
- alt=""
- height="" />
- <p class="img-caption">
- <strong>Figure 3. </strong>Enlarged Annotated Profile GPU Rendering graph.
- </p>
-
- <p>In this enlarged image of the Profile GPU Rending graph you can see the colored sections
- of the graph, and what phase of the rendering pipeline each color represents.</p>
-
- <ul>
- <li>The <b>green line</b> represents 16 milliseconds. To achieve 60 frames per second,
- the vertical bar for each frame needs
- to stay below this 16 ms mark. Any time a bar pushes above this line, there may be pauses in
- the animations.</li>
-
- <li>Each bar has a blue, purple (only for Android version 4.0 and higher),
- red, and orange component.</p>
-
- <li>The <b>blue</b> section of the bar represents the time used to create and update the
- View's display lists. If this part of the bar is tall, there may be a
- lot of custom view drawing, or a lot of work in onDraw methods.</li>
-
- <li>Android 4.0 and higher: The <b>purple</b> section of the bar represents the time spent
- transferring resources to the render thread.</li>
-
- <li>The <b>red</b> section of the bar represents the time spent by
- Android's 2D renderer issuing commands to OpenGL to draw and redraw
- display lists. The height of this bar is directly proportional to the sum of the time it takes each
- display list to execute—more display lists equals a taller red bar.</li>
-
- <li>The <b>orange</b> section of the bar represents the time the CPU is waiting for the GPU to
- finish its work. If this bar gets tall, it means the app is doing too much work on the GPU.
- </li>
- </ul>
-
- <p class="note"><strong>Note:</strong>
- While this tool is named Profile GPU Rendering, all monitored processes actually
- occur in the CPU. Rendering happens by submitting commands to the GPU, and the GPU renders the
- screen asynchronously. In certain situations, the GPU can have too much work to do,
- and your CPU will have to wait before it can submit new commands.
- When this happens, you'll see spikes in the Process (orange bar) and Execute (red bar)
- stages, and the command submission will block until more room is made on the
- GPU command queue.
- </p>
-
- </div></li>
-</ul>
-
-
-
-
diff --git a/docs/html/tools/performance/systrace/index.jd b/docs/html/tools/performance/systrace/index.jd
deleted file mode 100644
index 97099a0..0000000
--- a/docs/html/tools/performance/systrace/index.jd
+++ /dev/null
@@ -1,182 +0,0 @@
-page.title=Systrace Walkthrough
-meta.tags="android, performance, profiling, tools, compute, systrace"
-page.tags="android", "performance", "profiling", "tools", "compute", "systrace"
-page.metaDescription=Collect system and application process execution data to identify performance bottlenecks.
-page.image=tools/performance/thumbnails/tools_systrace.png
-page.article=true
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#WorkingWithSystrace">Working with Systrace</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/traceview/index.html">
- Traceview Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
- Allocation Tracker Walkthrough</a></li>
-</ul>
-
-</div>
-
- <p>This walkthrough shows the basic usage and workflow for the Systrace tool in the Android
- Device Monitor.</p>
-
- <p>Systrace collects system and application process execution data and generates detailed,
- interactive reports from devices running Android 4.1 and higher.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Evaluating container performance.</li>
-
- <li>Finding performance bottlenecks in the execution of your code.</li>
- </ul>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>Android SDK Tools 20.</li>
-
- <li><a href="http://www.python.org/">Python</a> installed and included in your development
- computer's execution path.</li>
-
- <li>A mobile device running at least Android 4.1 with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- and USB Debugging enabled in Developer Options.</li>
-
- <li>Application code. Use your own code, or the <a href=
- "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
- "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
- </ul>
-
- <h2 id="WorkingWithSystrace">Working with Systrace</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image001.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Starting Android Device Monitor.
- </p>
- </div>
-
- <li>Connect your mobile device to your computer.</li>
-
- <li>Open your application in Android Studio, build the source, and run it on your device.</li>
-
- <li>From Android Studio, start the Android Device Monitor: <b>Tools -> Android -> Android
- Device</b> <b>Monitor</b>.
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="4">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image003.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Steps for starting Systrace.
- </p>
- </div>
-
- <li>Make sure your
- device and the package for your application are showing in the Devices (DDMS mode) or
- Windows (Hierarchy Viewer mode) tab.
-
- <p>You can choose <b>Window > Reset Perspective</b> to
- get back to the default arrangement.</p>
- </li>
-
- <li>Click the <b>DDMS</b> button, because Systrace is one of the DDMS tools.</li>
-
- <li>Click the <b>Systrace</b> button
- <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image002.png">.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="7">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image004.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 3. </strong>Steps for creating a trace.
- </p>
- </div>
-
- <li>In the <b>Android System Trace</b> popup, choose your settings for the trace.
-
- <ul>
- <li><b>Destination File:</b> Where the trace is stored as an HTML file. Default is in
- your home directory as <code>trace.html</code>.</li>
-
- <li><b>Trace Duration:</b> Default is 5 seconds,
- and 30 seconds is a good time to choose.</li>
-
- <li><b>Trace Buffer size:</b> Default is unlimited.</li>
-
- <li><b>Enable Application Traces from:</b> Make sure your app is selected.</li>
-
- <li><b>Select tags to enable:</b> Choose at least one value to trace, for example Graphics
- and View System.</li>
- </ul>
- </li>
-
- <li>Click <b>OK</b> to start tracing.</li>
-
- <li>Interact with your app.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="10">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image005.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 4. </strong>Example systrace output in browser.
- </p>
- </div>
-
- <li>When the trace is done, you are automatically returned to Android Device Monitor.</li>
-
- <li>Go to your home directory, or the directory you chose as the file destination.</li>
-
- <li>Open the <code>trace.html</code> file in your browser.</li>
-
- </ol>
-</div></li>
-</ul>
-
-
diff --git a/docs/html/tools/performance/thumbnails/tools_allocation_tracker.png b/docs/html/tools/performance/thumbnails/tools_allocation_tracker.png
deleted file mode 100644
index cbae4cd..0000000
--- a/docs/html/tools/performance/thumbnails/tools_allocation_tracker.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_battery_historian.png b/docs/html/tools/performance/thumbnails/tools_battery_historian.png
deleted file mode 100644
index d1d58ac..0000000
--- a/docs/html/tools/performance/thumbnails/tools_battery_historian.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_debug_gpu_overdraw.png b/docs/html/tools/performance/thumbnails/tools_debug_gpu_overdraw.png
deleted file mode 100644
index ff402d0..0000000
--- a/docs/html/tools/performance/thumbnails/tools_debug_gpu_overdraw.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_heap_viewer.png b/docs/html/tools/performance/thumbnails/tools_heap_viewer.png
deleted file mode 100644
index d9028d0..0000000
--- a/docs/html/tools/performance/thumbnails/tools_heap_viewer.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer.png b/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer.png
deleted file mode 100644
index 064efea..0000000
--- a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png b/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png
deleted file mode 100644
index e9824a4..0000000
--- a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_memory_monitor.png b/docs/html/tools/performance/thumbnails/tools_memory_monitor.png
deleted file mode 100644
index c761141..0000000
--- a/docs/html/tools/performance/thumbnails/tools_memory_monitor.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_profile_gpu_rendering.png b/docs/html/tools/performance/thumbnails/tools_profile_gpu_rendering.png
deleted file mode 100644
index c86fb14..0000000
--- a/docs/html/tools/performance/thumbnails/tools_profile_gpu_rendering.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_systrace.png b/docs/html/tools/performance/thumbnails/tools_systrace.png
deleted file mode 100644
index 567a8a7..0000000
--- a/docs/html/tools/performance/thumbnails/tools_systrace.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_traceview.png b/docs/html/tools/performance/thumbnails/tools_traceview.png
deleted file mode 100644
index 16e6bdd..0000000
--- a/docs/html/tools/performance/thumbnails/tools_traceview.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/traceview/index.jd b/docs/html/tools/performance/traceview/index.jd
deleted file mode 100644
index 4a3f190..0000000
--- a/docs/html/tools/performance/traceview/index.jd
+++ /dev/null
@@ -1,292 +0,0 @@
-page.title=Traceview Walkthrough
-meta.tags="android, performance, profiling, tools, compute, traceview"
-page.tags="android", "performance", "profiling", "tools", "compute", "traceview"
-page.metaDescription=Log method execution over time and inspect execution data, per-thread timelines, and call stacks to track down performance issues in your source code.
-page.image=tools/performance/thumbnails/tools_traceview.png
-page.article=true
-
-@jd:body
-
-<style>
- .no-bullet {
- list-style-type: none;
- }
- .padded {
- padding-left: 10px;
- }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
- <li><a href="#WhatYouNeed">Prerequisites</a></li>
- <li><a href="#WorkingWithTraceview">Working with Traceview</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
- <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
- Heap Viewer Walkthrough</a></li>
- <li><a href="{@docRoot}tools/performance/systrace/index.html">
- Systrace Walkthrough</a></li>
-</ul>
-
-</div>
-
- <p>This walkthrough shows the basic usage and workflow for the Traceview tool. Traceview logs
- method execution over time and shows execution data, per-thread timelines, and call stacks.</p>
-
- <p>What it's good for:</p>
-
- <ul>
- <li>Tracking down performance problems in your source code.</li>
- </ul>
-
- <h2 id="WhatYouNeed">Prerequisites</h2>
-
- <ul>
- <li>A mobile device with <a href=
- "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
- enabled.</li>
-
- <li>Application code. Use your own code, or the <a href=
- "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
- "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
- </ul>
-
-<h2 id="WorkingWithTraceview">Working with Traceview</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
- <ol class="padded">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image001.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 1. </strong>Steps for starting Android Device Monitor.
- </p>
- </div>
-
- <li>Connect your mobile device to your computer.</li>
-
- <li>Open your application in Android Studio, build the source, and run it on your device.</li>
-
- <li>Start the Android Device Monitor from Android Studio: <b>Tools -> Android -> Android
- Device</b> <b>Monitor</b>.
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="4">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image002.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 2. </strong>Steps for starting Traceview.
- </p>
- </div>
-
- <li>Make sure your device
- and the package for your application are showing in the <b>Devices</b> (DDMS mode) or
- <b>Windows</b> (Hierarchy Viewer mode) tab.
-
- <p>If necessary choose <b>Window > Reset
- Perspective</b> to get back to the default pane arrangement.</p></li>
-
- <li>Click the <b>DDMS</b> button, because Traceview is one of the DDMS tools.</li>
-
- <li>Select the app you want to profile.
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="7">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image004.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 3. </strong>Starting profiling.
- </p>
- </div>
-
- <li>Click the Start method profiling
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image003.png">
- button.
- </li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="8">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image005.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 4. </strong>Choosing profiling options.
- </p>
- </div>
-
- <li>In the <b>Profiling Options</b> popup:
-
- <ul>
- <li>Choose <b>Sample based profiling</b></li>
-
- <li>Keep the default sampling rate of 1000 microseconds.</li>
-
- <li>Click <b>OK</b>.</li>
- </ul>
- </li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="9">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image007.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 5. </strong>Stopping profiling.
- </p>
- </div>
-
-
- <li>Interact with your application. If you are aware of performance issues that
- your users experience, perform those actions.</li>
-
- <li>Click the Stop method profiling
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image006.png">
- button.</li>
-
- <li>Wait for the trace to load. This may take a few seconds if you recorded for a
- long time.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="12">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image008.png"
- alt=""
- width="440px" />
- <p class="img-caption">
- <strong>Figure 6. </strong>Traceview output panes.
- </p>
- </div>
-
- <li>Traceview has two panels: <b>Timeline</b> pane and <b>Profile</b> pane, which
- are described below.</li>
-
- <li>Use the <b>Find</b> box at the bottom to filter your profile results. For
- example, if you are interested in finding the running time for a function, you can
- search for it, and the tool will highlight it in the timeline.
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="14">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image009.png"
- alt=""
- width="400px" />
- <p class="img-caption">
- <strong>Figure 7. </strong>Annotated timeline panel.
- </p>
- </div>
-
- <li>The <b>Timeline</b> pane visualizes how your code executes over time.
-
- <ul>
- <li>Each row shows a thread.</li>
-
- <li>Each bar on the timeline is a method executing.</li>
-
- <li>Each color is for a different method; every time a method executes, you see
- a the same color bar.</li>
-
- <li>The width of its bar indicates how long the method takes to execute.</li>
- </ul>
- </li>
-
- <li>When you are zoomed out, a bar indicates when a method is executing.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="16">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image010.png"
- alt=""
- width="300px" />
- <p class="img-caption">
- <strong>Figure 8. </strong>Segment for method on the timeline.
- </p>
- </div>
-
- <li>Zoom into the graph, and the bar for each method expands into a colored
- U-shape, where the left side of the U indicates the start, and the right side
- the end of the method's execution.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="17">
-
- <div class="figure" style="">
- <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image011.png"
- alt=""
- width="440px" />
- <p class="img-caption">
- <strong>Figure 9. </strong>Traceview Profiling pane with callstack.
- </p>
- </div>
-
- <li>The <b>Profiling</b> pane shows a list of methods.
-
- <ul>
- <li>Select a method to see who called it (Parent) and who it's
- calling (Children).</li>
-
- <li>The selected method is also highlighted in the <b>Timeline</b> pane.</li>
-
- <li>The columns show exclusive and inclusive CPU and real times, percentages,
- ratios, and how often a method was called.</li>
-
- <li>The <em>exclusive time</em> is the time spent just in the method itself, which can
- help you find issues within that specific method.</li>
-
- <li>The <em>inclusive time</em> is for the method and all methods it calls, which
- can help you find problems with your call tree.</li>
-
- <li>The <b>Calls+Rec</b> column shows how many times a method was called recursively,
- which can help you track down performance issues.</li>
- </ul>
- </li>
- </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/projects/index.jd b/docs/html/tools/projects/index.jd
deleted file mode 100644
index 344e844..0000000
--- a/docs/html/tools/projects/index.jd
+++ /dev/null
@@ -1,579 +0,0 @@
-page.title=Managing Projects Overview
-meta.tags="project, mipmap"
-page.tags="project", "mipmap"
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#ProjectFiles">Android Project Files</a></li>
- <li><a href="#ApplicationModules">Android Application Modules</a></li>
- <ol>
- <li><a href="#mipmap">Managing Launcher Icons as mipmap Resources</a></li>
- </ol>
- <li><a href="#LibraryModules">Library Modules</a>
- <ol>
- <li><a href="#considerations">Development considerations</a></li>
- </ol>
- </li>
-
- <li><a href="#TestModules">Test Modules</a></li>
-
- <li><a href="#testing">Testing a Library Module</a></li>
- </ol>
- </div>
- </div>
-
- <p>An Android <em>project</em> contains everything that defines your Android app, from app
- source code to build configurations and test code. The SDK tools require that your projects
- follow a specific structure so it can compile and package your application correctly.
- If you're using Android Studio, it takes care of all this for you.</p>
-
- <p>A <em>module</em> is the first level of containment within a project that encapsulates
- specific types of source code files and resources. There are several types of modules
- with a project:</p>
-
- <dl>
-
- <dt><strong>Android Application Modules</strong></dt>
-
- <dd>An Android Application Module is the container for your application's source code, resource
- files, and application level settings, such as the module-level build file, resource files, and
- Android Manifest file. The application module contents are eventually
- built into the <code>.apk</code> file that gets installed on a device.</dd>
-
- <dt><strong>Test Modules</strong></dt>
-
- <dd>These modules contain code to test your application projects and are built into
- test applications that run on a device. By default, Android Studio creates the
- <em>androidTest</em> module for inserting JUnit tests. </dd>
-
- <dt><strong>Library Modules</strong></dt>
-
- <dd>These modules contain shareable Android source code and resources that you can reference
- in Android projects. This is useful when you have common code that you want to reuse.
- Library modules cannot be installed onto a device, however, they are
- pulled into the <code>.apk</code> file at build time.</dd>
-
-
- <dt><strong>App Engine Modules</strong></dt>
-
- <dd>Android Studio lets you easily add a cloud backend to your application. A backend allows you
- to implement functionality such as backing up user data to the cloud, serving content to client
- apps, real-time interactions, sending push notifications through Google Cloud Messaging for
- Android (GCM), and more. App Engine modules are App Engine java Servlet Module for backend
- development, App Engine java Endpoints Module to convert server-side Java code annotations into
- RESTful backend APIs, and App Engine Backend with Google Cloud Messaging to send push notifications
- from your server to your Android devices. </dd>
-
- </dl>
-
- <p>When you use the Android development tools to create a new project and the module, the essential files
- and folders will be created for you. There are only a handful of files and folders generated for you,
- and some of them depend on whether you use Android Studio or the {@code android} tool to
- generate your module. As your application grows in complexity, you might require new kinds of
- resources, directories, and files.</p>
-
-<p class="note"><strong>Note:</strong> Project folders and files apply across the entire Android
-project and override similar module file settings.</p>
-
-
-
-
- <h2 id="ProjectFiles">Android Project Files</h2>
-
- <p>Android Studio project files and settings provide project-wide settings that apply across all
- modules in the project. </p>
-
- <dl>
- <dt><code>.idea</code></dt>
-
- <dd>Directory for IntelliJ IDEA settings.</dd>
-
-
- <dt><code>app</code></dt>
-
- <dd>Application module directories and files. </dd>
-
-
- <dt><code>build</code></dt>
-
- <dd>This directory stores the build output for all project modules.</dd>
-
-
- <dt><code>gradle</code></dt>
-
- <dd>Contains the gradler-wrapper files. </dd>
-
-
- <dt><code>.gitignore</code></dt>
-
- <dd>Specifies the untracked files that Git should ignore.</dd>
-
-
- <dt><code>build.gradle</code></dt>
-
- <dd>Customizable properties for the build system. You can edit this file to specify the default
- build settings used by the application modules and also set the location of your keystore and key alias
- so that the build tools can sign your application when building in release mode. This file is
- integral to the project, so maintain it in a source revision control system. </dd>
-
- <dt><code>gradle.properties</code></dt>
-
- <dd>Project-wide Gradle settings.</dd>
-
-
- <dt><code>gradlew</code></dt>
-
- <dd>Gradle startup script for Unix.</dd>
-
-
- <dt><code>gradlew.bat</code></dt>
-
- <dd>Gradle startup script for Windows. </dd>
-
- <dt><code>local.properties</code></dt>
-
- <dd>Customizable computer-specific properties for the build system, such as the path to the SDK
- installation. Because the content of the file is specific to the local installation of the SDK,
- the <code>local.properties</code> should not be maintained in a source revision control system. </dd>
-
-
- <dt><code><project>.iml</code></dt>
-
- <dd>Module file created by the IntelliJ IDEA to store module information.</dd>
-
- <dt><code>settings.gradle</code></dt>
-
- <dd>Specifies the sub-projects to build.</dd>
-
- </dl>
-
-
- <h2 id="ApplicationModules">Android Application Modules</h2>
-
- <p>Android Application Modules are the modules that eventually get built into the <code>.apk</code>
- files based on your build settings. They contain things such as application source code and resource
- files. Most code and resource files are generated for you by default, while others should be created if
- required. The following directories and files comprise an Android application module:</p>
-
- <dl>
-
- <dt><code>build/</code></dt>
-
- <dd>Contains build folders for the specified build variants. Stored in the main application module.</dd>
-
-
- <dt><code>libs/</code></dt>
-
- <dd>Contains private libraries. Stored in the main application module.</dd>
-
-
-
-
- <dt><code>src/</code></dt>
-
- <dd>Contains your stub Activity file, which is stored at
- <code>src<em>/main/java/<namespace.appname>/<ActivityName></em>.java</code>. All
- other source code files (such as <code>.java</code> or <code>.aidl</code> files) go here as
- well.</dd>
-
- <dl>
- <dt><code>androidTest/</code></dt>
-
- <dd>Contains the instrumentation tests. For more information, see the
- <a href="{@docRoot}tools/testing/index.html">Android Test documentation</a>.</dd>
-
- <dt><code>main/java/com.<project>.<app></code></dt>
-
- <dd>Contains Java code source for the app activities.</dd>
-
- <dt><code>main/jni/</code></dt>
-
- <dd>Contains native code using the Java Native Interface (JNI). For more information, see the
- <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK documentation</a>.</dd>
-
- <dt><code>main/gen/</code></dt>
-
- <dd>Contains the Java files generated by Android Studio, such as your <code>R.java</code> file and
- interfaces created from AIDL files.</dd>
-
- <dt><code>main/assets/</code></dt>
-
- <dd>This is empty. You can use it to store raw asset files. Files that you save here are
- compiled into an <code>.apk</code> file as-is, and the original filename is preserved. You can
- navigate this directory in the same way as a typical file system using URIs and read files as a
- stream of bytes using the {@link android.content.res.AssetManager}. For example, this is a good
- location for textures and game data.</dd>
-
- <dt><code>main/res/</code></dt>
-
- <dd>Contains application resources, such as drawable files, layout files, and string values
- in the following directories. See
- <a href="{@docRoot}guide/topics/resources/index.html">Application Resources</a> for more
- information.
-
- <dl>
- <dt><code>anim/</code></dt>
-
- <dd>For XML files that are compiled into animation objects. See the <a href=
- "{@docRoot}guide/topics/resources/animation-resource.html">Animation</a> resource
- type.</dd>
-
- <dt><code>color/</code></dt>
-
- <dd>For XML files that describe colors. See the <a href=
- " {@docRoot}guide/topics/resources/color-list-resource.html">Color Values</a> resource
- type.</dd>
-
- <dt><code>drawable/</code></dt>
-
- <dd>For bitmap files (PNG, JPEG, or GIF), 9-Patch image files, and XML files that describe
- Drawable shapes or Drawable objects that contain multiple states (normal, pressed, or
- focused). See the <a href=
- "{@docRoot}guide/topics/resources/drawable-resource.html">Drawable</a> resource type.</dd>
-
-
- <dt><code>mipmap/</code></dt>
-
- <dd>For app launcher icons. The Android system retains the resources in this folder
- (and density-specific folders such as mipmap-xxxhdpi) regardless of the screen resolution
- of the device where your app is installed. This behavior allows launcher apps to pick
- the best resolution icon for your app to display on the home screen. For more information
- about using the <code>mipmap</code> folders, see
- <a href="#mipmap">Managing Launcher Icons as mipmap Resources</a>. </p>
-
-
- <dt><code>layout/</code></dt>
-
- <dd>XML files that are compiled into screen layouts (or part of a screen). See the <a href=
- "{@docRoot}guide/topics/resources/layout-resource.html">Layout</a> resource type.</dd>
-
- <dt><code>menu/</code></dt>
-
- <dd>For XML files that define application menus.
- See the <a href="{@docRoot}guide/topics/resources/menu-resource.html">Menus</a>
- resource type.</dd>
-
- <dt><code>raw/</code></dt>
-
- <dd>For arbitrary raw asset files. Saving asset files here is essentially the same as
- saving them in the <code>assets/</code> directory. The only difference is how you
- access them. These files
- are processed by aapt and must be referenced from the application using a resource
- identifier in the {@code R} class. For example, this is a good place for media, such as MP3
- or Ogg files.</dd>
-
- <dt><code>values/</code></dt>
-
- <dd>For XML files that define resources by XML element type. Unlike other resources in
- the <code>res/</code> directory, resources written to XML files in this folder are not
- referenced by the file name. Instead, the XML element type controls how the resources
- defined within the XML files are placed into the {@code R} class.</dd>
-
- <dt><code>xml/</code></dt>
-
- <dd>For miscellaneous XML files that configure application components. For example, an XML
- file that defines a {@link android.preference.PreferenceScreen}, {@link
- android.appwidget.AppWidgetProviderInfo}, or
- <a href="{@docRoot}reference/android/app/SearchManager.html#SearchabilityMetadata">
- Searchability Metadata</a>. See
- <a href="{@docRoot}guide/topics/resources/index.html">Application Resources</a>
- for more information about configuring these application components.</dd>
-
- </dl>
-
- <dt><code>AndroidManifest.xml</code></dt>
-
- <dd>The control file that describes the nature of the application and each of its components.
- For instance, it describes: certain qualities about the activities, services, intent receivers,
- and content providers; what permissions are requested; what external libraries are needed; what
- device features are required, what API Levels are supported or required; and others. See the
- <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>
- documentation for more information</dd>
-
- </dl>
-
- <dt><code>.gitignore/</code></dt>
-
- <dd>Specifies the untracked files ignored by git.</dd>
-
- <dt><code>app.iml/</code></dt>
-
- <dd>IntelliJ IDEA module</dd>
-
- <dt><code>build.gradle</code></dt>
-
- <dd>Customizable properties for the build system. You can edit this file to override default
- build settings used by the manifest file and also set the location of your keystore and key alias
- so that the build tools can sign your application when building in release mode. This file is
- integral to the project, so maintain it in a source revision control system. </dd>
-
- <dt><code>proguard-rules.pro</code></dt>
-
- <dd>ProGuard settings file. </dd>
-
-
- </dl>
-
-
-
-<h2 id="mipmap">Managing Launcher Icons as mipmap Resources</h2>
-
-<p>Different home screen launcher apps on different devices show app launcher icons at various
-resolutions. When app resource optimization techniques remove resources for unused
-screen densities, launcher icons can wind up looking fuzzy because the launcher app has to upscale
-a lower-resolution icon for display. To avoid these display issues, apps should use the
-<code>mipmap/</code> resource folders for launcher icons. The Android system
-preserves these resources regardless of density stripping, and ensures that launcher apps can
-pick icons with the best resolution for display. </p>
-
-<p>Make sure launcher apps show a high-resolution icon for your app by moving all densities of your
-launcher icons to density-specific <code>res/mipmap/</code> folders
-(for example <code>res/mipmap-mdpi/</code> and <code>res/mipmap-xxxhdpi/</code>). The
-<code>mipmap/</code> folders replace the <code>drawable/</code> folders for launcher icons. For
-xxhpdi launcher icons, be sure to add the higher resolution xxxhdpi versions of the
-icons to enhance the visual experience of the icons on higher resolution devices.</p>
-
-<p class="note"><strong>Note:</strong> Even if you build a single APK for all devices, it is still
-best practice to move your launcher icons to the <code>mipmap/</code> folders.</p>
-
-
-<h3>Manifest update</h3>
-
-<p>When you move your launcher icons to the <code>mipmap-[density]</code> folders, change the
-launcher icon references in the <code>AndroidManifest.xml</code> file so your manifest references
-the <code>mipmap/</code> location. This example changes the manifest file to reference the
-<code>ic_launcher</code> icon in the <code>mipmap/</code> folder. </p>
-
-<pre>
-...
-<application android:name="ApplicationTitle"
- android:label="@string/app_label"
- android:icon="@mipmap/ic_launcher" >
- ...
-</pre>
-
-
-
-
-
- <h2 id="LibraryModules">Library Module</h2>
-
- <div class="sidebox-wrapper">
- <div class="sidebox">
- <h2>Library module example code</h2>
-
- <p>The SDK includes an example application called <code>TicTacToeMain</code> that shows how a
- dependent application can use code and resources from an Android Library module. The TicTacToeMain
- application uses code and resources from an example library module called TicTacToeLib.</p>
-
- <p>To download the sample applications and run them as modules in
- your environment, use the <em>Android SDK Manager</em> to download the "Samples for
- SDK API 8" (or later) module into your SDK.</p>
-
- <p>For more information and to browse the code of the samples, see
- the <a href="{@docRoot}resources/samples/TicTacToeMain/index.html">TicTacToeMain
- application</a>.</p>
- </div>
- </div>
-
- <p>An Android <em>library module</em> is a development module that holds shared Android
- source code and resources. Other Android application modules can reference the library module
- and, at build time, include its compiled sources in their <code>.apk</code> files. Multiple
- application modules can reference the same library module and any single application module
- can reference multiple library modules.</p>
-
- <p class="note"><strong>Note:</strong> You need SDK Tools r14 or newer to use the new library
- module feature that generates each library module into its own JAR file.
- You can download the tools and platforms using the
- <em>Android SDK Manager</em>, as described in
- <a href="{@docRoot}tools/help/sdk-manager.html">SDK tools help</a>.</p>
-
- <p>If you have source code and resources that are common to multiple Android projects, you
- can move them to a library module so that it is easier to maintain across applications and
- versions. Here are some common scenarios in which you could make use of library modules:</p>
-
- <ul>
- <li>If you are developing multiple related applications that use some of the same components,
- you move the redundant components out of their respective application module and create a
- single, reusable set of the same components in a library module.</li>
-
- <li>If you are creating an application that exists in both free and paid versions. You move
- the part of the application that is common to both versions into a library module. The two
- dependent modules, with their different package names, will reference the library module
- and provide only the difference between the two application versions.</li>
- </ul>
-
- <p>Structurally, a library module is similar to a standard Android application module. For
- example, it includes a manifest file at the module root, as well as <code>src/</code>,
- <code>res/</code> and similar directories. The module can contain the same types of source
- code and resources as a standard Android module, stored in the same way. For example, source
- code in the library module can access its own resources through its <code>R</code> class.</p>
-
- <p>However, a library module differs from a standard Android application module in that you
- cannot compile it directly to its own <code>.apk</code> and run it on an Android device.
- Similarly, you cannot export the library module to a self-contained JAR file, as you would do
- for a true library. Instead, you must compile the library indirectly, by referencing the
- library in the dependent application and building that application.</p>
-
- <p>When you build an application that depends on a library module, the SDK tools compile the
- library into a temporary JAR file and use it in the main module, then uses the
- result to generate the <code>.apk</code>. In cases where a resource ID is defined in both the
- application and the library, the tools ensure that the resource declared in the application gets
- priority and that the resource in the library module is not compiled into the application
- <code>.apk</code>. This gives your application the flexibility to either use or redefine any
- resource behaviors or values that are defined in any library.</p>
-
- <p>To organize your code further, your application can add references to multiple library
- modules, then specify the relative priority of the resources in each library. This lets you
- build up the resources actually used in your application in a cumulative manner. When two
- libraries referenced from an application define the same resource ID, the tools select the
- resource from the library with higher priority and discard the other.</p>
-
- <p>Once you have added references to library modules to your Android application module,
- you can set their relative priority. At build time, the
- libraries are merged with the application one at a time, starting from the lowest priority to
- the highest.</p>
-
- <p>Library modules can reference other library modules and can import an external library
- (JAR) in the normal way.</p>
-
- <h3 id="considerations">Development considerations</h3>
-
- <p>As you develop your library modules and dependent applications, keep the points listed below
- in mind:</p>
-
- <ul>
- <li><p><strong>Resource conflicts</strong></p>
- <p>Since the tools merge the resources of a library module with those of a dependent application
- module, a given resource ID might be defined in both modules. In this case, the tools select
- the resource from the application, or the library with highest priority, and discard the other
- resource. As you develop your applications, be aware that common resource IDs are likely to be
- defined in more than one project and will be merged, with the resource from the application or
- highest-priority library taking precedence.</p>
- </li>
-
- <li><p><strong>Use prefixes to avoid resource conflicts</strong></p>
-
- <p>To avoid resource conflicts for common resource IDs, consider using a prefix or other
- consistent naming scheme that is unique to the module (or is unique across all project modules).</p></li>
-
- <li><p><strong>You cannot export a library module to a JAR file</strong></p>
-
- <p>A library cannot be distributed as a binary file (such as a JAR file). This will be added in a
- future version of the SDK Tools.</p></li>
-
- <li><p><strong>A library module can include a JAR library</strong></p>
-
- <p>You can develop a library module that itself includes a JAR library; however you need to
- manually edit the dependent application modules's build path and add a path to the JAR file.</p></li>
-
- <li><p><strong>A library module can depend on an external JAR library</strong></p>
-
- <p>You can develop a library module that depends on an external library (for example, the Maps
- external library). In this case, the dependent application must build against a target that
- includes the external library (for example, the Google APIs Add-On). Note also that both the
- library module and the dependent application must declare the external library in their manifest
- files, in a <a href=
- "{@docRoot}guide/topics/manifest/uses-library-element.html"><code><uses-library></code></a>
- element.</p></li>
-
- <li> <p><strong>Library modules cannot include raw assets</strong></p>
-
- <p>The tools do not support the use of raw asset files (saved in the <code>assets/</code> directory)
- in a library module. Any asset resources
- used by an application must be stored in the <code>assets/</code> directory of the application
- module itself. However, resource files saved in the <code>res/</code> directory are supported.</p></li>
-
- <li><p><strong>Platform version must be lower than or equal to the Android module</strong></p>
-
- <p>A library is compiled as part of the dependent application module, so the API used in the
- library module must be compatible with the version of the Android library used to compile the
- application module. In general, the library module should use an <a href=
- "{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level</a> that is the same as — or lower
- than — that used by the application. If the library module uses an API level that is
- higher than that of the application, the application module will not compile. It is
- perfectly acceptable to have a library that uses the Android 1.5 API (API level 3) and that is
- used in an Android 1.6 (API level 4) or Android 2.1 (API level 7) module, for instance.</p></li>
-
- <li> <p><strong>No restriction on library module names</strong></p>
-
- <p>There is no requirement for the package name of a library to be the same as that of
- applications that use it.</p></li>
-
- <li><p><strong>Each library module creates its own R class </strong></p>
-
- <p>When you build the dependent application modules, library modules are compiled and
- merged with the application module. Each library has its own <code>R</code> class, named according
- to the library's package name. The <code>R</code> class generated from main
- module and the library module is created in all the packages that are needed including the main
- module's package and the libraries' packages.</p></li>
-
- <li><p><strong>Library module storage location</strong></p>
-
- <p>There are no specific requirements on where you should store a library module, relative to a
- dependent application module, as long as the application module can reference the library
- module by a relative link. What is important is that the main
- module can reference the library module through a relative link.</p></li>
- </ul>
-
- <h2 id="TestProjects">Test Projects</h2>
-
- <p>Test projects contain Android applications that you write using the
- <a href="{@docRoot}tools/testing/index.html">Testing and
- Instrumentation framework</a>. The framework is an extension of the JUnit test framework and adds
- access to Android system objects. </p>
-
- <p>The test projects are now automatically part of the app source folder. When a new application
- module is created, Android Studio creates the <code>src/androidTest</code> source set. This
- source set contains tests for the default configuration and is combined with the <em>debug</em>
- build type to generate a test application. </p>
-
- <img src="{@docRoot}images/tools/studio-androidtest-folder.png">
- <p class="img-caption"><strong>Figure 1.</strong> androidTest Folder.</p>
-
- <p class="note"><strong>Note:</strong> The <code>src/androidTest</code> source set may not be
- created for every type of available module template. If this source set is not created, you
- can just create it for that module.</p>
-
- <p>For each product flavor, create a test folder specific to that product flavor. </p>
-
- <dl>
- <dt><code>src/main/</code></dt>
- <dd><code>src/androidTest/</code></dt>
-
- <dt><code>src/productFlavor1/</code></dt>
- <dd><code>src/testproductFlavor1/</code></dd>
-
- <dt><code>src/productFlavor2/</code></dt>
- <dd><code>src/testproductFlavor2/</code></dd>
-
- </dl>
-
- <p>The test manifests are always generated so a manifest in a test source set is optional.</p>
-
- <p>The test applications run against the <em>debug</em> build type. This can be configured
- using the <code>testBuildType</code> property in the build file.</p>
-
-
- <p>For more information, see the
- <a href="{@docRoot}tools/testing/index.html">Testing</a> section.</p>
-
-
- <h2 id="testing">Testing a Library Module</h2>
-
- <p>There are two recommended ways of setting up testing on code and resources in a library
- module:</p>
-
- <ul>
- <li>You can set up a <a href="{@docRoot}tools/testing/testing_otheride.html">test
- module</a> that instruments an application module that depends on the library module. You
- can then add tests to the module for library-specific features.</li>
-
- <li>You can set up a standard application module that depends on the library and put
- the instrumentation in that module. This lets you create a self-contained module that
- contains both the tests/instrumentations and the code to test.</li>
- </ul>
diff --git a/docs/html/tools/projects/projects-cmdline.jd b/docs/html/tools/projects/projects-cmdline.jd
deleted file mode 100644
index f0830fe..0000000
--- a/docs/html/tools/projects/projects-cmdline.jd
+++ /dev/null
@@ -1,295 +0,0 @@
-page.title=Managing Projects from the Command Line
-parent.title=Managing Projects
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#CreatingAProject">Creating an Android Project</a></li>
- <li><a href="#UpdatingAProject">Updating a Project</a></li>
- <li><a href="#SettingUpLibraryProject">Setting up a Library Project</a>
- <ol>
- <li><a href="#CreatingManifestFile">Creating the manifest file</a></li>
- <li><a href="#UpdatingLibraryProject">Updating a library project</a></li>
- </ol>
- </li>
- <li><a href="#ReferencingLibraryProject">Referencing a Library Project</a>
- <ol>
- <li><a href="#DeclaringLibrary">Declaring library components in the manifest
-file</a></li>
- <li><a href="#depAppBuild">Building a dependent application</a></li>
- </ol>
- </li>
- </ol>
-
- <h2>See also</h2>
-
- <ol>
- <li><a href=
- "{@docRoot}tools/testing/testing_otheride.html#CreateTestProjectCommand">Testing
- from Other IDEs</a></li>
- </ol>
- </div>
- </div>
-
- <p>The <code>android</code> tool provides you with commands to create all three types of
- projects. An Android project contains all of the files and resources that are needed to build a
- project into an .apk file for installation.
-
- <ul>
- <li>An Android project contains all of the files and resources that are needed to build a project into
- an .apk file for installation. You need to create an Android project for any application that you
- want to eventually install on a device.</li>
-
- <li>You can also designate an Android project as a library project, which allows it to be shared
- with other projects that depend on it. Once an Android project is designated as a library
- project, it cannot be installed onto a device.</li>
-
- <li>Test projects extend JUnit test functionality to include Android specific functionality. For
- more information on creating a test project, see <a href=
- "{@docRoot}tools/testing/testing_otheride.html">Testing from other IDEs</a>.</li>
- </ul>
-
-
- <h2 id="CreatingAProject">Creating an Android Project</h2>
-
- <p>To create an Android project, you must use the <code>android</code> tool. When you create a
- new project with <code>android</code>, it will generate a project directory with some default
- application files, stub files, configuration files and a build file.</p>
-
- <p>To create a new Android project, open a command-line, navigate to the <code>tools/</code>
- directory of your SDK and run:</p>
- <pre>
-android create project \
---target <target_ID> \
---name <your_project_name> \
---path path/to/your/project \
---activity <your_activity_name> \
---package <your_package_namespace>
-</pre>
-
- <ul>
- <li><code>target</code> is the "build target" for your application. It corresponds to an
- Android platform library (including any add-ons, such as Google APIs) that you would like to
- build your project against. To see a list of available targets and their corresponding IDs,
- execute: <code>android list targets</code>.</li>
-
- <li><code>name</code> is the name for your project. This is optional. If provided, this name
- will be used for your .apk filename when you build your application.</li>
-
- <li><code>path</code> is the location of your project directory. If the directory does not
- exist, it will be created for you.</li>
-
- <li><code>activity</code> is the name for your default {@link android.app.Activity} class. This
- class file will be created for you inside
- <code><em><path_to_your_project></em>/src/<em><your_package_namespace_path></em>/</code>
- . This will also be used for your .apk filename unless you provide a <code>name</code>.</li>
-
- <li><code>package</code> is the package namespace for your project, following the same rules as
- for packages in the Java programming language.</li>
- </ul>
-
- <p>Here's an example:</p>
- <pre>
-android create project \
---target 1 \
---name MyAndroidApp \
---path ./MyAndroidAppProject \
---activity MyAndroidAppActivity \
---package com.example.myandroid
-</pre>
-
- <p>Once you've created your project, you're ready to begin development. You can move your project
- folder wherever you want for development, but keep in mind that you must use the <a href=
- "{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) — located in the
- SDK <code>platform-tools/</code> directory — to send your application to the emulator (discussed
- later). So you need access between your project solution and the <code>platform-tools/</code> folder.</p>
-
- <p class="note"><strong>Tip:</strong> Add the <code>platform-tools/</code> as well as the <code>tools/</code> directory
- to your <code>PATH</code> environment variable.</p>
-
- <p class="caution"><strong>Caution:</strong> You should refrain from moving the location of the
- SDK directory, because this will break the SDK location property located in <code>local.properties</code>.
- If you need to update the SDK location, use the <code>android update project</code> command.
- See <a href="#UpdatingAProject">Updating a Project</a> for more information.</p>
-
- <h2 id="UpdatingAProject">Updating a Project</h2>
-
- <p>If you're up grading a project from an older version of the Android SDK or want to create a new
- project from existing code, use the <code>android update project</code> command to update the
- project to the new development environment. You can also use this command to revise the build
- target of an existing project (with the <code>--target</code> option) and the project name (with
- the <code>--name</code> option). The <code>android</code> tool will generate any files and
- folders (listed in the previous section) that are either missing or need to be updated, as needed
- for the Android project.</p>
-
- <p>To update an existing Android project, open a command-line and navigate to the
- <code>tools/</code> directory of your SDK. Now run:</p>
- <pre>
-android update project --name <project_name> --target <target_ID>
---path <path_to_your_project>
-</pre>
-
- <ul>
- <li><code>target</code> is the "build target" for your application. It corresponds to an
- Android platform library (including any add-ons, such as Google APIs) that you would like to
- build your project against. To see a list of available targets and their corresponding IDs,
- execute: <code>android list targets</code>.</li>
-
- <li><code>path</code> is the location of your project directory.</li>
-
- <li><code>name</code> is the name for the project. This is optional—if you're not
- changing the project name, you don't need this.</li>
- </ul>
-
- <p>Here's an example:</p>
- <pre>
-android update project --name MyApp --target 2 --path ./MyAppProject
-</pre>
-
- <h2 id="SettingUpLibraryProject">Setting up a Library Project</h2>
-
- <p>A library project is a standard Android project, so you can create a new one in the same way
- as you would a new application project. Specifically, you can use the <code>android</code> tool
- to generate a new library project with all of the necessary files and folders.</p>
-
- <p>To create a new library project, navigate to the <code><sdk>/tools/</code> directory and
- use this command:</p>
- <pre class="no-pretty-print">
-android create lib-project --name <your_project_name> \
---target <target_ID> \
---path path/to/your/project \
---package <your_library_package_namespace>
-</pre>
-
- <p>The <code>create lib-project</code> command creates a standard project structure that includes
- preset property that indicates to the build system that the project is a library. It does this by
- adding this line to the project's <code>project.properties</code> file:</p>
- <pre class="no-pretty-print">
-android.library=true
-</pre>
-
- <p>Once the command completes, the library project is created and you can begin moving source
- code and resources into it, as described in the sections below.</p>
-
- <p>If you want to convert an existing application project to a library project, so that other
- applications can use it, you can do so by adding a the <code>android.library=true</code> property
- to the application's <code>project.properties</code> file.</p>
-
- <h3 id="CreatingManifestFile">Creating the manifest file</h3>
-
- <p>A library project's manifest file must declare all of the shared components that it includes,
- just as would a standard Android application. For more information, see the documentation for
- <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
- <p>For example, the <a href=
- "{@docRoot}resources/samples/TicTacToeLib/AndroidManifest.html">TicTacToeLib</a> example library
- project declares the Activity <code>GameActivity</code>:</p>
- <pre>
-<manifest>
- ...
- <application>
- ...
- <activity android:name="GameActivity" />
- ...
- </application>
-</manifest>
-</pre>
-
- <h3 id="UpdatingLibraryProject">Updating a library project</h3>
-
- <p>If you want to update the build properties (build target, location) of the library project,
- use this command:</p>
- <pre>
-android update lib-project \
---target <em><target_ID></em> \
---path <em>path/to/your/project</em>
-</pre>
-
- <h2 id="ReferencingLibraryProject">Referencing a Library Project</h2>
-
- <p>If you are developing an application and want to include the shared code or resources from a
- library project, you can do so easily by adding a reference to the library project in the
- application project's build properties.</p>
-
- <p>To add a reference to a library project, navigate to the <code><sdk>/tools/</code>
- directory and use this command:</p>
- <pre>
-android update project \
---target <em><target_ID></em> \
---path <em>path/to/your/project</em>
---library <em>path/to/library_projectA</em>
-</pre>
-
- <p>This command updates the application project's build properties to include a reference to the
- library project. Specifically, it adds an <code>android.library.reference.<em>n</em></code>
- property to the project's <code>project.properties</code> file. For example:</p>
- <pre class="no-pretty-print">
-android.library.reference.1=path/to/library_projectA
-</pre>
-
- <p>If you are adding references to multiple libraries, note that you can set their relative
- priority (and merge order) by manually editing the <code>project.properties</code> file and
- adjusting the each reference's <code>.<em>n</em></code> index as appropriate. For example, assume
- these references:</p>
- <pre class="no-pretty-print">
-android.library.reference.1=path/to/library_projectA
-android.library.reference.2=path/to/library_projectB
-android.library.reference.3=path/to/library_projectC
-</pre>
-
- <p>You can reorder the references to give highest priority to <code>library_projectC</code> in
- this way:</p>
- <pre class="no-pretty-print">
-android.library.reference.2=path/to/library_projectA
-android.library.reference.3=path/to/library_projectB
-android.library.reference.1=path/to/library_projectC
-</pre>
-
- <p>Note that the <code>.<em>n</em></code> index in the references must begin at "1" and increase
- uniformly without "holes". References appearing in the index after a hole are ignored.</p>
-
- <p>At build time, the libraries are merged with the application one at a time, starting from the
- lowest priority to the highest. Note that a library cannot itself reference another library and
- that, at build time, libraries are not merged with each other before being merged with the
- application.</p>
-
- <h3 id="DeclaringLibrary">Declaring library components in the manifest file</h3>
-
- <p>In the manifest file of the application project, you must add declarations of all components
- that the application will use that are imported from a library project. For example, you must
- declare any <code><activity></code>, <code><service></code>,
- <code><receiver></code>, <code><provider></code>, and so on, as well as
- <code><permission></code>, <code><uses-library></code>, and similar elements.</p>
-
- <p>Declarations should reference the library components by their fully-qualified package names,
- where appropriate.</p>
-
- <p>For example, the <a href=
- "{@docRoot}resources/samples/TicTacToeMain/AndroidManifest.html">TicTacToeMain</a> example
- application declares the library Activity <code>GameActivity</code> like this:</p>
- <pre>
-<manifest>
- ...
- <application>
- ...
- <activity android:name="com.example.android.tictactoe.library.GameActivity" />
- ...
- </application>
-</manifest>
-</pre>
-
- <p>For more information about the manifest file, see the documentation for
- <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
- <h3 id="depAppBuild">Building a dependent application</h3>
-
- <p>To build an application project that depends on one or more library projects, you can use the
- standard Gradle build commands and compile modes, as described in <a href=
- "{@docRoot}tools/building/index.html">Building and Running</a>. The tools
-compile and merge all libraries referenced by the application as part of
- compiling the dependent application project. No additional commands or steps are necessary.</p>
-
diff --git a/docs/html/tools/projects/templates.jd b/docs/html/tools/projects/templates.jd
deleted file mode 100644
index 7426010..0000000
--- a/docs/html/tools/projects/templates.jd
+++ /dev/null
@@ -1,366 +0,0 @@
-page.title=Using Code Templates
-page.image=images/cards/card-using-code-templates_16x9_2x.png
-page.metaDescription=Quickly create Android app projects with various UI or functional components.
-page.tags=studio,templates,firstapp
-@jd:body
-
- <div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
-
- <ol>
- <li><a href="#app-templates">Application Templates</a>
- <ol>
- <li><a href="#blank-activity">BlankActivity Template</a></li>
- <li><a href="#full-screen-activity">Full Screen Activity Template</a></li>
- <li><a href="#master-detail-activity">Master Detail Flow Template</a></li>
- </ol>
- </li>
-
- <li><a href="#activity-templates">Activity Templates</a>
- <ol>
- <li><a href="#login-activity">Login Activity Template</a></li>
- <li><a href="#settings-activity">Settings Activity Template</a></li>
- </ol>
- </li>
- <li><a href="#object-templates">Other Templates</a></li>
- </ol>
-
- </div>
- </div>
-
-<p>The SDK tools provide templates for quickly creating Android application projects with the basic
- structure or for adding components to your existing application modules. The code templates
- provided by the Android SDK follow the Android design and development guidelines to get you on the
- right track to creating a beautiful, functional application.</p>
-
-<p>There are several types of Android code templates, which can create anything from an entire
- application down to specific application components. The main categories of code templates are as
- follows:</p>
-
-<ul>
- <li><a href="#app-templates">Application Templates</a></li>
- <li><a href="#activity-templates">Activity Templates</a></li>
- <li><a href="#object-templates">Other Templates</a></li>
-</ul>
-
-<p>
- The templates use <a href=
- "{@docRoot}tools/support-library/features.html">support library</a> objects
- if such objects are available. The support library objects make new features
- available on the widest range of platforms. For example, since the templates
- use the <a href=
- "{@docRoot}tools/support-library/features.html#v7-appcompat">appcompat
- library</a>, apps based on the templates use <a href=
- "{@docRoot}design/material/index.html">material design</a> user interface
- principles even if they are running on older Android devices that do not
- directly support material design.
-</p>
-
-<h2 id="app-templates">Application Templates</h2>
-
-<p>Application templates create basic Android application modules that you can immediately run and test
- on your Android device. These templates are available when you create a new Android module,
- though you can also use these templates to <a href="#activity-templates">add new activities</a>
- to an existing module.</p>
-
-<p>To use Android application templates:</p>
-
-<ol>
- <li>In Android Studio, select <strong>File > New > Module</strong>.</li>
- <li>Enter the settings for your application, including <strong>Application Name</strong>,
- <strong>Company Domain</strong>, <strong>Package name</strong>, and <strong>minimum SDK</strong>,
- then click <strong>Next</strong>.</li>
- <li>Select an application template to use, then click <strong>Next</strong>. For example,
- <ul>
- <li><a href="#blank-activity">BlankActivity</a></li>
- <li><a href="#full-screen-activity">FullScreenActivity</a></li>
- <li><a href="#master-detail-activity">MasterDetailFlow</a></li>
-
- </ul>
- </li>
- <li>Enter the settings for your activity, including <strong>Activity Name</strong>,
- <strong>layout Name</strong>, <strong>Title</strong>, and <strong>Menu Resource Name</strong>,
- then click <strong>Finish</strong>.</li>
-</ol>
-
-<p class="note">
- <strong>Note:</strong> The other activity template options also create applications, however these
- applications require further modification before they can be launched on an Android device.
-</p>
-
-
-<h3 id="blank-activity">Blank Activity Template</h3>
-
-<table>
- <tr>
- <th width="206px">Example</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/ba-no-navigation.png" alt="" />
- </td>
-
- <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
- None</strong> option creates a simple application that follows the
- <a href="{@docRoot}design/index.html">Android Design</a> guidelines. Use this template to
- create a basic, minimal app as a starting point for your project.</p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>{@link android.app.ActionBar}</li>
- <li>Action overflow</li>
- <li>Basic layout</li>
- </ul>
- </td>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/ba-tabs.png" alt="" />
- </td>
-
- <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
- Tabs</strong> or <strong>Tabs + Swipe</strong> option creates an application with
- three sections based on the {@link android.app.Fragment} class and a tabbed user
- interface.</p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>{@link android.app.ActionBar} for tab controls</li>
- <li>{@link android.app.Fragment} objects for section content</li>
- <li>Optional swipe gesture support based on the
- <a href="{@docRoot}design/patterns/swipe-views.html">swipe view</a> design pattern,
- which extends {@link android.support.v4.app.FragmentPagerAdapter} to manage section
- fragments</li>
- </ul>
- </td>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/ba-title-strip.png" alt="" />
- </td>
-
- <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
- Swipe Views + Title Strip</strong> option creates an application with three
- {@link android.app.Fragment} sections, a compact title strip header (known as
- <a href="{@docRoot}design/building-blocks/tabs.html#scrollable">Scrollable Tabs</a> in the
- <a href="{@docRoot}design/index.html">Android Design</a> guide) and swipe navigation between
- the sections, based on the <a href="{@docRoot}design/patterns/swipe-views.html">swipe
- view</a> design pattern.</p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>{@link android.support.v4.view.PagerTitleStrip} for section titles</li>
- <li>{@link android.app.Fragment} objects for section content</li>
- <li>{@link android.support.v4.app.FragmentPagerAdapter} to manage section fragments</li>
- </ul>
- </td>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/ba-dropdown.png" alt="" />
- </td>
-
- <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
- Dropdown</strong> option creates an application that extends
- {@link android.support.v4.app.FragmentActivity}, containing three
- {@link android.app.Fragment} sections, with an {@link android.app.ActionBar} using list mode
- navigation.</p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>{@link android.app.ActionBar} for list mode navigation</li>
- <li>{@link android.app.Fragment} objects for section content</li>
- </ul>
- </td>
- </tr>
-</table>
-
-
-<h3 id="full-screen-activity">Full Screen Activity Template</h3>
-
-<table>
- <tr>
- <th width="240px">Example</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/full-screen-activity.png" alt="" />
- </td>
-
- <td><p>This template provides an implementation of an activity which alternates between a
- primary, full screen view and a view with standard user interface controls, including the
- notification bar and application title bar. The full screen view is the default and a user
- can activate the standard view by touching the device screen.</p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>{@code SystemUiHider} implementation that manages hiding of the system user interface
- using a version-compatible approach</li>
- <li>Basic layout</li>
- </ul>
- </td>
- </tr>
-</table>
-
-
-<h3 id="master-detail-activity">Master Detail Flow Template</h3>
-
-<table>
- <tr>
- <th width="350px">Example</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/master-detail-flow.png" alt=""/>
- </td>
-
- <td><p>This template creates an adaptive layout for a set of items and associated details. On a
- tablet device, the item list and item details are displayed on the same screen. On a smaller
- device, the list and details are displayed on separate screens.</p>
-
- <p class="note">
- <strong>Note:</strong> This template follows the recommendations of the
- <a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a>
- Android training.
- </p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>Adaptive layout using
- <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"
- >alternative resource</a> XML files</li>
- <li>{@link android.support.v4.app.FragmentActivity}, {@link android.app.Fragment} and
- {@link android.support.v4.app.ListFragment} implementations</li>
- </ul></td>
- </tr>
-</table>
-
-
-<h2 id="activity-templates">Activity Templates</h2>
-
-<p>Android activity templates provide options to add new activities to your existing
- application.</p>
-
-<p>To use Android activity templates:</p>
-
-<ol>
- <li>Right click the project folder of the Android application where you want to add an
- activity.</li>
- <li>Select <strong>New > Other...</strong></li>
- <li>Select <strong>Android > Android Activity</strong>, then click <strong>Next</strong>.</li>
- <li>Select an activity template, then follow the instructions to add it to your existing
- application.
- <ul>
- <li><a href="#login-activity">LoginActivity</a></li>
- <li><a href="#settings-activity">SettingsActivity</a></li>
- <li><a href="#blank-activity">BlankActivity</a></li>
- <li><a href="#full-screen-activity">FullScreenActivity</a></li>
- <li><a href="#master-detail-activity">MasterDetailFlow</a></li>
- </ul>
- </li>
-</ol>
-
-<p>These templates create the same type of activity as they do when used as an application template,
-however the following templates create activities which are specifically intended to be used as part
-of an existing application.</p>
-
-
-<h3 id="login-activity">Login Activity Template</h3>
-
-<table>
- <tr>
- <th width="206px">Example</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/login-activity.png" alt="" />
- </td>
-
- <td><p>This activity template provides input fields and a sample implementation of
- an {@link android.os.AsyncTask} that asks users to login or register with their credentials.</p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>Recommended user interface for requesting login information</li>
- <li>{@link android.os.AsyncTask} implementation for handing network operations separately
- from the main user interface thread</li>
- <li>Progress indicator during network operations</li>
- </ul>
- </td>
- </tr>
-</table>
-
-
-<h3 id="settings-activity">Settings Activity Template</h3>
-
-<table>
- <tr>
- <th width="206px">Example</th>
-
- <th>Description</th>
- </tr>
-
- <tr>
- <td><img src="{@docRoot}images/code_templates/settings-activity.png" alt="" />
- </td>
-
- <td><p>This template extends the {@link android.preference.PreferenceActivity} class and uses an
- XML file to create preference settings. This template also demonstrates how to implement
- several data types for settings.</p>
-
- <p>This template includes:</p>
-
- <ul>
- <li>Activity extending {@link android.preference.PreferenceActivity}</li>
- <li>Preference values defined using XML files added to the {@code res/xml/} directory of
- your project.</li>
- </ul>
- </td>
- </tr>
-</table>
-
-
-<h2 id="object-templates">Other Templates</h2>
-
-<p>Android object templates provide options to add new components to your existing application,
-including the previously mentioned activities as well as the following additional items:</p>
-
-<p>To use Android object templates:</p>
-
-<ol>
- <li>Right-click the module folder of the Android application where you want to add a code
- component.</li>
- <li>Select <strong>New</strong></li>
- <li>Select the object type and template, then follow the instructions to add it to your existing
- application.
- <ul>
- <li>AIDL</li>
- <li>Activity</li>
- <li>Folder</li>
- <li>Fragment</li>
- <li>Google</li>
- <li>Other</li>
- <li>Service</li>
- <li>UI Component</li>
- <li>Wear</li>
- <li>Widget</li>
- <li>XML</li>
- </ul>
- </li>
-</ol>
diff --git a/docs/html/tools/publishing/app-signing.jd b/docs/html/tools/publishing/app-signing.jd
deleted file mode 100644
index 21067c6..0000000
--- a/docs/html/tools/publishing/app-signing.jd
+++ /dev/null
@@ -1,358 +0,0 @@
-page.title=Signing Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#overview">Signing Overview</a>
- <ol>
- <li><a href="#debug-mode">Signing in Debug Mode</a></li>
- <li><a href="#release-mode">Signing in Release Mode</a></li>
- <li><a href="#wear-apps">Signing Android Wear Apps</a></li>
- </ol>
-</li>
-<li><a href="#studio">Signing Your App in Android Studio</a>
- <ol>
- <li><a href="#sign-auto">Automatically Signing Your App</a></li>
- </ol>
-</li>
-<li><a href="#studio">Signing Your App with Android Studio</a></li>
-<li><a href="#considerations">Signing Considerations</a></li>
-<li><a href="#secure-key">Securing Your Private Key</a></li>
-<li><a href="#expdebug">Expiry of the Debug Certificate</a></li>
-<li><a href="#signing-manually">Signing Your App Manually</a></li>
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a></li>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish</a></li>
-</ol>
-
-</div>
-</div>
-
-
-<p>Android requires that all apps be digitally signed with a certificate before they can be
-installed. Android uses this certificate to identify the author of an app, and the certificate
-does not need to be signed by a certificate authority. Android apps often use self-signed
-certificates. The app developer holds the certificate's private key.</p>
-
-
-<h2 id="overview">Signing Overview</h2>
-
-<p>You can sign an app in debug or release mode. You sign your app in debug mode during development
-and in release mode when you are ready to distribute your app. The Android SDK generates a
-certificate to sign apps in debug mode. To sign apps in release mode, you need to generate
-your own certificate.</p>
-
-<h3 id="debug-mode">Signing in Debug Mode</h3>
-
-<p>In debug mode, you sign your app with a debug certificate generated by the Android SDK tools.
-This certificate has a private key with a known password, so you can run and debug your app
-without typing the password every time you make a change to your project.</p>
-
-<p>Android Studio signs your app in debug mode automatically when
-you run or debug your project from the IDE.</p>
-
-<p>You can run and debug an app signed in debug mode on the emulator and on devices connected
-to your development machine through USB, but you cannot distribute an app signed in debug
-mode.</p>
-
-<p>By default, the <em>debug</em> configuration uses a debug keystore, with a known
-password and a default key with a known password.
-The debug keystore is located in <code>$HOME/.android/debug.keystore</code>, and
-is created if not present.
-The debug build type is set to use this debug <code>SigningConfig</code> automatically.</p>
-
-<p>For more information about how to build and run apps in debug mode, see
-<a href="{@docRoot}tools/building/index.html">Building and Running</a>.</p>
-
-<h3 id="release-mode">Signing in Release Mode</h3>
-
-<p>In release mode, you sign your app with your own certificate:</p>
-
-<ol>
-<li><em>Create a keystore.</em> A <strong>keystore</strong> is a binary file that contains a
-set of private keys. You must keep your keystore in a safe and secure place.</li>
-<li><em>Create a private key.</em> A <strong>private key</strong> represents the entity to
-be identified with the app, such as a person or a company.</li>
-<li><p>Add the signing configuration to the build file for the <code>app</code> module:</p>
-
-<pre>
-...
-android {
- ...
- defaultConfig { ... }
- signingConfigs {
- release {
- storeFile file("myreleasekey.keystore")
- storePassword "password"
- keyAlias "MyReleaseKey"
- keyPassword "password"
- }
- }
- buildTypes {
- release {
- ...
- signingConfig signingConfigs.release
- }
- }
-}
-...
-</pre>
- </li>
-<li>Invoke the <code>assembleRelease</code> build task from Android Studio.</li>
-</ol>
-
-<p>The package in <code>app/build/apk/app-release.apk</code> is now signed with your release
-key.</p>
-
-<p class="note"><strong>Note:</strong> Including the passwords for your release key and keystore
-inside the build file is not a good security practice. Alternatively, you can configure the build
-file to obtain these passwords from environment variables or have the build process prompt you
-for these passwords.</p>
-
-<p>To obtain these passwords from environment variables:</p>
-
-<pre>
-storePassword System.getenv("KSTOREPWD")
-keyPassword System.getenv("KEYPWD")
-</pre>
-
-<p>To have the build process prompt you for these passwords if you are invoking the build from
-the command line:</p>
-
-<pre>
-storePassword System.console().readLine("\nKeystore password: ")
-keyPassword System.console().readLine("\nKey password: ")
-</pre>
-
-
-<p>After you complete this process, you can distribute your app and publish it on Google Play.</p>
-
-<p class="warning"><strong>Warning:</strong> Keep your keystore and private key in a safe and
-secure place, and ensure that you have secure backups of them. If you publish an app to Google
-Play and then lose the key with which you signed your app, you will not be able to publish
-any updates to your app, since you must always sign all versions of your app with the same
-key.</p>
-
-<p>The rest of this document provides detailed instructions about how to generate a private
-key and sign your apps in release mode with Android Studio.</p>
-
-<h3 id="wear-apps">Signing Android Wear Apps</h3>
-
-<p>When publishing Android Wear apps, you package the wearable app inside of a handheld app,
-because users cannot browse and install apps directly on the wearable. Both apps must be signed.
-For more information on packaging and signing Android Wear apps, see
-<a href="{@docRoot}training/wearables/apps/packaging.html">Packaging Wearable Apps</a>.</p>
-
-
-<h2 id="studio">Signing Your App in Android Studio</h2>
-
-<p>To sign your app in release mode in Android Studio, follow these steps:</p>
-
-<ol>
-<li>On the menu bar, click <strong>Build</strong> > <strong>Generate Signed APK</strong>.</li>
-<li><p>On the <em>Generate Signed APK Wizard</em> window, click <strong>Create new</strong> to
-create a new keystore.</p>
-<p>If you already have a keystore, go to step 4.</p></li>
-<li><p>On the <em>New Key Store</em> window, provide the required information as shown
-in figure 1.</p>
-<p>Your key should be valid for at least 25 years, so you can sign app updates
-with the same key through the lifespan of your app.</p>
-<img src="{@docRoot}images/tools/signstudio2.png" alt=""
- width="416" height="364" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 1</strong>. Create a new keystore in Android Studio.</p>
-</li>
-<li><p>On the <em>Generate Signed APK Wizard</em> window, select a keystore, a private key, and
-enter the passwords for both. Then click <strong>Next</strong>.</p>
-<img src="{@docRoot}images/tools/signstudio1.png" alt=""
- width="349" height="232" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 2</strong>. Select a private key in Android Studio.</p>
-</li>
-<li><p>
- On the next window, select a destination for the signed APK(s), select the
- build type, (if applicable) choose the product flavor(s), and click
- <strong>Finish</strong>.</p>
-<img src="{@docRoot}images/tools/signstudio3.png" alt=""
- width="350" height="175" style="margin-top:15px"/>
-<p class="img-caption">
- <strong>Figure 3</strong>. Generate signed APKs for the selected product
- flavors.
-</p>
-<p class="note">
- <strong>Note:</strong> If your project uses product flavors, you can select
- multiple product flavors while holding down the <strong>Ctrl</strong> key on
- Windown/Linux, or the <strong>Command</strong> key on Mac OSX. Android Studio
- will generate a separate APK for each selected product flavor.
-</p>
-
-</li>
-</ol>
-
-<h3 id="sign-auto">Automatically Signing Your App</h3>
-
-<p>In Android Studio, you can configure your project to sign your release APK automatically
-during the build process:</p>
-
-<ol>
-<li>On the project browser, right click on your app and select <strong>Open Module
-Settings</strong>.</li>
-<li>On the <em>Project Structure</em> window, select your app's module under <em>Modules</em>.</li>
-<li>Click on the <strong>Signing</strong> tab.</li>
-<li><p>Select your keystore file, enter a name for this signing configuration (as you may create
-more than one), and enter the required information.</p>
-<img src="{@docRoot}images/tools/signstudio10.png" alt=""
- width="623" height="372" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 4</strong>. Create a signing configuration in Android
-Studio.</p>
-</li>
-<li>Click on the <strong>Build Types</strong> tab.</li>
-<li>Select the <strong>release</strong> build.</li>
-<li><p>Under <em>Signing Config</em>, select the signing configuration you just created.</p>
-<img src="{@docRoot}images/tools/signstudio11.png" alt=""
- width="623" height="372" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 5</strong>. Select a signing configuration in Android
-Studio.</p>
-</li>
-<li>Click <strong>OK</strong>.</li>
-</ol>
-
-<p>You can also specify your signing settings in Gradle configuration files. For more information,
-see <a href="{@docRoot}tools/building/configuring-gradle.html#configureSigning">Configuring Gradle
-Builds</a>.</p>
-
-
-
-<h2 id="considerations">Signing Considerations</h2>
-
-<p>You should sign all of your apps with the same certificate throughout the expected lifespan
-of your applications. There are several reasons why you should do so:</p>
-
-<ul>
-<li>App upgrade: When the system is installing an update to an app, it compares the certificate(s)
-in the new version with those in the existing version. The system allows the update if the
-certificates match. If you sign the new version with a different certificate, you must assign a
-different package name to the application—in this case, the user installs the new version as
-a completely new application.</li>
-<li>App modularity: Android allows apps signed by the same certificate to run in the same process,
-if the applications so requests, so that the system treats them as a single application. In this
-way you can deploy your app in modules, and users can update each of the modules independently.</li>
-<li>Code/data sharing through permissions: Android provides signature-based permissions
-enforcement, so that an app can expose functionality to another app that is signed with a
-specified certificate. By signing multiple apps with the same certificate and using
-signature-based permissions checks, your apps can share code and data in a secure manner.</li>
-</ul>
-
-<p>If you plan to support upgrades for an app, ensure that your key has a validity
-period that exceeds the expected lifespan of that app. A validity period of 25 years or more is
-recommended. When your key's validity period expires, users will no longer be able to seamlessly
-upgrade to new versions of your application.</p>
-
-<p>If you plan to publish your apps on Google Play, the key you use to sign these apps must have
-a validity period ending after 22 October 2033. Google Play enforces this requirement to ensure
-that users can seamlessly upgrade apps when new versions are available.</p>
-
-
-<h2 id="secure-key">Securing Your Private Key</h2>
-
-<p>Maintaining the security of your private key is of critical importance, both to you and to
-the user. If you allow someone to use your key, or if you leave your keystore and passwords in
-an unsecured location such that a third-party could find and use them, your authoring identity
-and the trust of the user are compromised.</p>
-
-<p>If a third party should manage to take your key without your knowledge or permission, that
-person could sign and distribute apps that maliciously replace your authentic apps or corrupt
-them. Such a person could also sign and distribute apps under your identity that attack
-other apps or the system itself, or corrupt or steal user data.</p>
-
-<p>Your private key is required for signing all future versions of your app. If you lose or
-misplace your key, you will not be able to publish updates to your existing appn. You cannot
-regenerate a previously generated key.</p>
-
-<p>Your reputation as a developer entity depends on your securing your private key properly, at
-all times, until the key is expired. Here are some tips for keeping your key secure:</p>
-
-<ul>
-<li>Select strong passwords for the keystore and key.</li>
-<li>Do not give or lend anyone your private key, and do not let unauthorized persons know your
-keystore and key passwords.</li>
-<li>Keep the keystore file containing your private key in a safe, secure place.</li>
-</ul>
-
-<p>In general, if you follow common-sense precautions when generating, using, and storing
-your key, it will remain secure.</p>
-
-
-<h2 id="expdebug">Expiry of the Debug Certificate</h2>
-
-<p>The self-signed certificate used to sign your application in debug mode has an expiration date
-of 365 days from its creation date. When the certificate expires, you will get a build error.</p>
-
-<p>To fix this problem, simply delete the <code>debug.keystore</code> file. The default storage
-location is in <code>~/.android/</code> on OS X and Linux, in <code>C:\Documents and
-Settings\<user>\.android\</code> on Windows XP, and in
-<code>C:\Users\<user>\.android\</code> on Windows Vista and Windows 7.</p>
-
-<p>The next time you build and run your app, the build tools will regenerate a
- new keystore and debug key. Note that you must run your app, building alone
- does not regenerate the keystore and debug key.</p>
-
-
-<h2 id="signing-manually">Signing Your App Manually</h2>
-
-<p>You do not need Android Studio to sign your app. You can sign
-your app from the command line using standard tools from the Android SDK and the JDK. To sign
-an app in release mode from the command line:</p>
-
-<ol>
-<li>
- <p>Generate a private key using
- <code><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html"
- >keytool</a></code>.
- For example:</p>
-<pre class="no-pretty-print">
-$ keytool -genkey -v -keystore my-release-key.keystore
--alias alias_name -keyalg RSA -keysize 2048 -validity 10000
-</pre>
- <p>This example prompts you for passwords for the keystore and key, and to provide the
- Distinguished Name fields for your key. It then generates the keystore as a file called
- <code>my-release-key.keystore</code>. The keystore contains a single key, valid for 10000 days.
- The alias is a name that you will use later when signing your app.</p>
-</li>
-<li style="margin-top:18px">
- <p>Compile your app in release mode to obtain an unsigned APK.</p>
-</li>
-<li style="margin-top:18px">
- <p>Sign your app with your private key using
- <code><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html">jarsigner</a></code>:
- </p>
-<pre class="no-pretty-print">
-$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
--keystore my-release-key.keystore my_application.apk alias_name
-</pre>
- <p>This example prompts you for passwords for the keystore and key. It then modifies the APK
- in-place to sign it. Note that you can sign an APK multiple times with different keys.</p>
-</li>
-<li style="margin-top:18px">
- <p>Verify that your APK is signed. For example:</p>
-<pre class="no-pretty-print">
-$ jarsigner -verify -verbose -certs my_application.apk
-</pre>
-</li>
-<li style="margin-top:18px">
- <p>Align the final APK package using
- <code><a href="{@docRoot}tools/help/zipalign.html">zipalign</a></code>.</p>
-<pre class="no-pretty-print">
-$ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
-</pre>
- <p><code>zipalign</code> ensures that all uncompressed data starts with a particular byte
- alignment relative to the start of the file, which reduces the amount of RAM consumed by an
- app.</p>
-</li>
-</ol>
diff --git a/docs/html/tools/publishing/preparing.jd b/docs/html/tools/publishing/preparing.jd
deleted file mode 100644
index 3acaedc..0000000
--- a/docs/html/tools/publishing/preparing.jd
+++ /dev/null
@@ -1,354 +0,0 @@
-page.title=Preparing for Release
-page.metaDescription=Developer documentation on how to build the signed, release-ready APK. This process is the same for all Android apps.
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Quickview</h2>
- <ul>
- <li>Learn which resources you'll need to release your app.</li>
- <li>Find out how to configure and build your app for release.</li>
- <li>Learn best practices for releasing your app.</li>
- </ul>
- <h2>In this document</h2>
- <ol>
- <li><a href="#publishing-intro">Introduction</a></li>
- <li><a href="#publishing-gather">Gathering Materials and Resources</a></li>
- <li><a href="#publishing-configure">Configuring Your Application</a></li>
- <li><a href="#publishing-build">Building Your Application</a></li>
- <li><a href="#publishing-resources">Preparing External Servers and Resources</a></li>
- <li><a href="#publishing-test">Testing Your Application for Release</a></li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing Overview</a></li>
- <li><a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a></li>
- <li><a href="{@docRoot}distribute/tools/launch-checklist.html">Launch Checklist for Google Play</a></li>
- </ol>
- </div>
-</div>
-
-<p>Before you distribute your Android application to users you need to prepare it for release. The
-preparation process is a required <a href="{@docRoot}tools/workflow/index.html">development
-task</a> for all Android applications and is the first step in the publishing process (see figure
-1).</p>
-
-<p>When you prepare your application for release, you configure, build, and test a release
-version of your application. The configuration tasks are straightforward, involving basic code
-cleanup and code modification tasks that help optimize your application. The build process is
-similar to the debug build process and can be done using JDK and Android SDK tools. The testing
-tasks serve as a final check, ensuring that your application performs as expected under real-world
-conditions. When you are finished preparing your application for release you have a signed
-<code>.apk</code> file, which you can distribute directly to users or distribute through an
-application marketplace such as Google Play.</p>
-
-<p>This document summarizes the main tasks you need to perform to prepare your application for
-release. The tasks that are described in this document apply to all Android applications regardless
-how they are released or distributed to users. If you are releasing your application through Google
-Play, you should also read <a href="{@docRoot}distribute/tools/launch-checklist.html">Publishing
-Checklist for Google Play</a> to be sure your release-ready application satisfies all Google Play
-requirements.</p>
-
-<p class="note"><strong>Note:</strong> As a best practice, your application should meet all of your
-release criteria for functionality, performance, and stability before you perform the tasks outlined
-in this document.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview_prep.png"
- alt="Shows how the preparation process fits into the development process"
- height="190"
- id="figure1" />
-<p class="img-caption">
- <strong>Figure 1.</strong> Preparing for release is a required <a
-href="{@docRoot}tools/workflow/index.html">development
-task</a> and is the first step in the publishing process.
-</p>
-
-<h2 id="publishing-intro">Introduction</h2>
-
-<p>To release your application to users you need to create a release-ready package that users can
-install and run on their Android-powered devices. The release-ready package contains the same
-components as the debug <code>.apk</code> file — compiled source code, resources, manifest
-file, and so on — and it is built using the same build tools. However, unlike the debug
-<code>.apk</code> file, the release-ready <code>.apk</code> file is signed with your own certificate
-and it is optimized with the zipalign tool.</p>
-
-<div class="figure" style="width:331px">
- <img src="{@docRoot}images/publishing/publishing_preparing.png"
- alt="Shows the five tasks you perform to prepare your app for release"
- height="450" />
- <p class="img-caption">
- <strong>Figure 2.</strong> You perform five main tasks to prepare your application for
- release.
- </p>
-</div>
-
-<p>The signing and optimization tasks are usually seamless if you are building your application with
-Android Studio. For example, you can use Android Studio with the Gradle build files to compile, sign,
-and optimize your application all at once. You can also configure the Gradle build files to do the
-same when you build from the command line. For more details about using the Gradle build files, see
-the <a href="{@docRoot}sdk/installing/studio-build.html">Build System</a> guide.</p>
-
-<p>To prepare your application for release you typically perform five main tasks (see figure 2).
-Each main task may include one or more smaller tasks depending on how you are releasing your
-application. For example, if you are releasing your application through Google Play you may want
-to add special filtering rules to your manifest while you are configuring your application for
-release. Similarly, to meet Google Play publishing guidelines you may have to prepare screenshots
-and create promotional text while you are gathering materials for release.</p>
-
-<p>You usually perform the tasks listed in figure 2 after you have throroughly debugged and tested
-your application. The Android SDK contains several tools to help you test and debug your Android
-applications. For more information, see the <a
-href="{@docRoot}tools/debugging/index.html">Debugging</a> and <a
-href="{@docRoot}tools/testing/index.html">Testing</a> sections in the Dev Guide.</p>
-
-<h2 id="publishing-gather">Gathering Materials and Resources</h2>
-
-<p>To begin preparing your application for release you need to gather several supporting items. At a
-minimum this includes cryptographic keys for signing your application and an application icon. You
-might also want to include an end-user license agreement.</p>
-
-<h4 id="publishing-keys">Cryptographic keys</h4>
-
-<p>The Android system requires that each installed application be digitally signed with a
-certificate that is owned by the application's developer (that is, a certificate for which the
-developer holds the private key). The Android system uses the certificate as a means of identifying
-the author of an application and establishing trust relationships between applications. The
-certificate that you use for signing does not need to be signed by a certificate authority; the
-Android system allows you to sign your applications with a self-signed certificate. To learn about
-certificate requirements, see <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your
-Applications</a>.</p>
-
-<p class="caution"><strong>Important:</strong> Your application must be signed with a cryptographic
-key whose validity period ends after 22 October 2033.</p>
-
-<p>You may also have to obtain other release keys if your application accesses a service or uses a
-third-party library that requires you to use a key that is based on your private key. For example,
-if your application uses the <a
-href="http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html">MapView</a>
-class, which is part of the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>, you will need to register your application with the Google Maps service and obtain
-a Maps API key. For information about getting a Maps API key, see <a
-href="http://code.google.com/android/add-ons/google-apis/mapkey.html"> Obtaining a Maps API
-key</a>.</p>
-
-<h4>Application Icon</h4>
-
-<p>Be sure you have an application icon and that it meets the recommended <a
-href="{@docRoot}guide/practices/ui_guidelines/icon_design_launcher.html">icon guidelines</a>. Your
-application's icon helps users identify your application on a device's Home
-screen and in the Launcher window. It also appears in Manage Applications, My Downloads, and
-elsewhere. In addition, publishing services such as Google Play display your icon to users.</p>
-
-<p class="note"><strong>Note:</strong> If you are releasing your application on Google Play, you
-need to create a high resolution
- version of your icon. See <a
-href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">Graphic
-Assets for your Application</a> for more information.</p>
-
-<h4>End-user License Agreement</h4>
-
-<p>Consider preparing an End User License Agreement (EULA) for your application. A EULA can help
-protect your person, organization, and intellectual property, and we recommend that you provide one
-with your application.</p>
-
-<h4>Miscellaneous Materials</h4>
-
-<p>You might also have to prepare promotional and marketing materials to publicize your application.
-For example, if you are releasing your application on Google Play you will need to prepare some
-promotional text and you will need to create screenshots of your application. For more
-information, see
-<a href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">
-Graphic Assets for your Application</a></p>
-
-<h2 id="publishing-configure">Configuring Your Application for Release</h2>
-
-<p>After you gather all of your supporting materials you can start configuring your application
-for release. This section provides a summary of the configuration changes we recommend that you make
-to your source code, resource files, and application manifest prior to releasing your application.
-Although most of the configuration changes listed in this section are optional, they are
-considered good coding practices and we encourage you to implement them. In some cases,
-you may have already made these configuration changes as part of your development process.</p>
-
-<h4>Choose a good package name</h4>
-
-<p>Make sure you choose a package name that is suitable over the life of your application. You
-cannot change the package name after you distribute your application to users. You can set the
-package name in application's manifest file. For more information, see the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a> attribute
-documentation.</p>
-
-<h4>Turn off logging and debugging</h4>
-
-<p>Make sure you deactivate logging and disable the debugging option before you build your
-application for release. You can deactivate logging by removing calls to
-{@link android.util.Log} methods in your source files. You can disable debugging by removing the
-<code>android:debuggable</code> attribute from the <code><application></code> tag in your
-manifest file, or by setting the <code>android:debuggable</code> attribute to
-<code>false</code> in your manifest file. Also, remove any log files or static test files that
-were created in your project.</p>
-
-<p>Also, you should remove all {@link android.os.Debug} tracing calls that you
-added to your code, such as {@link android.os.Debug#startMethodTracing()} and
-{@link android.os.Debug#stopMethodTracing()} method calls.</p>
-
-<p class="caution"><strong>Important:</strong> Ensure that you disable debugging for
-your app if using {@link android.webkit.WebView} to display paid for content or if using JavaScript
-interfaces, since debugging allows users to inject scripts and extract content using Chrome
-DevTools. To disable debugging, use the
-{@link android.webkit.WebView#setWebContentsDebuggingEnabled(boolean) WebView.setWebContentsDebuggingEnabled()}
-method.</p>
-
-<h4>Clean up your project directories</h4>
-
-<p>Clean up your project and make sure it conforms to the directory structure described in <a
-href="{@docRoot}tools/projects/index.html#ApplicationProjects">Android Projects</a>.
-Leaving stray or orphaned files in your project can prevent your application from compiling and
-cause your application to behave unpredictably. At a minimum you should do the following cleanup
-tasks:</p>
-
-<ul>
- <li>Review the contents of your <code>jni/</code>, <code>lib/</code>, and <code>src/</code>
- directories. The <code>jni/</code> directory should contain only source files associated with the
- <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK</a>, such as
- <code>.c</code>, <code>.cpp</code>, <code>.h</code>, and <code>.mk</code> files. The
- <code>lib/</code> directory should contain only third-party library files or private library
- files, including prebuilt shared and static libraries (for example, <code>.so</code> files). The
- <code>src/</code> directory should contain only the source files for your application
- (<code>.java</code> and <code>.aidl</code> files). The <code>src/</code> directory should not
- contain any <code>.jar</code> files.</li>
- <li>Check your project for private or proprietary data files that your application does not use
- and remove them. For example, look in your project's <code>res/</code> directory for old
- drawable files, layout files, and values files that you are no longer using and delete them.</li>
- <li>Check your <code>lib/</code> directory for test libraries and remove them if they are no
- longer being used by your application.</li>
- <li>Review the contents of your <code>assets/</code> directory and your <code>res/raw/</code>
- directory for raw asset files and static files that you need to update or remove prior to
- release.</li>
-</ul>
-
-<h4>Review and update your manifest and Gradle build settings</h4>
-
-<p>Verify that the following manifest and build files items are set correctly:</p>
-
-<ul>
- <li><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
- <uses-permission></a> element
- <p>You should specify only those permissions that are relevant and required for your application.</p>
- </li>
- <li><code>android:icon</code> and <code>android:label</code> attributes
- <p>You must specify values for these attributes, which are located in the
- <a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a>
- element.</p>
- </li>
- <li><code>android:versionCode</code> and <code>android:versionName</code> attributes.
- <p>We recommend that you specify values for these attributes, which are located in the
- <a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a>
- element. For more information see
- <a href="{@docRoot}tools/publishing/versioning.html">Versioning your Application</a>.</p>
- </li>
-</ul>
-
-<p>There are several additional manifest or build file elements that you can set if you are releasing your
-application on Google Play. For example, the <code>android:minSdkVersion</code> and
-<code>android:targetSdkVersion</code> attributes, which are located in the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"> <uses-sdk></a> element. For more
-information about these and other Google Play settings, see <a
-href="{@docRoot}google/play/filters.html">Filters on Google Play</a>.</p>
-
-<h4>Address compatibility issues</h4>
-
-<p>Android provides several tools and techniques to make your application compatible with a wide
-range of devices. To make your application available to the largest number of users, consider
-doing the following:</p>
-
-<ul>
- <li><strong>Add support for multiple screen configurations</strong>
- <p>Make sure you meet the
- <a href="{@docRoot}guide/practices/screens_support.html#screen-independence">
- best practices for supporting multiple screens</a>. By supporting multiple screen configurations
- you can create an application that functions properly and looks good on any of the screen sizes
- supported by Android.</p>
- </li>
- <li><strong>Optimize your application for Android tablet devices.</strong>
- <p>If your application is designed for devices older than Android 3.0, make it compatible
- with Android 3.0 devices by following the guidelines and best practices described in
- <a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0
- </a>.</p>
- </li>
- <li><strong>Consider using the Support Library</strong>
- <p>If your application is designed for devices running Android 3.x, make your application
- compatible with older versions of Android by adding the
- <a href="{@docRoot}tools/support-library/index.html">Support Library</a> to your
- application project. The Support Library provides static support libraries that you can add to
- your Android application, which enables you to use APIs that are either not available on
- older platform versions or use utility APIs that are not part of the framework APIs.</p>
- </li>
-</ul>
-
-<h4>Update URLs for servers and services</h4>
-
-<p>If your application accesses remote servers or services, make sure you are using the production
-URL or path for the server or service and not a test URL or path.</p>
-
-<h4>Implement Licensing (if you are releasing on Google Play)</h4>
-
-<p>If you are releasing a paid application through Google Play, consider adding support for
-Google Play Licensing. Licensing lets you control access to your application based on whether the
-current user has purchased it. Using Google Play Licensing is optional even if you are
-releasing your app through Google Play.</p>
-
-<p>For more information about Google Play Licensing Service and how to use it in your
-application, see <a href="{@docRoot}google/play/licensing/index.html">Application Licensing</a>.</p>
-
-<h2 id="publishing-build">Building Your Application for Release</h2>
-
-<p>After you finish configuring your application you can build it into a release-ready
-<code>.apk</code> file that is signed and optimized. The JDK includes the tools for signing the
-<code>.apk</code> file (Keytool and Jarsigner); the Android SDK includes the tools for compiling and
-optimizing the <code>.apk</code> file. If you are using Android Studio or you are using
-the Gradle build system from the command line, you can automate the entire build process.
-For more information about configuring Gradle builds, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-<h3>Building with Android Studio</h3>
-
-<p>You can use the Gradle build system, integrated with Android Studio to build a release-ready
-<code>.apk</code> file that is signed with your private key and optimized. To learn how to setup and
-run builds from Android Studio, see
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.</p>
-
-<p>The build process assumes that you have a certificate and private key
-suitable for signing your application. If you do not have a suitable certificate and private key,
-Android Studio can help you generate one. For more information about the signing process, see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-
-<h2 id="publishing-resources">Preparing External Servers and Resources</h2>
-
-<p>If your application relies on a remote server, make sure the server is secure and that it is
-configured for production use. This is particularly important if you are implementing <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> in your application and you are
-performing the signature verification step on a remote server.</p>
-
-<p>Also, if your application fetches content from a remote server or a real-time service (such as a
-content feed), be sure the content you are providing is up to date and production-ready.</p>
-
-<h2 id="publishing-test">Testing Your Application for Release</h2>
-
-<p>Testing the release version of your application helps ensure that your application runs properly
-under realistic device and network conditions. Ideally, you should test your application on at least
-one handset-sized device and one tablet-sized device to verify that your user interface elements are
-sized correctly and that your application's performance and battery efficiency are acceptable.</p>
-
-<p>As a starting point for testing, see
-<a href="{@docRoot}tools/testing/what_to_test.html">What to Test</a>. This article provides
-a summary of common Android situations that you should consider when you are testing. When you are
-done testing and you are satisfied that the release version of your application
-behaves correctly, you can release your application to users. For more information, see
-<a href="{@docRoot}tools/publishing/publishing_overview.html#publishing-release">Releasing Your
-Application to Users</a>. If you are publishing your application on Google Play, see
-<a href="{@docRoot}distribute/tools/launch-checklist.html">Launch Checklist
-for Google Play</a>.</p>
-
-
diff --git a/docs/html/tools/publishing/publishing_overview.jd b/docs/html/tools/publishing/publishing_overview.jd
deleted file mode 100644
index 167758a..0000000
--- a/docs/html/tools/publishing/publishing_overview.jd
+++ /dev/null
@@ -1,242 +0,0 @@
-page.title=Publishing Overview
-page.metaDescription=Start here for an overview of publishing options for Android apps.
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>Quickview</h2>
- <ul>
- <li>Learn how to publish Android apps.</li>
- <li>Find out how to prepare apps for release.</li>
- <li>Learn how to release apps to users.</li>
- </ul>
- <h2>In this document</h2>
- <ol>
- <li><a href="#publishing-prepare">Preparing Your Application for Release</a></li>
- <li><a href="#publishing-release">Releasing Your Application to Users</a>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}distribute/tools/launch-checklist.html">Publishing on Google Play</a></li>
- </ol>
-</div>
-</div>
-
-<p>Publishing is the general process that makes your Android applications available to users. When you
-publish an Android application you perform two main tasks:</p>
-
-<ul>
- <li>You prepare the application for release.
- <p>During the preparation step you build a release version of your application, which users can
- download and install on their Android-powered devices.</p>
- </li>
- <li>You release the application to users.
- <p>During the release step you publicize, sell, and distribute the release version of your
- application to users.</p>
- </li>
-</ul>
-
-<p>Usually, you release your application through an application marketplace, such as <a href="{@docRoot}distribute/googleplay/index.html">Google Play</a>.
-However, you can also release applications by sending them directly to users or by letting users
-download them from your own website.</p>
-
-<p>Figure 1 shows how the publishing process fits into the overall Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-The publishing process is typically performed after you finish testing your application in a debug
-environment. Also, as a best practice, your application should meet all of your release criteria for
-functionality, performance, and stability before you begin the publishing process.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview.png" alt="Shows where the publishing
- process fits into the overall development process" height="86" id="figure1" />
-<p class="img-caption">
- <strong>Figure 1.</strong> Publishing is the last phase of the Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-</p>
-
-<h2 id="publishing-prepare">Preparing Your Application for Release</h2>
-
-<p>Preparing your application for release is a multi-step process that involves the following
-tasks:</p>
-
-<ul>
- <li>Configuring your application for release.
- <p>At a minimum you need to remove {@link android.util.Log} calls and remove the
- <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
- attribute from your manifest file. You should also provide values for the
- <code>android:versionCode</code> and <code>android:versionName</code> attributes, which are
- located in the
- <a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a>
- element. You may also have to configure several other settings to meet Google Play
- requirements or accomodate whatever method you're using to release your application.</p>
- <p>If you are using Gradle build files, you can use the <em>release</em> build type to set
- your build settings for the published version of your app. </p>
- </li>
- <li>Building and signing a release version of your application.
- <p>You can use the Gradle build files with the <em>release</em> build type to build and sign a
- release version of your application. See
- <a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android
- Studio</a>.</p>
- </li>
- <li>Testing the release version of your application.
- <p>Before you distribute your application, you should thoroughly test the release version on at
- least one target handset device and one target tablet device.</p>
- </li>
- <li>Updating application resources for release.
- <p>You need to be sure that all application resources such as multimedia files and graphics
- are updated and included with your application or staged on the proper production servers.</p>
- </li>
- <li>Preparing remote servers and services that your application depends on.
- <p>If your application depends on external servers or services, you need to be sure they
- are secure and production ready.</p>
- </li>
-</ul>
-
-<p>You may have to perform several other tasks as part of the preparation process. For example, you
-will need to get a private key for signing your application, and you may need to get a Maps API
-release key if you are using the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>. You will also need to create an icon for your application, and you may want to prepare
-an End User License Agreement (EULA) to protect your person, organization, and intellectual
-property.</p>
-
-<p>When you are finished preparing your application for release you will have a signed
-<code>.apk</code> file that you can distribute to users.</p>
-
-<p>To learn how to prepare your application for release, see <a
-href="{@docRoot}tools/publishing/preparing.html">Preparing for Release</a> in the Dev Guide. This
-topic provides step-by-step instructions for configuring and building a release version of your
-application.</p>
-
-<h2 id="publishing-release">Releasing Your Application to Users</h2>
-
-<p>You can release your Android applications several ways. Usually, you release applications
-through an application marketplace such as Google Play, but you can also release applications
-on your own website or by sending an application directly to a user.
-
-<h3 id="publishing-marketplace">Releasing through an App Marketplace</h3>
-
-<p>If you want to distribute your apps to the broadest possible audience, releasing through
-an app marketplace such as Google Play is ideal. </p>
-
-<p>Google Play is the premier marketplace for Android apps and is particularly
-useful if you want to distribute your applications to a large global audience.
-However, you can distribute your apps through any app marketplace you want or
-you can use multiple marketplaces.</p>
-
-
-<h4 id="publishing-market">Releasing Your Applications on Google Play</h4>
-
-<p>Google Play is a robust publishing platform that helps you publicize, sell, and distribute
-your Android applications to users around the world. When you release your applications through
-Google Play you have access to a suite of developer tools that let you analyze your sales,
-identify market trends, and control who your applications are being distributed to. You also have
-access to several revenue-enhancing features such as <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> and <a
-href="{@docRoot}google/play/licensing/index.html">application licensing</a>. The rich array of tools
-and features, coupled with numerous end-user community features, makes Google Play the premier
-marketplace for selling and buying Android applications.</p>
-
-<p>Releasing your application on Google Play is a simple process that involves three basic
- steps:</p>
-
-<ul>
- <li>Preparing promotional materials.
- <p>To fully leverage the marketing and publicity capabilities of Google Play, you need to
- create promotional materials for your application, such as screenshots, videos, graphics, and
- promotional text.</p>
- </li>
- <li>Configuring options and uploading assets.
- <p>Google Play lets you target your application to a worldwide pool of users and devices.
- By configuring various Google Play settings, you can choose the countries you want to
- reach, the listing languages you want to use, and the price you want to charge in each
- country. You can also configure listing details such as the application type, category, and
- content rating. When you are done configuring options you can upload your promotional materials
- and your application as a draft (unpublished) application.</p>
- </li>
- <li>Publishing the release version of your application.
- <p>If you are satisfied that your publishing settings are correctly configured and your
- uploaded application is ready to be released to the public, you can simply click
- <strong>Publish</strong > in the developer console and within minutes your application will be
- live and available for download around the world.</p>
- </li>
-</ul>
-
-<p>For information complete information, see <a href="{@docRoot}distribute/googleplay/index.html">Google Play</a>.</p>
-
-
-<h3 id="publishing-email">Releasing your application through email</h3>
-
-<div class="figure" style="width:246px">
- <img src="{@docRoot}images/publishing/publishing_via_email.png"
- alt="Screenshot showing the graphical user interface users see when you send them an app"
- style="width:240px;" />
- <p class="img-caption">
- <strong>Figure 1.</strong> Users can simply click <strong>Install</strong> when you send them
- an application via email.
- </p>
-</div>
-
-<p>The easiest and quickest way to release your application is to send it to a user through
-email. To do this, you prepare your application for release and then attach it to an email
-and send it to a user. When the user opens your email message on their Android-powered device
-the Android system will recognize the APK and display an <strong>Install Now</strong>
-button in the email message (see figure 1). Users can install your application by touching the
-button.</p>
-
-<p class="note"><strong>Note:</strong> The <strong>Install Now</strong> button
-shown in Figure 1 appears only if a user has configured their device to allow
-installation from <a href="#unknown-sources">unknown sources</a> and has opened your
-email with the native Gmail application.</p>
-
-<p>Distributing applications through email is convenient if you are sending your application to
-only a few trusted users, but it provides few protections from piracy and unauthorized
-distribution; that is, anyone you send your application to can simply forward it to someone else.</p>
-
-<h2 id="publishing-website">Releasing through a web site</h2>
-
-<p>If you do not want to release your app on a marketplace like Google Play, you
-can make the app available for download on your own website or server, including
-on a private or enterprise server. To do this, you must first prepare your
-application for release in the normal way. Then all you need to do is host the
-release-ready APK file on your website and provide a download link to users.
-</p>
-
-<p>When users browse to the download link from their Android-powered devices,
-the file is downloaded and Android system automatically starts installing it on
-the device. However, the installation process will start automatically only if
-the user has configured their Settings to allow the installation of apps from
-<a href="#unknown-sources">unknown sources</a>.</p>
-
-<p>Although it is relatively easy to release your application on your own
-website, it can be inefficient. For example, if you want to monetize your
-application you will have to process and track all financial transactions
-yourself and you will not be able to use Google Play's <a
-href="{@docRoot}google/play/billing/index.html">In-app Billing service</a>
-to sell in-app products. In addition, you will not be able to use the <a
-href="{@docRoot}google/play/licensing/index.html">Licensing service</a> to
-help prevent unauthorized installation and use of your application.</p>
-
-
-<h2 id="unknown-sources">User Opt-In for Apps from Unknown Sources</h2>
-
-<div class="figure" style="width:246px;margin-top:0;">
- <img src="{@docRoot}images/publishing/publishing_unknown_sources_sm.png"
- alt="Screenshot showing the setting for accepting download and install of
- apps from unknown sources." style="width:240px;" />
- <p class="img-caption">
- <strong>Figure 2.</strong> Users must enable the <strong>Unknown sources</strong>
- setting before they can install apps not downloaded from Google Play.
- </p>
-</div>
-
-<p>Android protects users from inadvertent download and install of apps from
-locations other than Google Play (which is trusted). It blocks such installs
-until the user opts-in <strong>Unknown sources</strong> in
-Settings <strong>></strong> Security, shown in Figure 2. To allow
-the installation of applications from other sources, users need to enable the
-Unknown sources setting on their devices, and they need to make this
-configuration change <em>before</em> they download your application to their
-devices.</p>
-
-<p class="note">Note that some network providers do not allow users to install
-applications from unknown sources.</p>
diff --git a/docs/html/tools/publishing/versioning.jd b/docs/html/tools/publishing/versioning.jd
deleted file mode 100644
index 9908d81..0000000
--- a/docs/html/tools/publishing/versioning.jd
+++ /dev/null
@@ -1,184 +0,0 @@
-page.title=Versioning Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Your application <em>must</em> be versioned</a></li>
-<li>You set the version in the application's manifest file</li>
-<li>How you version your applications affects how users upgrade </li>
-<li>Determine your versioning strategy early in the development process, including considerations for future releases.</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#appversioning">Setting Application Version</a></li>
-<li><a href="#minsdkversion">Specifying Your Application's System API Requirements</a>
-</ol>
-
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish Your Application</a></li>
-<li><a href="{@docRoot}distribute/tools/launch-checklist.html">Launch Checklist for Google Play</a></li>
-<li><a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Versioning is a critical component of your application upgrade and maintenance
-strategy. Versioning is important because:</p>
-
-<ul>
-<li>Users need to have specific information about the application version that
-is installed on their devices and the upgrade versions available for
-installation. </li>
-<li>Other applications — including other applications that you publish as
-a suite — need to query the system for your application's version, to
-determine compatibility and identify dependencies.</li>
-<li>Services through which you will publish your application(s) may also need to
-query your application for its version, so that they can display the version to
-users. A publishing service may also need to check the application version to
-determine compatibility and establish upgrade/downgrade relationships.</li>
-</ul>
-
-<p>The Android system does not use app version information to enforce
-restrictions on upgrades, downgrades, or compatibility of third-party apps. Instead, you (the
-developer) are responsible for enforcing version restrictions within your application or by
-informing users of the version restrictions and limitations. The Android system does, however,
-enforce system version compatibility as expressed by the <code>minSdkVersion</code> attribute in the
-manifest. This attribute allows an application to specify the minimum system API with which it is
-compatible. For more information see <a href="#minsdkversion">Specifying Minimum System API
-Version</a>.</p>
-
-<h2 id="appversioning">Setting Application Version</h2>
-<p>To define the version information for your application, you set attributes in
-the application's manifest file. Two attributes are available, and you should
-always define values for both of them: </p>
-
-<ul>
-<li><code>android:versionCode</code> — An integer value that represents
-the version of the application code, relative to other versions.
-
-<p>The value is an integer so that other applications can programmatically
-evaluate it, for example to check an upgrade or downgrade relationship. You can
-set the value to any integer you want, however you should make sure that each
-successive release of your application uses a greater value. The system does not
-enforce this behavior, but increasing the value with successive releases is
-normative. </p>
-
-<p>Typically, you would release the first version of your application with
-versionCode set to 1, then monotonically increase the value with each release,
-regardless whether the release constitutes a major or minor release. This means
-that the <code>android:versionCode</code> value does not necessarily have a
-strong resemblance to the application release version that is visible to the
-user (see <code>android:versionName</code>, below). Applications and publishing
-services should not display this version value to users.</p>
-
-<p class="warning">
- <strong>Warning:</strong> The greatest possible value for <code>
- android:versionCode</code> is <code>MAXINT</code> (2147483647). However, if
- you upload an app with this value, your app can't ever be updated.
-</p>
-
-</li>
-<li><code>android:versionName</code> — A string value that represents the
-release version of the application code, as it should be shown to users.
-<p>The value is a string so that you can describe the application version as a
-<major>.<minor>.<point> string, or as any other type of
-absolute or relative version identifier. </p>
-
-<p>As with <code>android:versionCode</code>, the system does not use this value
-for any internal purpose, other than to enable applications to display it to
-users. Publishing services may also extract the <code>android:versionName</code>
-value for display to users.</p>
-</li>
-</ul>
-
-<p>You define both of these version attributes in the
-<code><manifest></code> element of the manifest file or the Gradle build file. See
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-<p>Here's an example manifest that shows the <code>android:versionCode</code>
-and <code>android:versionName</code> attributes in the
-<code><manifest></code> element. </p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.package.name"
- android:versionCode="2"
- android:versionName="1.1">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- ...
- </application>
-</manifest>
-</pre>
-
-<p>In this example, note that <code>android:versionCode</code> value indicates
-that the current .apk contains the second release of the application code, which
-corresponds to a minor follow-on release, as shown by the
-<code>android:versionName</code> string. </p>
-
-<p>The Android framework provides an API to let applications query the system
-for version information about your application. To obtain version information,
-applications use the
-{@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
-method of {@link android.content.pm.PackageManager PackageManager}. </p>
-
-<h2 id="minsdkversion">Specifying Your Application's System API Requirements</h2>
-
-<p>If your application requires a specific minimum version of the Android
-platform, or is designed only to support a certain range of Android platform
-versions, you can specify those version requirements as API Level identifiers
-in the application's manifest file. Doing so ensures that your
-application can only be installed on devices that
-are running a compatible version of the Android system. </p>
-
-<p>To specify API Level requirements, add a <code><uses-sdk></code>
-element in the application's manifest, with one or more of these attributes: </p>
-
-<ul>
-<li><code>android:minSdkVersion</code> — The minimum version
-of the Android platform on which the application will run, specified
-by the platform's API Level identifier. </li>
-<li><code>android:targetSdkVersion</code> — Specifies the API Level
-on which the application is designed to run. In some cases, this allows the
-application to use manifest elements or behaviors defined in the target
-API Level, rather than being restricted to using only those defined
-for the minimum API Level.</li>
-<li><code>android:maxSdkVersion</code> — The maximum version
-of the Android platform on which the application is designed to run,
-specified by the platform's API Level identifier. <strong>Important:</strong> Please read the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a>
-documentation before using this attribute. </li>
-</ul>
-
-<p>When preparing to install your application, the system checks the value of this
-attribute and compares it to the system version. If the
-<code>android:minSdkVersion</code> value is greater than the system version, the
-system aborts the installation of the application. Similarly, the system
-installs your application only if its <code>android:maxSdkVersion</code>
-is compatible with the platform version.</p>
-
-<p>If you do not specify these attributes in your manifest, the system assumes
-that your application is compatible with all platform versions, with no
-maximum API Level. </p>
-
-<p>To specify a minimum platform version for your application, add a
-<code><uses-sdk></code> element as a child of
-<code><manifest></code>, then define the
-<code>android:minSdkVersion</code> as an attribute. </p>
-
-<p>For more information, see the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a>
-manifest element documentation and the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels</a> document. For
-Gradle build settings, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
diff --git a/docs/html/tools/revisions/build-tools.jd b/docs/html/tools/revisions/build-tools.jd
deleted file mode 100755
index 5d9ba05..0000000
--- a/docs/html/tools/revisions/build-tools.jd
+++ /dev/null
@@ -1,378 +0,0 @@
-page.title=SDK Build Tools Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>See Also</h2>
- <ol>
- <li><a href="{@docRoot}tools/building/index.html">Building and Running</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>Build Tools is a component of the Android SDK required for building Android
- application code. The latest version of these tools is included in the
- <a href="{@docRoot}sdk/index.html">SDK starter package</a> and installed in the
- <code><sdk>/build-tools/</code> directory.</p>
-
-<p>You should always keep your Build Tools component updated by downloading the latest version
- using the <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. By default,
- the Android SDK uses the most recent downloaded version of the Build Tools. If your projects
- depend on older versions of the Build Tools, the SDK Manager allows you to download and maintain
- separate versions of the tools for use with those projects.</p>
-
-<p>To use a specific version of the Build Tools in your application project:</p>
-
-
- <ol>
- <li>In the root folder of your application project, find the {@code build.gradle}
- file.</li>
- <li>Open the file and specify the Build Tools version by adding a {@code buildToolsVersion}
- property to the {@code android} section:
-<pre>
-android {
- ...
- buildToolsVersion "17.0.0"
- ...
-}
-</pre>
- </li>
- </ol>
-
-
-<h2 id="notes">Revisions</h2>
-
-<p>The sections below provide notes about releases of the Build Tools. To determine which
-revisions of the Build Tools are available in your SDK, refer to the <em>Installed Packages</em>
-listing in the Android SDK Manager.</p>
-
-<div class="toggle-content opened">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 23.0.3</a> <em>(March 2016)</em>
- </p>
- <div class="toggle-content-toggleme">
- <ul>
- <li>Fix issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
- Support Library on arm64 devices.</li>
- <li>Fix issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
- Support Library on certain Jelly Bean devices.</li>
- <li>Support <code>renderscriptTargetAPI 21+</code> when using Android
- Plugin for Gradle, Revision 2.1.0 and above .</li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content opened">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 23.0.2</a> <em>(November 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <ul>
- <li>Improved the merging performance of the <code>dx</code> tool.</li>
- <li>Fixed issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
- compiler for Windows.</li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 23.0.1</a> <em>(October 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixed issues in the RenderScript tools.</p>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 23.0.0</a> <em>(August 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Added support for the Android 6.0 (API level 23) release.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 22.0.1</a> <em>(March 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixed compatibility issues with
- <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a> kernels on
- Android 4.4 (API level 19) to Android 4.1 (API level 16) devices.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 22.0.0</a> <em>(March 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Added support for Android 5.1 (API level 22).</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 21.1.2</a> <em>(February 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixed problem with building data layouts in 32-bit mode.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 21.1.1</a> <em>(November 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixed multidex script issues.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 21.1</a> <em>(October 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Added multidex file support for APKs and Jack support to address the 64K method reference
- limit.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 21.0.2</a> <em>(October 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Complete updates for Eclipse ADT to solve instability issues on Windows platforms.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 21.0.1</a> <em>(October 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Initial updates for Eclipse ADT on Windows. Please use Revision 21.0.2.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 21.0.0</a> <em>(October 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added support for Android 5.0 (API level 21).</li>
- <li>RenderScript now supports seamless 32/64-bit operation for API level 21 and higher.</li>
- <li>Fixed issue with the Gradle build system when using the JaCoCo plugin.
- (<a href="http://b.android.com/69174">Issue 69174</a>)</li>
- <li>Added an <em>input-list</em> option for use with long command lines on Windows.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 20.0.0</a> <em>(June 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added support for Android Wear.</li>
- </ul>
- </dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 19.1.0</a> <em>(May 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added <code>zipalign</code> to the Build Tools.</li>
- <li>Modified <code>aapt</code> to ignore XML files that fail to compile.</li>
- </ul>
- </dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 19.0.3</a> <em>(March 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <p>Fixed an issue with RenderScript support.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 19.0.2</a> <em>(February 2014)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Fixed RenderScript build issues:</dt>
- <dd>
- <ul>
- <li>Fixed a problem with RenderScript bitcode encoding.
- (<a href="http://b.android.com/64775">Issue 64775</a>)
- </li>
- <li>Fixed a problem with RenderScript missing math symbols
- (<a href="http://b.android.com/64110">Issue 64110</a>)
- </li>
- </ul>
- </dd>
- </dl>
- <p></p>
-
- </div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 19.0.1</a> <em>(December 2013)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Fixed miscellaneous build issues:</dt>
- <dd>
- <ul>
- <li>Fixed support for compiling RenderScript in NDK mode with Gradle.</li>
- <li>Fixed {@code BufferOverflowException} problem in the dx build.
- (<a href="http://b.android.com/61710">Issue 61710</a>)
- </li>
- </ul>
- </dd>
- </dl>
- <p></p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 19</a> <em>(October 2013)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <p>Added support for Android 4.4 (API level 19) build targets.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 18.1.1</a> <em>(September 2013)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <p>Fixed several minor build issues.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 18.1.0</a> <em>(September 2013)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <p>Fixed issue with RenderScript support mode.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 18.0.1</a> <em>(July 2013)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <p>Added support for Android 4.3 (API level 18) build targets.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Build Tools, Revision 17</a> <em>(May 2013)</em>
- </p>
- <div class="toggle-content-toggleme">
-
- <p>Initial release.</p>
-
- <dl>
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Included support for Android 4.2 (API level 17) build targets.</li>
- <li>Decoupled the build-specific components of the Android SDK from the platform-tools
- component, so that the build tools can be updated independently of the integrated
- development environment (IDE) components.</li>
- </ul>
- </dd>
- </dl>
-
- </div>
-</div>
diff --git a/docs/html/tools/revisions/gradle-plugin.jd b/docs/html/tools/revisions/gradle-plugin.jd
deleted file mode 100644
index f77cfd6..0000000
--- a/docs/html/tools/revisions/gradle-plugin.jd
+++ /dev/null
@@ -1,894 +0,0 @@
-page.title=Android Plugin for Gradle Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>
- In this document
- </h2>
-
- <ol>
- <li>
- <a href="#updating-plugin">Updating the Android Plugin for Gradle
- Version</a>
- </li>
-
- <li>
- <a href="#updating-gradle">Updating the Gradle Version</a>
- </li>
-
- <li>
- <a href="#revisions">Revisions</a>
- </li>
- </ol>
-
- <h2>
- See also
- </h2>
-
- <ol>
- <li>
- <a class="external-link" href=
- "http://google.github.io/android-gradle-dsl/current/">Android Plugin DSL
- Reference</a>
- </li>
-
- <li>
- <a href="{@docRoot}sdk/installing/studio-build.html">Build System
- Overview</a>
- </li>
-
- <li>
- <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin
- for Gradle</a>
- </li>
- </ol>
- </div>
-</div>
-
-<p>
- The Android build system uses the Android Plugin for Gradle to support
- building Android applications with the <a href=
- "http://www.gradle.org/">Gradle</a> build toolkit. The plugin runs
- independent of Android Studio so the plugin and the Gradle build system can
- be updated independently of Android Studio.
-</p>
-
-<h2 id="updating-plugin">
- Updating the Android Plugin for Gradle
-</h2>
-
-<p>
- When you update Android Studio, you may receive a prompt to automatically
- update the Android Plugin for Gradle to the latest available version. You
- can choose to accept the update or manually specify a version based on
- your project's build requirements.
-</p>
-
-<p>
- You can specify the <a href=
- "{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for
- Gradle</a> version in either the <strong>File</strong> > <strong>Project
- Structure</strong> > <strong>Project</strong> menu in Android Studio, or
- the top-level <code>build.gradle</code> file. The plugin version applies to
- all modules built in that Android Studio project. The following example sets
- the Android Plugin for Gradle to version 2.1.0 from the
- <code>build.gradle</code> file:
-</p>
-
-<pre>
-buildscript {
- ...
- dependencies {
- classpath 'com.android.tools.build:gradle:2.1.0'
- }
-}
-</pre>
-<p class="caution">
- <strong>Caution:</strong> You should not use dynamic dependencies in version
- numbers, such as <code>'com.android.tools.build:gradle:2.+'</code>. Using
- this feature can cause unexpected version updates and difficulty resolving
- version differences.
-</p>
-
-<p>
- If the specified plugin version has not been downloaded, Gradle downloads it
- the next time you build your project or click <strong>Tools</strong> >
- <strong>Android</strong> > <strong>Sync Project with Gradle Files</strong>
- from the Android Studio main menu.
-</p>
-
-<h2 id="updating-gradle">
- Updating Gradle
-</h2>
-
-<p>
- When you update Android Studio, you may receive a prompt to automatically
- update Gradle to the latest available version. You can choose to accept the
- update or manually specify a version based on your project's build
- requirements.
-</p>
-
-<p>
- You can specify the Gradle version in either the <strong>File</strong> >
- <strong>Project Structure</strong> > <strong>Project</strong> menu in
- Android Studio, or by editing the Gradle distribution reference in the
- <code>gradle/wrapper/gradle-wrapper.properties</code> file. The following
- example sets the Gradle version to 2.10 in the
- <code>gradle-wrapper.properties</code> file.
-</p>
-
-<pre>
-...
-distributionUrl = https\://services.gradle.org/distributions/gradle-2.10-all.zip
-...
-</pre>
-
-<h2 id="revisions">
- Revisions
-</h2>
-
-<p>
- For a summary of known issues in Android Plugin for Gradle, visit the
- <a class="external-link" href="http://tools.android.com/knownissues">Android
- Tools Project Site</a>.
-</p>
-
-<div class="toggle-content opened">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 2.1.0</a> <em>(April 2016)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.10 or higher.
- </li>
-
- <li>
- <a href="{@docRoot}tools/revisions/build-tools.html">Build Tools 23.0.2</a>
- or higher.
- </li>
- </ul>
- </dd>
-
- <dt>New:</dt>
- <dd>
- <ul>
- <li>Added support for the N Developer Preview, JDK 8, and <a href=
- "{@docRoot}preview/j8-jack.html">Java 8 language features</a> using the Jack
- toolchain. To find out more, read the <a href=
- "{@docRoot}preview/overview.html">N Preview guide</a>.
-
- <p class="note">
- <strong>Note:</strong> <a href=
- "{@docRoot}tools/building/building-studio.html#instant-run">Instant
- Run</a> does not currently work with Jack and will be disabled while
- using the new toolchain. You only need to use Jack if you are developing
- for the N Preview and want to use the supported Java 8 language features.
- </p>
- </li>
-
- <li>Added default support for incremental Java compilation to reduce
- compilation time during development. It does this by only recompiling
- portions of the source that have changed or need to be recompiled. To disable
- this feature, add the following code to your module-level
- <code>build.gradle</code> file:
-
-<pre>
-android {
- ...
- compileOptions {
- incremental false
- }
-}
-</pre>
- </li>
-
- <li>
- <p>
- Added support for dexing-in-process which performs dexing within the build
- process rather than in a separate, external VM processes. This not only makes
- incremental builds faster, but also speeds up full builds. The feature is
- enabled by default for projects that have set the Gradle daemon's maximum heap
- size to at least 2048 MB. You can do this by including the following in your
- project's <code>gradle.properties</code> file:
-
-<pre>
-org.gradle.jvmargs = -Xmx2048m
-</pre>
- </p>
-
- <p>
- If you have defined a value for <a class="external-link" href=
- "http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html#com.android.build.gradle.internal.dsl.DexOptions:javaMaxHeapSize">
- <code>javaMaxHeapSize</code></a> in your module-level <code>build.gradle</code>
- file, you need to set <code>org.gradle.jvmargs</code> to the value of
- <code>javaMaxHeapSize</code> + 1024 MB. For example, if you have set
- <code>javaMaxHeapSize</code> to "2048m", you need to add the following to your
- project's <code>gradle.properties</code> file:
-
-<pre>
-org.gradle.jvmargs = -Xmx3072m
-</pre>
- </p>
-
- <p>
- To disable dexing-in-process, add the following code to your module-level
- <code>build.gradle</code> file:
-
-<pre>
-android {
- ...
- dexOptions {
- dexInProcess false
- }
-}
-</pre>
- </p>
- </li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 2.0.0</a> <em>(April 2016)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.10 or higher.
- </li>
-
- <li>
- <a href="{@docRoot}tools/revisions/build-tools.html">Build Tools 21.1.1</a>
- or higher.
- </li>
- </ul>
- </dd>
-
- <dt>New:</dt>
- <dd>
- <ul>
- <li>Enables <a href=
- "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a> by
- supporting bytecode injection, and pushing code and resource updates to a
- running app on the emulator or a physical device.
- </li>
-
- <li>Added support for incremental builds, even when the app isn’t running.
- Full build times are improved by pushing incremental changes through the
- <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> to the
- connected device.
- </li>
-
- <li>Added <a class="external-link" href=
- "http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html#com.android.build.gradle.internal.dsl.DexOptions:maxProcessCount">
- <code>maxProcessCount</code></a> to control how many slave dex processes can be
- spawned concurrently. The following code, in the module-level
- <code>build.gradle</code> file, sets the maximum number of concurrent processes
- to 4:
-<pre>
-android {
- ...
- dexOptions {
- maxProcessCount = 4 // this is the default value
- }
-}
-</pre>
- </li>
-
- <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
- of dependencies, which are not supported with Proguard. This improves the build
- speed of your debug build variant. Because the experimental shrinker does not
- support optimization and obfuscation, you should enable Proguard for your
- release builds. To enable the experimental shrinker for your debug builds, add
- the following to your module-level <code>build.gradle</code> file:
-
-<pre>
-android {
- ...
- buildTypes {
- debug {
- minifyEnabled true
- useProguard false
- }
- release {
- minifyEnabled true
- useProguard true // this is a default setting
- }
- }
-}
-</pre>
- </li>
-
- <li>Added logging support and improved performance for the resource shrinker.
- The resource shrinker now logs all of its operations into a <code>resources.txt</code>
- file located in the same folder as the Proguard log files.
- </li>
- </ul>
- </dd>
-
- <dt>Changed behavior:</dt>
- <dd>
- <ul>
- <li>When <code>minSdkVersion</code> is set to 18 or higher, APK signing uses
- SHA256.
- </li>
-
- <li>DSA and ECDSA keys can now sign APK packages.
-
- <p class="note">
- <strong>Note:</strong> The <a href=
- "{@docRoot}training/articles/keystore.html">Android keystore</a> provider no
- longer supports <a href=
- "{@docRoot}about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
- DSA keys on Android 6.0</a> (API level 23) and higher.
- </p>
-
- </li>
- </ul>
- </dd>
-
- <dt>Fixed issues:</dt>
- <dd>
- <ul>
- <li>Fixed an issue that caused duplicate AAR dependencies in both
- the test and main build configurations.
- </li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.5.0</a> <em>(November 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Integrated the Data Binding Plugin into the Android Plugin for Gradle. To enable it, add
- the following code to each per-project <code>build.gradle</code> file that uses the
- plugin:</li>
-<pre>
-android {
- dataBinding {
- enabled = true
- }
-}
-</pre>
- <li>Added a new <a href="http://google.github.io/android-gradle-dsl/javadoc/1.5/" class="external-link">Transform API</a>
- to allow third-party plugins to manipulate compiled <code>.class</code> files before they’re
- converted to <code>.dex</code> files. The Transform API simplifies injecting custom class
- manipulations while offering more flexibility regarding what you can manipulate. To insert a
- transform into a build, create a new class implementing one of the <code>Transform</code>
- interfaces, and register it with <code>android.registerTransform(theTransform)</code> or
- <code>android.registerTransform(theTransform, dependencies)</code>. There’s no need to
- wire tasks together. Note the following about the Transform API:</li>
- <ul>
- <li>A transform can apply to one or more of the following: the current project, subprojects,
- and external libraries.</li>
- <li>A transform must be registered globally, which applies them to all variants.</li>
- <li>Internal code processing, through the Java Code Coverage Library (JaCoCo), ProGuard,
- and MultiDex, now uses the Transform API. However, the Java Android Compiler Kit
- (Jack) doesn’t use this API: only the <code>javac/dx</code> code path does.</li>
- <li>Gradle executes the transforms in this order: JaCoCo, third-party plugins, ProGuard.
- The execution order for third-party plugins matches the order in which the transforms are
- added by the third party plugins; third-party plugin developers can't control the execution
- order of the transforms through an API.</li>
- </ul>
- <li>Deprecated the <code>dex</code> getter from the <code>ApplicationVariant</code> class.
- You can't access the <code>Dex</code> task through the variant API anymore because it’s now
- accomplished through a transform. There's
- currently no replacement for controlling the dex process.</li>
- <li>Fixed incremental support for assets.</li>
- <li>Improved MultiDex support by making it available for test projects, and
- tests now automatically have the <code>com.android.support:multidex-instrumentation</code>
- dependency.</li>
- <li>Added the ability to properly fail a Gradle build and report the underlying error cause
- when the Gradle build invokes asynchronous tasks and there’s a failure in the worker
- process.</li>
- <li>Added support for configuring a specific Application Binary Interface (ABI) in variants
- that contain multiple ABIs.</li>
- <li>Added support for a comma-separated list of device serial numbers for the
- <code>ANDROID_SERIAL</code> environment variable when installing or running tests.</li>
- <li>Fixed an installation failure on devices running Android 5.0 (API level 20) and higher
- when the APK name contains a space.</li>
- <li>Fixed various issues related to the Android Asset Packaging Tool (AAPT) error output.</li>
- <li>Added JaCoCo incremental instrumentation support for faster incremental builds. The
- Android Plugin for Gradle now invokes the JaCoCo instrumenter directly. To force a newer
- version of the JaCoCo instrumenter, you need to add it as a build script dependency.</li>
- <li>Fixed JaCoCo support so it ignores files that aren’t classes.</li>
- <li>Added vector drawable support for generating PNGs at build time for backward-compatibility.
- Android Plugin for Gradle generates PNGs for every vector drawable found in a resource
- directory that doesn’t specify an API version or specifies an
- <code>android:minSdkVersion</code> attribute of 20 or lower in the
- <code><uses-sdk></code> element in the app manifest. You can set PNG densities by
- using the <code>generatedDensities</code> property in the <code>defaultConfig</code> or
- <code>productFlavor</code> sections of a <code>build.gradle</code> file.</li>
- <li>Added sharing of the mockable <code>android.jar</code>, which the plugin generates only
- once and uses for unit testing. Multiple modules, such as <code>app</code> and
- <code>lib</code>, now share it. Delete <code>$rootDir/build</code> to regenerate it. </li>
- <li>Changed the processing of Java resources to occur before the obfuscation tasks instead of
- during the packaging of the APK. This change allows the obfuscation tasks to have a chance
- to adapt the Java resources following packages obfuscation.</li>
- <li>Fixed an issue with using Java Native Interface (JNI) code in the experimental library
- plugin.</li>
- <li>Added the ability to set the platform version separately from the
- <code>android:compileSdkVersion</code> attribute in the experimental library
- plugin.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.3.1</a> <em>(August 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed the <a href="{@docRoot}tools/help/zipalign.html">ZipAlign</a> task to properly
- consume the output of the previous task when using a customized filename. </li>
- <li>Fixed <a href="{@docRoot}guide/topics/renderscript/compute.html">Renderscript</a>
- packaging with the <a href="{@docRoot}tools/sdk/ndk/index.html">NDK</a>. </li>
- <li>Maintained support for the <code>createDebugCoverageReport</code> build task. </li>
- <li>Fixed support for customized use of the <code>archiveBaseName</code> property
- in the <code>build.gradle</code> build> file. </li>
- <li>Fixed the <code>Invalid ResourceType</code>
- <a href="{@docRoot}tools/help/lint.html">lint</a> warning caused by parameter method
- annotation lookup when running
- <a href="{@docRoot}tools/help/lint.html">lint</a> outside of Android Studio.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.3.0</a> <em>(July 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added support for the <code>com.android.build.threadPoolSize</code> property to control
- the <code>Android</code> task thread pool size from the <code>gradle.properties</code> file
- or the command line. The following example sets this property to 4.
-<pre>
--Pcom.android.build.threadPoolSize=4
-</pre>
- </li>
- <li>Set the default build behavior to exclude <code>LICENSE</code> and <code>LICENSE.txt</code>
- files from APKs. To include these files in an APK, remove these files from the
- <code>packagingOptions.excludes</code> property in the <code>build.gradle</code> file.
- For example:
-<pre>
-android {
- packagingOptions.excludes = []
- }
-</pre>
- </li>
- <li>Added the <code>sourceSets</code> task to inspect the set of all available source sets. </li>
- <li>Enhanced unit test support to recognize multi-flavor and
- <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">
- build variant</a> source folders. For example, to test an app with multi-flavors
- <code>flavor1</code> and <code>flavorA</code> with the <code>Debug</code> build type,
- the test source sets are:
- <ul>
- <li>test </li>
- <li>testFlavor1 </li>
- <li>testFlavorA </li>
- <li>testFlavor1FlavorA </li>
- <li>testFlavor1FlavorADebug </li>
- </ul>
- <p>Android tests already recognized multi-flavor source folders. </p> </li>
- <li>Improved unit test support to:</p>
- <ul>
- <li>Run <code>javac</code> on main and test sources, even if the <code>useJack</code>
- property is set to <code>true</code> in your build file. </li>
- <li>Correctly recognize dependencies for each build type. </li>
- </ul>
- </li>
- <li>Added support for specifying instrumentation test-runner arguments from the command line.
- For example:
-<pre>
-./gradlew connectedCheck \
- -Pandroid.testInstrumentationRunnerArguments.size=medium \
- -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
-</pre>
- </li>
- <li>Added support for arbitrary additional Android Asset Packaging Tool (AAPT) parameters
- in the <code>build.gradle</code> file. For example:
-<pre>
-android {
- aaptOptions {
- additionalParameters "--custom_option", "value"
- }
-}
-</pre>
- </li>
-
- <li>Added support for a <a href="{@docRoot}tools/studio/studio-features.html#test-module">
- test APK module</a> as a separate test module, using the
- <code>targetProjectPath</code> and <code>targetVariant</code> properties to set the APK
- path and target variant.
- <p class="note"><strong>Note:</strong> A test APK module does not support product
- flavors and can only target a single variant. Also, Jacoco is not supported yet.</p>
- </li>
- <li>Added resource name validation before merging resources. </li>
- <li>When building an AAR (Android ARchive) package for library modules, do not provide an
- automatic <code>@{applicationId}</code> placeholder in the
- <a href="{@docRoot}tools/building/manifest-merge.html">manifest merger</a> settings.
- Instead, use a different placeholder, such as <code>@{libApplicationId}</code> and
- provide a value for it if you want to include application Ids in the archive library. </li>
-
- </ul>
- </dd>
- </div>
-</div>
-
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.2.0</a> <em>(April 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Enhanced support for running unit tests with Gradle. </li>
- <ul>
- <li>Added support to include Java-style resources in the classpath when running unit
- tests directly from Gradle.
- </li>
- <li>Added unit test dependency support for Android ARchive (AAR) artifacts.
- </li>
- <li>Added support for the <code>unitTestVariants</code> property so unit test variants
- can be manipulated using the <code>build.gradle</code> file.
- </li>
- <li>Added the <code>unitTest.all</code> code block under <code>testOptions</code> to
- configure customized tasks for unit test. The following sample code shows how to add
- unit test configuration settings using this new option:
-<pre>
-android {
- testOptions {
- unitTest.all {
- jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
- }
- }
-}
-</pre>
- </li>
- <li>Fixed the handling of enums and public instance fields in the packaging of the
- <code>mockable-android.jar</code> file.
- </li>
- <li>Fixed library project task dependencies so test classes recompile after changes.
- </li>
- </ul>
- <li>Added the <code>testProguardFile</code> property to apply
- <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> files when minifying a test APK.
- </li>
- <li>Added the <code>timeOut</code> property to the <code>adbOptions</code> code block
- for setting the maximum recording time for
- <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> screen recording.
- </li>
- <li>Added support for 280 dpi resources.
- </li>
- <li>Improved performance during project evaluation.
- </li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.1.3</a> <em>(March 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issue with duplicated dependencies on a test app that triggered a ProGuard failure. </li>
- <li>Fixed Comparator implementation which did not comply with the JDK Comparator contract and
- generated a JDK 7 error.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.1.2</a> <em>(February 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Normalized path when creating a mockable JAR for unit testing. </li>
- <li>Fixed the <code>archivesBaseName</code> setting in the <code>build.gradle</code> file. </li>
- <li>Fixed the unresolved placeholder failure in manifest merger when building a library
- test application.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.1.1</a> <em>(February 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Modified build variants so only variants that package a
- <a href="{@docRoot}training/wearables/apps/index.html">Wear</a> app trigger Wear-specific
- build tasks. </li>
- <li>Changed dependency related issues to fail at build time rather than at debug time.
- This behavior allows you to run diagnostic diagnostic tasks (such as 'dependencies') to help
- resolve the conflict. </li>
- <li>Fixed the <code>android.getBootClasspath()</code> method to return a value. </li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.1.0</a> <em>(February 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 or higher.</li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added new unit test support</li>
- <ul>
- <li>Enabled
- <a href="{@docRoot}training/activity-testing/activity-unit-testing.html">unit tests</a> to
- run on the local JVM against a special version of the <code>android.jar</code> file that is
- compatible with popular mocking frameworks, for example Mockito. </li>
- <li>Added new test tasks <code>testDebug</code>, <code>testRelease</code>, and
- <code>testMyFlavorDebug</code> when using product flavors. </li>
- <li>Added new source folders recognized as unit tests: <code>src/test/java/</code>,
- <code>src/testDebug/java/</code>, <code>src/testMyFlavor/java/</code>.
- <li>Added new configurations in the <code>build.gradle</code> file for declaring test-only
- dependencies, for example, <code>testCompile 'junit:junit:4.11'</code>,
- <code>testMyFlavorCompile 'some:library:1.0'</code>.
- <p class="note"><strong>Note:</strong> Test-only dependencies are not currently compatible
- with Jack (Java Android Compiler Kit). </p>
- </li>
- <li>Added the <code>android.testOptions.unitTests.returnDefaultValues</code> option to
- control the behaviour of the mockable android.jar. </li>
- </ul>
- <li>Replaced <code>Test</code> in test task names with <code>AndroidTest</code>.
- For example, the <code>assembleDebugTest</code> task is now
- <code>assembleDebugAndroidTest</code> task. Unit test tasks still have <code>UnitTest</code>
- in the task name, for example <code>assembleDebugUnitTest</code>. </li>
- <li>Modified <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> configuration files to
- no longer apply to the test APK. If minification is enabled, ProGuard processes the test APK
- and applies only the mapping file that is generated when minifying the main APK. </li>
- <li>Updated dependency management</li>
- <ul>
- <li>Fixed issues using <code>provided</code> and <code>package</code> scopes.
- <p class="note"><strong>Note:</strong> These scopes are incompatible with AAR
- (Android ARchive) packages and will cause a build with AAR packages to fail.</p>
- </li>
- <li>Modified dependency resolution to compare the dependencies of an app under test and the
- test app. If an artifact with the same version is found for both apps, it's not included with
- the test app and is packaged only with the app under test. If an artifact with a different
- version is found for both apps, the build fails.</li>
- </ul>
-
- <li>Added support for <code>anyDpi</code>
- <a href="{@docRoot}guide/topics/resources/providing-resources.html"> resource qualifier</a>
- in resource merger. </li>
- <li>Improved evaluation and IDE sync speeds for projects with a large number of
- Android <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule"> modules</a>. </li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.0.1</a> <em>(January 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 up to 2.3.x.
- <p class="note"><strong>Note:</strong> This version of the Android Plugin for Gradle is
- not compatible with Gradle 2.4 and higher. </p>
- </li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issue with Gradle build failure when accessing the
- <code>extractReleaseAnnotations</code> module.
- (<a href="http://b.android.com/81638">Issue 81638</a>).</li>
- <li>Fixed issue with <code>Disable</code> passing the
- <code>--no-optimize</code> setting to the Dalvik Executable (dex) bytecode.
- (<a href="http://b.android.com/82662">Issue 82662</a>).</li>
- <li>Fixed manifest merger issues when importing libraries with a
- <code>targetSdkVersion</code> less than 16.</li>
- <li>Fixed density ordering issue when using Android Studio with JDK 8.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Plugin for Gradle, Revision 1.0.0</a> <em>(December 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Gradle 2.2.1 up to 2.3.x.
- <p class="note"><strong>Note:</strong> This version of the Android Plugin for Gradle is
- not compatible with Gradle 2.4 and higher. </p>
- </li>
- <li>Build Tools 21.1.1 or higher.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Initial plugin release.</li>
- </ul>
- </dd>
- </div>
-</div>
\ No newline at end of file
diff --git a/docs/html/tools/revisions/index.jd b/docs/html/tools/revisions/index.jd
deleted file mode 100644
index 0b8db83..0000000
--- a/docs/html/tools/revisions/index.jd
+++ /dev/null
@@ -1,13 +0,0 @@
-page.title=Revisions
-page.noplus=1
-@jd:body
-
-<p>The Android SDK is composed of individual packages that may undergo
-an update at their own schedule, so some have their own set of release notes. You can
-find information about some of the packages in this section, including the core <a
-href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools</a> and the latest <a
-href="{@docRoot}tools/revisions/platforms.html">SDK Platforms</a>. Release notes are also available
-for Android developer tools, such as
-<a href="{@docRoot}tools/revisions/studio.html">Android Studio</a> and the
-<a href="{@docRoot}tools/revisions/gradle-plugin.html">Android Plugin for Gradle</a>.
-</p>
diff --git a/docs/html/tools/revisions/platforms.jd b/docs/html/tools/revisions/platforms.jd
deleted file mode 100644
index b3941ae..0000000
--- a/docs/html/tools/revisions/platforms.jd
+++ /dev/null
@@ -1,1374 +0,0 @@
-page.title=SDK Platforms Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>See Also</h2>
-<ol>
- <li><a href="{@docRoot}about/versions/kitkat.html">KitKat
-Highlights and APIs</a></li>
- <li><a href="{@docRoot}about/versions/jelly-bean.html">Jelly Bean
-Highlights and APIs</a></li>
- <li><a href="{@docRoot}about/versions/android-4.0-highlights.html">Ice Cream Sandwich
-Highlights and APIs</a></li>
-</ol>
-
-</div>
-</div>
-
-
-
-<p>This document provides release information about the SDK Platform packages required
-for app development. If you want details about the features and APIs added in each Android
-version, instead read the highlights in the <a href="{@docRoot}about/index.html">About</a>
-section.</p>
-
-<p>To compile your application against a particular version of Android, you must use the
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to download and install the SDK
-Platform for that release. If you want to test your application on an emulator, you must also
-download at least one System Image for that Android version.</p>
-
-
-<p>Each platform release includes system images that support a specific processor architecture,
-such as ARM EABI, Intel x86 or MIPS. Platform releases also include a system image that contains
-Google APIs. The <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> lists available
-platform system images under each platform version header, for example:</p>
-
-<ul>
- <li>ARM EABI v7a System Image</li>
- <li>Intel x86 Atom System Image</li>
- <li>MIPS System Image</li>
- <li>Google APIs</li>
-</ul>
-
-<p>To determine what revisions of an Android platform you have installed, refer to the
-<em>Packages</em> listing in the Android
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.</p>
-
-<p class="caution"><strong>Important:</strong> To download the most recent Android
-system components from the Android SDK Manager, you must first update the SDK Tools to the
-most recent release and restart the SDK Manager. If you do not, the latest Android system
-packages may not be available for download.</p>
-
-
-<h2 id="6.0">Android 6.0</h2>
-
-<div class="toggle-content opened">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_up.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(November 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Fixed bugs in the layout rendering library used by Android Studio.</p>
- <p>Dependencies:</p>
- <ul>
- <li>Android SDK Platform-tools r23 or higher is required.</li>
- <li>Android SDK Tools 24.3.4 or higher is required.</li>
- </ul>
- </div>
-
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(August 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release for Android 6.0 (API level 23). For more information, see the
- <a href="{@docRoot}preview/api-overview.html">M Preview API Overview</a>.</p>
- <p>Dependencies:</p>
- <ul>
- <li>Android SDK Platform-tools r23 or higher is required.</li>
- <li>Android SDK Tools 24.3.4 or higher is required.</li>
- </ul>
- </div>
-
-</div>
-
-
-<h2 id="5.1">Android 5.1</h2>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(March 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release for Android 5.1 (API level 22). For more information, see the
- <a href="{@docRoot}about/versions/android-5.1.html">Android 5.1 API Overview</a>.</p>
- <p>Dependencies:</p>
- <ul>
- <li>Android SDK Platform-tools r22 or higher is required.</li>
- <li>Android SDK Tools 23.0.5 or higher is required.</li>
- </ul>
- </div>
-
-</div>
-
-
-<h2 id="5.0">Android 5.0</h2>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(December 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Updated layouts in the Support Library and fixed various issues.</p>
- <p>Dependencies:</p>
- <ul>
- <li>Android SDK Platform-tools r21 or higher is required.</li>
- <li>Android SDK Tools 23.0.5 or higher is required.</li>
- </ul>
- </div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(October 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release for Android 5.0 (API level 21). For more information, see the
- <a href="{@docRoot}about/versions/android-5.0.html">Android 5.0 API Overview</a>.</p>
- <p>Dependencies:</p>
- <ul>
- <li>Android SDK Platform-tools r21 or higher is required.</li>
- <li>Android SDK Tools 23.0.5 or higher is required.</li>
- </ul>
- </div>
-
- <h3>Device Definitions</h3>
-
- <p>The platform includes the following new device definitions for use in creating
- Android Virtual Devices in the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>:</p>
-
- <ul>
- <li>Nexus 6 (5.96", 1440 x 2560, Normal 560dpi screen) </li>
- <li>Nexus 9 (8.9", 2048 x 1536, X-Large xhdpi screen) </li>
- </ul>
-
-</div>
-
-
-<h2 id="4.4">Android 4.4W</h2>
-
-<div class="toggle-content open">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(October 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Updated the rendering library.</p>
-
- <p>Dependencies:</p>
- <ul>
- <li>Android SDK Platform-tools r20 or higher is required.</li>
- <li>Android SDK Tools 23.0 or higher is required.</li>
- </ul>
- </div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(June 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release for Android Wear.</p>
- <p>Dependencies:</p>
- <ul>
- <li>Android SDK Platform-tools r20 or higher is required.</li>
- <li>Android SDK Tools 23.0 or higher is required.</li>
- </ul>
- </div>
-
- <h3>Device Definitions</h3>
-
- <p>The platform includes the following device definitions for use in creating Android Virtual
- Devices in the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>:</p>
-
- <ul>
- <li>Android Wear Round (320 x 320, hdpi)</li>
- <li>Android Wear Square (320 x 320, hdpi)</li>
- </ul>
-</div>
-
-<h2 id="4.4">Android 4.4</h2>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(December 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance release. The system version is 4.4.2. For more information, see the
- <a href="{@docRoot}about/versions/android-4.4.html">Android 4.4 API Overview</a>.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>Android SDK Platform-tools r19 or higher is required.</dd>
- <dd>Android SDK Tools 22.3 or higher is recommended.</dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(October 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release. The system version is 4.4. For more information, see the
- <a href="{@docRoot}about/versions/android-4.4.html">Android 4.4 API Overview</a>.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>Android SDK Platform-tools r19 or higher is required.</dd>
- <dd>Android SDK Tools 22.3 or higher is recommended.</dd>
- </dl>
-
- </div>
-</div>
-
-
-
-<h3 id="gsi-4.4">Google APIs System Image</h3>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 4</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>This release includes
- <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.3,
- allowing you to test your application in an emulator using the latest Google Play services.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 3</a> <em>(February 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>This release includes
- <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.2.42,
- allowing you to test your application in an emulator using the latest Google Play services.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(December 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>This release includes
- <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.0.33.</p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(October 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release. This release includes
- <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.0.30.
- </p>
-
- </div>
-</div>
-
-
-
-<h2 id="4.3">Android 4.3</h2>
-
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(August 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. The system version is 4.3.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>Android SDK Platform-tools r18 or higher is required.</dd>
- <dd>Android SDK Tools 22.0.4 or higher is recommended.</dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(July 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release. The system version is 4.3.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>Android SDK Platform-tools r18 or higher is required.</dd>
- <dd>Android SDK Tools 22.0.4 or higher is recommended.</dd>
- </dl>
-
- </div>
-</div>
-
-<h3 id="gsi-4.3">Google APIs System Image</h3>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 3</a> <em>(September 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. This release includes
- <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 3.2.65.
- </p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(August 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. This release includes
- <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 3.2.25.
- </p>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(July 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release. This release includes
- <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 3.1.58.</p>
-
- </div>
-</div>
-
-
-
-
-<h2 id="4.2">Android 4.2</h2>
-
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(February 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. The system version is 4.2.2.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r21 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(November 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release. The system version is 4.2.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r20 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<h3>Device Definitions</h3>
-
-<p>The platform includes the following device definitions for use in creating Android Virtual
-Devices in the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>:</p>
-
-<ul>
- <li>
- Nexus 7 (7.3", 800 x 1280, Large tvdpi screen)
- </li>
- <li>
- Galaxy Nexus (4.7", 720 x 1280, Normal xhdpi screen)
- </li>
- <li>
- Nexus S (4.0", 480 x 800, Normal hdpi screen)
- </li>
- <li>
- Nexus One (3.7", 480 x 720, Normal hdpi screen)
- </li>
- <li>
- 10.1" WXGA Tablet (1280 x 800, X-Large mdpi screen)
- </li>
- <li>
- 7.0" WSVGA Tablet (1024 x 600, Large mdpi screen)
- </li>
- <li>
- 5.4" FWVGA (480 x 854, Large mdpi screen)
- </li>
- <li>
- 5.1" WVGA (480 x 800, Large mdpi screen)
- </li>
- <li>
- 4.7" WXGA (1280 x 720, Normal xhdpi screen)
- </li>
- <li>
- 4.65" 720p (720 x 1280, Normal xhdpi screen)
- </li>
- <li>
- 4.0" WVGA (480 x 800, Normal hdpi screen)
- </li>
- <li>
- 3.7" WVGA (480 x 800, Normal hdpi screen)
- </li>
- <li>
- 3.7" FWVGA slider (480 x 854, Normal hdpi screen)
- </li>
- <li>
- 3.4" WQVGA (240 x 432, Normal ldpi screen)
- </li>
- <li>
- 3.3" WQVGA (240 x 400, Normal ldpi screen)
- </li>
- <li>
- 3.2" QVGA ADP2 (320 x 480, Normal mdpi screen)
- </li>
- <li>
- 3.2" HVGA slider ADP1 (320 x 480, Normal mdpi screen)
- </li>
- <li>
- 2.7" QVGA slider (240 x 320, Small ldpi screen)
- </li>
- <li>
- 2.7" QVGA (240 x 320, Small ldpi screen)
- </li>
-</ul>
-
-
-
-<h2 id="4.1">Android 4.1</h2>
-
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 3</a> <em>(October 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. The system version is 4.1.2.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r20 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(July 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. The system version is 4.1.1.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r20 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed" >
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(June 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release. The system version is 4.1.0.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r20 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skins:</p>
-
-<ul>
- <li>
- QVGA (240x320, low density, small screen)
- </li>
- <li>
- WQVGA400 (240x400, low density, normal screen)
- </li>
- <li>
- WQVGA432 (240x432, low density, normal screen)
- </li>
- <li>
- HVGA (320x480, medium density, normal screen)
- </li>
- <li>
- WVGA800 (480x800, high density, normal screen)
- </li>
- <li>
- WVGA854 (480x854 high density, normal screen)
- </li>
- <li>
- WXGA720 (1280x720, extra-high density, normal screen)
- </li>
- <li>
- WSVGA (1024x600, medium density, large screen)
- </li>
- <li>
- WXGA800-7in (1280x800, high density, large screen) <span class="new">new</span>
- </li>
- <li>
- WXGA800 (1280x800, medium density, xlarge screen)
- </li>
-</ul>
-
-<p>To test your application on an emulator that represents the <a
-href="http://play.google.com/nexus7">Nexus 7</a> tablet device, you can create an AVD with
-the new WXGA800-7in skin. For best performance, make sure to enable <a
-href="{@docRoot}tools/devices/emulator.html#accel-graphics">graphics acceleration</a> in the
-emulator configuration.</p>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="4.0.3">Android 4.0.3</h2>
-
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 3</a> <em>(March 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. The system version is 4.0.4.</p>
- <p class="note"><strong>Note:</strong> This system image includes support for emulator
-hardware graphics acceleration when used with SDK Tools r17 or higher.
-(<a href="{@docRoot}tools/devices/emulator.html#accel-graphics">more info</a>)</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r17 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed" >
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(January 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Maintenance update. The system version is 4.0.3.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r14 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<div class="toggle-content closed" >
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 1</a> <em>(December 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p>Initial release. The system version is 4.0.3.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r14 or higher is required.</dd>
- </dl>
-
- </div>
-</div>
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skins:</p>
-
-<ul>
- <li>
- QVGA (240x320, low density, small screen)
- </li>
- <li>
- WQVGA400 (240x400, low density, normal screen)
- </li>
- <li>
- WQVGA432 (240x432, low density, normal screen)
- </li>
- <li>
- HVGA (320x480, medium density, normal screen)
- </li>
- <li>
- WVGA800 (480x800, high density, normal screen)
- </li>
- <li>
- WVGA854 (480x854 high density, normal screen)
- </li>
- <li>
- WXGA720 (1280x720, extra-high density, normal screen)
- </li>
- <li>
- WSVGA (1024x600, medium density, large screen)
- </li>
- <li>
- WXGA (1280x800, medium density, xlarge screen)
- </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="4.0">Android 4.0</h2>
-
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 4.0, Revision 2</a> <em>(December 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>Maintenance update. The system version is 4.0.2.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r14 or higher is required.</dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 4.0, Revision 1</a> <em>(October 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>Initial release. The system version is 4.0.1.</p>
- <dl>
- <dt>Dependencies:</dt>
- <dd>SDK Tools r14 or higher is required.</dd>
- </dl>
- </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skins:</p>
-
-<ul>
- <li>
- QVGA (240x320, low density, small screen)
- </li>
- <li>
- WQVGA400 (240x400, low density, normal screen)
- </li>
- <li>
- WQVGA432 (240x432, low density, normal screen)
- </li>
- <li>
- HVGA (320x480, medium density, normal screen)
- </li>
- <li>
- WVGA800 (480x800, high density, normal screen)
- </li>
- <li>
- WVGA854 (480x854 high density, normal screen)
- </li>
- <li>
- WXGA720 (1280x720, extra-high density, normal screen) <span class="new">new</span>
- </li>
- <li>
- WSVGA (1024x600, medium density, large screen) <span class="new">new</span>
- </li>
- <li>
- WXGA (1280x800, medium density, xlarge screen)
- </li>
-</ul>
-
-<p>To test your application on an emulator that represents the latest Android device, you can create
-an AVD with the new WXGA720 skin (it's an xhdpi, normal screen device). Note that the emulator
-currently doesn't support the new on-screen navigation bar for devices without hardware navigation
-buttons, so when using this skin, you must use keyboard keys <em>Home</em> for the Home button,
-<em>ESC</em> for the Back button, and <em>F2</em> or <em>Page-up</em> for the Menu button.</p>
-
-<p>However, due to performance issues in the emulator when running high-resolution screens such as
-the one for the WXGA720 skin, we recommend that you primarily use the traditional WVGA800 skin
-(hdpi, normal screen) to test your application.</p>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="3.2">Android 3.2</h2>
-
-
-
-<div class="toggle-content closed">
-
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 3.2, Revision 1</a> <em>(July 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
-<dl>
-<dt>Initial release. SDK Tools r12 or higher is recommended.</dt>
-</dl>
-
- </div>
-</div>
-
-
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skin:</p>
-
-<ul>
- <li>
- WXGA (1280x800, medium density, xlarge screen)
- </li>
-</ul>
-
-<p>For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see <a
-href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
-Screens</a>.</p>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="3.1">Android 3.1</h2>
-
-
-<div class="toggle-content closed">
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 3.1, Revision 3</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 3.1, Revision 2</a> <em>(May 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r11</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Fixes an issue with the visual layout editor rendering library that prevented Android 3.1 from
-running in ADT.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed">
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 3.1, Revision 1</a> <em>(May 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r11</a> or
-higher.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skin:</p>
-
-<ul>
- <li>
- WXGA (1280x800, medium density, xlarge screen)
- </li>
-</ul>
-
-<p>For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see <a
-href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
-Screens</a>.</p>
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="3.0">Android 3.0</h2>
-
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 3.0, Revision 2</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed">
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt="" />Android 3.0, Revision 1</a> <em>(February 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r10</a> or higher.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skin:</p>
-
-<ul>
- <li>
- WXGA (1280x800, medium density, xlarge screen)
- </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="2.3.4">Android 2.3.4</h2>
-
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt="" />Android 2.3.4, Revision 1</a> <em>(May 2011)</em>
-</p>
-
- <div class="toggle-content-toggleme">
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <p>Requires SDK Tools r11 or higher.</p>
- </dd>
- </dl>
- </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
- <li>
- QVGA (240x320, low density, small screen)
- </li>
- <li>
- WQVGA400 (240x400, low density, normal screen)
- </li>
- <li>
- WQVGA432 (240x432, low density, normal screen)
- </li>
- <li>
- HVGA (320x480, medium density, normal screen)
- </li>
- <li>
- WVGA800 (480x800, high density, normal screen)
- </li>
- <li>
- WVGA854 (480x854 high density, normal screen)
- </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="2.3.3">Android 2.3.3</h2>
-
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 2.3.3, Revision 2</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android 2.3.3, Revision 1</a> <em>(February 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires SDK Tools r9 or higher.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
- <li>
- QVGA (240x320, low density, small screen)
- </li>
- <li>
- WQVGA400 (240x400, low density, normal screen)
- </li>
- <li>
- WQVGA432 (240x432, low density, normal screen)
- </li>
- <li>
- HVGA (320x480, medium density, normal screen)
- </li>
- <li>
- WVGA800 (480x800, high density, normal screen)
- </li>
- <li>
- WVGA854 (480x854 high density, normal screen)
- </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="2.3">Android 2.3</h2>
-
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt="" />Android 2.3, Revision 1</a> <em>(December 2010)</em>
-</p>
-
- <div class="toggle-content-toggleme">
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <p>Requires SDK Tools r8 or higher.</p>
- </dd>
- </dl>
- </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
- <li>
- QVGA (240x320, low density, small screen)
- </li>
- <li>
- WQVGA400 (240x400, low density, normal screen)
- </li>
- <li>
- WQVGA432 (240x432, low density, normal screen)
- </li>
- <li>
- HVGA (320x480, medium density, normal screen)
- </li>
- <li>
- WVGA800 (480x800, high density, normal screen)
- </li>
- <li>
- WVGA854 (480x854 high density, normal screen)
- </li>
-</ul>
-
-
-
-
-
-
-
-
-
-<h2 id="2.2">Android 2.2</h2>
-
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android {@sdkPlatformVersion}, Revision 3</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed" >
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android {@sdkPlatformVersion}, Revision 2</a> <em>(July 2010)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires SDK Tools r6 or higher.</p>
-</dd>
-
-<dt>System Image:</dt>
-<dd>
-<ul>
-<li>Adds default Search Widget.</li>
-<li>Includes proper provisioning for the platform's Backup Manager. For more information about how
-to use the Backup Manager, see <a href="{@docRoot}guide/topics/data/backup.html">Data
-Backup</a>.</li>
-<li>Updates the Android 2.2 system image to FRF91.</li>
-</ul>
-</dd>
-
-</dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
-
-<p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Android {@sdkPlatformVersion}, Revision 1</a> <em>(May 2010)</em></p>
-
-<div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires SDK Tools r6 or higher.</p>
-</dd>
-
-<dt>Tools:</dt>
-<dd>
-<p>Adds support for building with Android library projects. See <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
-Tools, r6</a> for information.</p>
-</dd>
-
-</dl>
- </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
- <li>
- QVGA (240x320, low density, small screen)
- </li>
- <li>
- WQVGA (240x400, low density, normal screen)
- </li>
- <li>
- FWQVGA (240x432, low density, normal screen)
- </li>
- <li>
- HVGA (320x480, medium density, normal screen)
- </li>
- <li>
- WVGA800 (480x800, high density, normal screen)
- </li>
- <li>
- WVGA854 (480x854 high density, normal screen)
- </li>
-</ul>
diff --git a/docs/html/tools/revisions/studio.jd b/docs/html/tools/revisions/studio.jd
deleted file mode 100755
index 5747f52..0000000
--- a/docs/html/tools/revisions/studio.jd
+++ /dev/null
@@ -1,863 +0,0 @@
-page.title=Android Studio Release Notes
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/installing/index.html">Installing Android Studio</a></li>
- </ol>
-
-</div>
-</div>
-
-
-<p>Android Studio is the official IDE for Android development, and with a single download includes
-everything you need to begin developing Android apps:</p>
-
-<ul>
- <li>IntelliJ IDE + Android Studio plugin
- </li>
-
- <li>Android SDK Tools
- </li>
-
- <li>Android Platform-tools
- </li>
-
- <li>A version of the Android platform
- </li>
-
- <li>Android Emulator with an Android system image including Google Play
- Services
- </li>
-</ul>
-
-<p>For an introduction to Android Studio, read the
-<a href="{@docRoot}tools/studio/index.html">Android Studio</a> guide.</p>
-
-<p>Periodic updates are pushed to Android Studio without requiring you to update your Android
-project. To manually check for updates, select <strong>Help > Check for update</strong> (on Mac,
-select <strong>Android Studio > Check for updates</strong>).</p>
-
-
-<h2 id="Revisions">Revisions</h2>
-
-<p>The sections below provide notes about successive releases of
-Android Studio, as denoted by revision number. </p>
-
-
-<div class="toggle-content open">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
- alt=""/>Android Studio v2.1.0</a> <em>(April 2016)</em>
- </p>
- <div class="toggle-content-toggleme">
-
-<p>The primary changes in this update provide support for development with the
-<a href="{@docRoot}preview/index.html">Android N Preview</a>.</p>
-
-<p>The Android N platform adds support for <a
-href="{@docRoot}preview/j8-jack.html">Java 8 language features</a>, which
-require a new experimental 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.</p>
-
-<p class="note"><strong>Note:</strong> <a
-href="{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a>
-is disabled when you enable the Jack compiler because they currently are not
-compatible.</p>
-
-<p>Although Android Studio 2.1 is now stable, the Jack compiler is still
-experimental and you must enable it with <a
-href="{@docRoot}preview/j8-jack.html#configuration">the <code>jackOptions</code>
-property</a> in your <code>build.gradle</code> file.</p>
-
-<p>Other than the changes to support the N Preview, Android Studio 2.1
-includes minor bug fixes and the following enhancements:</p>
- <ul>
- <li>The Java-aware C++ debugger is now enabled by default when you're
-using an N device or emulator and select <strong>Native</strong> debugger mode
-(in the <strong>Debugger</strong> tab for your run/debug configuration).</li>
- </ul>
- <p>For other build enhancements, including incremental Java compilation
- and dexing-in-process, update your <a
-href="{@docRoot}tools/revisions/gradle-plugin.html">Android Plugin for
-Gradle</a> to version 2.1.0.</p>
- </div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v2.0.0</a> <em>(April 2016)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <p class="note">
- <strong>Note:</strong> If you are developing for the N Developer Preview, you
- should use Android Studio 2.1 Preview. Android Studio 2.0 does not support
- all the features required to target the N Preview. To learn more, read about
- how to properly <a href="{@docRoot}preview/setup-sdk.html">set up your
- developer environment</a> for the N Preview.
- </p>
-
- <p>
- <strong>Instant Run</strong>:
- </p>
-
- <ul>
- <li>Android Studio now deploys clean builds faster than ever before.
- Additionally, pushing incremental code changes to the emulator or a physical
- device is now almost instantaneous. Review your updates without redeploying a
- new debug build or, in many cases, without restarting the app.
- </li>
-
- <li>Instant Run supports pushing the following changes to a running app:
- <ul>
- <li>Changes to the implementation of an existing instance method or
- static method
- </li>
-
- <li>Changes to an existing app resource
- </li>
-
- <li>Changes to structural code, such as a method signature or a static
- field (requires a target device running API level 21 or higher).
- </li>
- </ul>
- </li>
-
- <li>Read the documentation to learn more <a href=
- "{@docRoot}tools/building/building-studio.html#instant-run">about Instant
- Run</a>.
- <p class="note">
- <strong>Note:</strong> Instant Run is supported only when you deploy the
- debug build variant, use <a href=
- "{@docRoot}tools/revisions/gradle-plugin.html#revisions">Android Plugin for
- Gradle version 2.0.0</a> or higher, and configure your app's module-level
- <code>build.gradle</code> file for <code>minSdkVersion 15</code> or higher.
- For the best performance, configure your app for <code>minSdkVersion
- 21</code> or higher.
- </p>
- </li>
- </ul>
-
-<p><strong>New additions to Lint:</strong></p>
- <ul>
- <li>Inspection of {@code switch} statements using {@link
- android.support.annotation.IntDef @IntDef} annotated integers to make sure
- all constants are handled. To quickly add any missing statements, use the the
- intention action drop-down menu and select <b>Add Missing @IntDef
- Constants</b>.
- </li>
-
- <li>Flags for incorrect attempts to use string interpolation to insert
- version numbers in the {@code build.gradle} file.
- </li>
-
- <li>Flags for anonymous classes that extend the {@link android.app.Fragment
- Fragment} class.
- </li>
-
- <li>Flags for native code in unsafe locations, such as the {@code res/} and {@code
- asset/} folders. This flag encourages storing native code in the {@code libs/}
- folder, which is then securely packaged into the application’s {@code
- data/app-lib/} folder at install time. <a class="external-link" href=
- "https://android-review.googlesource.com/#/c/169950/">AOSP: #169950</a>
- </li>
-
- <li>Flags for unsafe calls to {@link java.lang.Runtime#load(java.lang.String)
- Runtime.load()} and {@link java.lang.System#load(java.lang.String)
- System.load()} calls. <a class="external-link" href=
- "https://android-review.googlesource.com/#/c/179980/">AOSP: #179980</a>
- </li>
-
- <li>Find and remove any unused resources by selecting <b>Refactor > Remove
- Unused Resources</b> from the menu bar. Unused resource detection now
- supports resources only referenced by unused resources, references in raw
- files such as {@code .html} image references, and {@code tools:keep} and
- {@code tools:discard} attributes used by the Gradle resource shrinker, while
- considering inactive source sets (such as resources used in other build
- flavors) and properly handling static field imports.
- </li>
-
- <li>Checks that implicit API references are supported on all platforms
- targeted by {@code minSdkVersion}.
- </li>
-
- <li>Flags improper usage of {@link android.support.v7.widget.RecyclerView}
- and {@link android.os.Parcelable}.
- </li>
-
- <li>{@link android.support.annotation.IntDef @IntDef}, {@link
- android.support.annotation.IntRange @IntRange}, and {@link
- android.support.annotation.Size @Size} inspections are now also checked for
- {@code int} arrays and varargs.
- </li>
- </ul>
-
-<p><strong>Additional Improvements</strong>:</p>
- <ul>
- <li>Optimized for Android Emulator 2.0, which is faster than ever before,
- supports a wider range of virtual devices, and features a drastically
- improved UI. To learn more about the new emulator, read the <a href=
- "{@docRoot}tools/sdk/tools-notes.html#notes">SDK Tools release notes</a>.
- </li>
-
- <li>Improvements to the <a href=
- "{@docRoot}tools/devices/managing-avds.html">Android Virtual Device
- Manager</a>:
- <ul>
- <li>System images are now categorized under the following tabs:
- <em>Recommended</em>, <em>x86</em>, and <em>Other</em>.
- </li>
-
- <li>Under advanced settings, you can enable multi-core support and
- specify the number of cores the emulator can use.
- </li>
-
- <li>Under advanced settings, you can determine how graphics are rendered
- on the emulator by selecting one of the following options:
- <ul>
- <li>
- <strong>Hardware:</strong> use you computer's graphics card for
- faster rendering.
- </li>
-
- <li>
- <strong>Software:</strong> use software-based rendering.
- </li>
-
- <li>
- <strong>Auto:</strong> let the emulator decide the best option. This
- is the default setting.
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>Improved AAPT packaging times by specifying deploy target before the app
- is built. This allows Android Studio to efficiently package only the
- resources required by the specified device.
- </li>
-
- <li>Added Cloud Test Lab integration to provide on-demand app testing with
- the convenience and scalability of a cloud service. Learn more about how you
- can <a href="{@docRoot}training/testing/start/index.html#run-ctl">use Cloud
- Test Lab with Android Studio</a>.
- </li>
-
- <li>Added a preview of the new <a class="external-link" href=
- "//tools.android.com/tech-docs/gpu-profiler">GPU Debugger</a>. For graphics
- intensive applications, you can now visually step through your OpenGL ES code
- to optimize your app or game.
- </li>
-
- <li>Added Google App Indexing Test. Add support for URLs, app
- indexing, and search functionality to your apps to help drive more
- traffic to your app, discover which app content is used most, and attract
- new users. Test and validate URLs in your app all within Android
- Studio. See <a href=
- "{@docRoot}tools/help/app-link-indexing.html">Supporting URLs and App Indexing in Android Studio</a>.
- </li>
-
- <li>Upgrades from the latest IntelliJ 15 release, including improved code
- analysis and performance. See <a class="external-link" href=
- "https://www.jetbrains.com/idea/whatsnew">What's New in IntelliJ</a> for a
- complete description of the new features and enhancements.
- </li>
-
- <li>XML editor auto-complete now adds quotations marks when completing
- attributes. To check if this option is enabled, open the <b>Setting</b> or
- <b>Preferences</b> dialogue, navigate to <b>Editor > General > Smart
- Keys</b>, and check the box next to <b>Add quotes for attribute value on
- attribute completion</b>. <a class="external-link" href=
- "//b.android.com/195113">Issue: 195113</a>
- </li>
-
- <li>The XML editor now supports code completion for <a href=
- "{@docRoot}tools/data-binding/guide.html#layout_details">data binding</a>
- expressions.
- </li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.5.1</a> <em>(December 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Fixed a rendering failure issue in the Layout Editor.
- <a href="http://b.android.com/194612">Issue: 194612</a> </li>
- <li>Added the ability to vary <code>description</code> manifest attributes by configuration.
- <a href="http://b.android.com/194705">Issue: 194705</a>
- </li>
- <li>Improved the contrast of the Android Studio Darcula appearance theme in Vector Asset Studio.
- <a href="http://b.android.com/191819">Issue: 191819</a>
- </li>
- <li>Added <em>Help</em> button support to Vector Asset Studio.
- </li>
- <li>Added support for the <code>%</code> operator for data binding. <a href="http://b.android.com/194045">Issue: 194045</a>
- </li>
- <li>Fixed a case where launching an app for debugging resulted in the debugger connecting to the
- wrong device. <a href="http://b.android.com/195167">Issue: 195167</a>
- </li>
- <li>Fixed a null pointer exception that could occur when attempting to run an app in
- certain scenarios.
- </li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.5.0</a> <em>(November 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Added new Memory Monitor analysis abilities to Android Monitor. When you view an HPROF file
- captured from this monitor, the display is now more helpful so you can more quickly locate
- problems, such as memory leaks. To use this monitor, click <strong>Android Monitor</strong> at
- the bottom of the main window. In Android Monitor, click the <strong>Memory</strong> tab. While
- the monitor is running, click the <strong>Dump Java Heap</strong> icon, and then click
- <strong>Captures</strong> in the main window and double-click the file to view it. Click
- <em>Capture Analysis</em> on the right. (The
- Android Device Monitor can't be running at the same time as Android Monitor.)</li>
- <li>Added new deep link and app link support. The Code Editor can automatically create an
- intent filter for deep linking in the <code>AndroidManifest.xml</code> file. It can also
- generate code to help you integrate with the
- <a href="http://developers.google.com/app-indexing/android/publish" class="external-link">App Indexing API</a>
- in an activity in a Java file. A deep link testing feature
- helps you verify that a specified deep link can launch an app. In the <strong>General</strong>
- tab of the <em>Run/Debug Configurations</em> dialog, you can specify deep link launch
- options. You can also test App Indexing API calls in an activity by using the Android Monitor
- <strong>logcat</strong> display. The Android <code>lint</code> tool now has warnings for
- certain issues involving deep links and the App Indexing API.
- </li>
- <li>Added the ability to use short names when code-completing custom views in the Code Editor.
- </li>
- <li>Added support for more {@link android.graphics.drawable.VectorDrawable} elements to
- <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
- for backward-compatibility. Vector Asset Studio can use these elements to convert vector
- drawables into PNG raster images to use with Android 4.4 (API level 20) and lower.
- </li>
- <li>Added new <code>lint</code> checks for Android TV and Android Auto to give you
- immediate, actionable feedback in Android Studio, along with several quick fixes. For example,
- for Android TV, it can report and provide a quick fix for permissions, unsupported hardware,
- <code>uses-feature</code> element, and missing banner issues. For Android Auto, it can
- validate the correct usage in the descriptor file referred from your
- <code>AndroidManifest.xml</code> file, report if there isn't an intent filter for the
- <code>MediaBrowserService</code> class, and identify certain voice actions issues.
- </li>
- <li>Added new <code>lint</code> checks for insecure broadcast receivers,
- <code>SSLCertificateSocketFactory</code> and <code>HostnameVerifier</code> class uses, and
- <code>File.setReadable()</code> and <code>File.setWritable()</code> calls. It also detects
- invalid manifest resource lookups, especially for resources that vary by configuration.
- </li>
- <li>Fixed a number of stability issues.
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.4.1</a> <em>(October 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Fixed a Gradle model caching issue that could lead to excessive Gradle syncing when the IDE
- was restarted.
- </li>
- <li>Fixed a native debugging deadlock issue.
- </li>
- <li>Fixed an issue blocking users of the Subversion 1.9 version control system.
- </li>
- <li>Fixed a <em>Device Chooser</em> dialog problem where after connecting a device that was
- unauthorized you could no longer select the emulator. <a href="http://b.android.com/189658">Issue: 189658</a>
- </li>
- <li>Fixed incorrect translation error reporting for locales that have a region qualifier and a
- translation in the region (but not in the base locale). <a href="http://b.android.com/188577">Issue: 188577</a>
- </li>
- <li>Fixed a deadlock issue in the Theme Editor related to its interaction with the Layout
- Editor. <a href="http://b.android.com/188070">Issue: 188070</a>
- </li>
- <li>Fixed a Theme Editor reload and edit conflict causing attributes to not properly update.
- <a href="http://b.android.com/187726">Issue: 187726</a>
- </li>
- <li>Improved Theme Editor performance.
- </li>
- <li>Fixed an issue where the <code>android:required</code> attribute was ignored in the manifest.
- <a href="http://b.android.com/187665">Issue: 187665</a>
- </li>
- </ul>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.4.0</a> <em>(September 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Added the <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
- tool for importing vector graphics, such as material icons
- and SVG files. To use this tool, in the Android view of the Project window, right-click the
- <strong>res</strong> folder and select <strong>New</strong> > <strong>Vector Asset</strong>.
- </li>
- <li>Added new Android Monitor functions, GPU and Network. To use these monitors, click
- <strong>Android Monitor</strong> at the bottom of the main window. The Android Device Monitor
- can't be running at the same time as Android Monitor.
- </li>
- <li>Added an early preview of the new Theme Editor. To use this feature, select
- <strong>Tools</strong> > <strong>Android</strong> > <strong>Theme Editor</strong>.
- </li>
- <li>Updated the Android templates for the Design Support Library. Templates now include support
- for the Material Design specification, as well as the <code>appcompat</code> Support Library
- for backwards compatibility.
- </li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.3.2</a> <em>(August 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Added support for Android 6.0 (API level 23), including new icons and AVD Manager
- support for creating devices with new screen densities.</li>
- <li>Fixed an exception that was occuring during update checks.
- <a href="http://b.android.com/183068">Issue: 183068</a></li>
- <li>Fixed problem where unresolved view coordinates could cause the layout editor to crash.
- <a href="http://b.android.com/178690">Issue: 178690</a></li>
- <li>Fixed issue with invalid resource type warnings.
- <a href="http://b.android.com/182433">Issue: 182433</a></li>
- <li>Fixed lint check that was incorrectly flagging resources as private.
- <a href="http://b.android.com/183120">Issue: 183120</a></li>
- </ul>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.3.1</a> <em>(August 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Fixed support for creating an Android Wear Android Virtual Device (AVD) on Windows. </li>
- <li>Updated the <em>Project Wizard</em> to use the entered project name. </li>
- <li>Added support to allow the Android SDK to be stored in a read-only directory. </li>
- <li>Updated Android Plugin for Gradle version to 1.3.0. </li>
- <li>Fixed issues with launching a debug session from the Android Debug Bridge (adb) Unix
- shell. </li>
- <li>Fixed the Java package renaming message to show the correct package name. </li>
- </ul>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.3.0</a> <em>(July 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Added options to enable
- <a href="{@docRoot}tools/studio/studio-features.html#dev-services">developer services</a>,
- such as <a href="https://developers.google.com/admob/">AdMob</a> and
- <a href="{@docRoot}distribute/analyze/start.html">Analytics</a>, in your app from within
- Android Studio. </li>
- <li>Added additional <a href="{@docRoot}tools/debugging/annotations.html">annotations</a>,
- such as <code>@RequiresPermission</code>, <code>@CheckResults</code>, and
- <code>@MainThread</code>. </li>
- <li>Added the capability to generate Java heap dumps and analyze thread allocations from the
- <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a>. You can also
- convert Android-specific HPROF binary format files to standard HPROF format from within
- Android Studio. </li>
- <li>Integrated the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>
- into Android Studio to simplify package and tools access and provide update notifications.
- <p class="note"><strong>Note:</strong> The standalone SDK Manager is still available from
- the command line, but is recommended for use only with standalone SDK
- installations. </p> </li>
- <li>Added the <code>finger</code> command in the emulator console to simulate
- <a href="{@docRoot}tools/studio/studio-features.html#finger-print">fingerprint</a>
- authentication. </li>
- <li>Added a <code><public></code> resource declaration to designate library
- resources as
- <a href="{@docRoot}tools/studio/studio-features.html#private-res">public and private</a>
- resources.
- <p class="note"><strong>Note:</strong> Requires
- <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a>
- version 1.3 or higher. </p> </li>
- <li>Added <a href="{@docRoot}tools/data-binding/guide.html">data binding</a> support to
- create declarative layouts that bind your application logic to layout elements. </li>
- <li>Added support for a separate
- <a href="{@docRoot}tools/studio/studio-features.html#test-module">test APK module</a>
- to build test APKs in Android Studio. </li>
- <li>Updated the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a> with HAXM
- optimizations and improved notifications. </li>
- <li>Added 64-bit ARM and MIPS emulator support for
- <a class="external-link" href="http://wiki.qemu.org/Main_Page">QEMU</a> 2.1. </li>
- <li>Simplified the resolution of <a href="{@docRoot}tools/help/lint.html">lint</a> warnings
- by adding quick fixes, such as the automatic generation of
- <a href="{@docRoot}reference/android/os/Parcelable.html">Parcelable</a>
- implementation.</li>
- <li>Added <a href="{@docRoot}sdk/installing/studio-tips.html#live-templates">live template</a>
- support for quick insertion of code snippets. </li>
- </ul>
- </div>
-</div>
-
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.2.2</a> <em>(June 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Fixed build issues that were blocking builds from completing. </li>
- </ul>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.2.1</a> <em>(May 2015)</em>
- </p>
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Fixed minor performance and feature issues. </li>
- </ul>
- </div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.2.0</a> <em>(April 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>Fixes and enhancements:</p>
- <ul>
- <li>Updated the Android runtime window to include the
- <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> tool
- and added a tab for CPU performance monitoring.</li>
- <li>Added a <em>Captures</em> tab in the left margin to display the captured memory and CPU
- performance data files, such as CPU method tracking and memory heap snapshots.</li>
- <li>Expanded <a href="{@docRoot}tools/debugging/annotations.html">annotation</a>
- support with additional metadata annotations and inferred nullability. </li>
- <li>Enhanced the Translations Editor with additional support for Best Current Practice
- (BCP) 47, which uses 3-letter language and region codes.</li>
- <li>Integrated IntelliJ 14 and 14.1 features for improved code analysis and performance:</li>
- <ul>
- <li>Enhanced debugging to show inline values for variables and referring objects,
- as well as perform inline evaluation of lambda and operator expressions. </li>
- <li>Added code style detection for tab and indent sizes. </li>
- <li>Added scratch files for code experiments and prototyping without project files.</li>
- <li>Added the simultaneous insertion of opening and closing tags in HTML and XML files.</li>
- <li>Added a built-in Java class decompiler so you can look at what’s inside a library
- for which the source code is not available. </li>
- </ul>
- <p>See
- <a class="external-link" href="https://www.jetbrains.com/idea/whatsnew">What's New in IntelliJ</a>
- for a complete description of the new features and enhancements.</p>
- </li>
- <li>Added additional <a href="{@docRoot}tools/studio/index.html#project-view">Project Views</a>
- for <em>Scratches</em>, <em>Project Files</em>, <em>Problems</em>, <em>Production</em>,
- and <em>Tests</em> to enhance project management and access. </li>
- <li>Enhanced the <strong>File > Settings</strong> menu and dialogs for improved settings
- access and management. </li>
- <li>Added support for high-density displays for Windows and Linux. </li>
- <li>Added support for 280 dpi resources in the <code>res/drawable-280dpi/</code> folder.
- </ul>
- </ul>
- </div>
-</div>
-
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.1.0</a> <em>(February 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>Various fixes and enhancements:</p>
- <ul>
- <li>Added support for the <a href="{@docRoot}design/wear/index.html">Android Wear</a> watch
- template. </li>
- <li>Modified new project and module creation to include
- <a href="{@docRoot}tools/projects/index.html#mipmap"><code>res/mipmap</code></a> folders for
- density-specific launcher icons. These <code>res/mipmap</code> folders replace the
- <a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>res/drawable</code></a>
- folders for launcher icons. </li>
- <li>Updated launcher icons to have a
- <a href="{@docRoot}design/material/index.html">Material Design</a> look and added an
- <code>xxxhdpi</code> launcher icon. </li>
- <li>Added and enhanced <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a> checks
- for region and language combinations, launcher icons, resource names, and other common
- code problems.</li>
- <li>Added support for Best Current Practice (BCP) language tag 47. </li>
- </ul>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.0.1</a> <em>(December 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>Various fixes and enhancements:</p>
- <ul>
- <li>Fixed AVD Manager and <strong>device.xml</strong> file lock issue. </li>
- <li>Fixed the emulator log on Windows systems. </li>
- <li>Fixed issue with creating AVDs with Android Studio and Android SDK installed on different
- drives on Windows systems.</li>
- <li>Sets the default update channel for new downloads to <strong>Stable</strong>. If you
- installed the 1.0.0 version of Android Studio and would like stable, production-ready version
- updates, use <strong>File > Settings > Updates</strong> to change to the <strong>Stable</strong>
- update channel.
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v1.0</a> <em>(December 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>Initial release of Android Studio.</p>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.8.14</a> <em>(October 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>See
- <a href="http://tools.android.com/recent/androidstudio0814inbetachannel">tools.android.com</a>
- for a full list of changes.</p>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.8.6</a> <em>(August 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</p>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.8.0</a> <em>(June 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p>Added support for Android Wear projects.</p>
- <p>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</p>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.5.2</a> <em>(May 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <ul>
- <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.4.6</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <ul>
- <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.4.2</a> <em>(Jan 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <ul>
- <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.3.2</a> <em>(Oct 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <ul>
- <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.2.x</a> <em>(July 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <ul>
- <li>Merged in the latest IntelliJ codebase changes. Includes fixes for issues reported by Studio users such as tweaks to Linux font sizes and font rendering.</li>
- <li>Android Gradle plug-in updated to 0.5.0.
- <p class="caution"><strong>Caution:</strong> This new version is not backwards compatible.
- When opening a project that uses an older version of the plug-in, Studio will show an error
- stating <strong>Gradle <project_name> project refresh failed.</strong></p>
- <p>The updated Gradle plug-in includes the following changes:</p>
- <ul>
- <li>Fixed IDE model to contain the output file even if it's customized through the DSL. Also
- fixed the DSL to get/set the output file on the variant object so that it's not necessary to
- use <code>variant.packageApplication or variant.zipAlign</code></li>
- <li>Fixed dependency resolution so that we resolved the combination of (default config,
- build types, flavor(s)) together instead of separately.</li>
- <li>Fixed dependency for tests of library project to properly include all the dependencies
- of the library itself.</li>
- <li>Fixed case where two dependencies have the same leaf name.</li>
- <li>Fixed issue where Proguard rules file cannot be applied on flavors.</li>
- </ul>
- <p>All Gradle plugin release notes are available are here: <a href=
- "http://tools.android.com/tech-docs/new-build-system"
- >http://tools.android.com/tech-docs/new-build-system</a>.</p>
- </li>
- <li>Gradle errors from aapt no longer point to merged output files in the build/ folder, they
- point back to the real source locations.</li>
- <li>Parallel Builds. It's now possible to use Gradle's parallel builds. Please be aware that
- parallel builds are in "incubation" (see <a
- href="http://www.gradle.org/docs/current/userguide/gradle_command_line.html">Gradle's
- documentation</a>.) This feature is off by default. To enable it, go to
- <strong>Preferences</strong> > <strong>Compiler</strong> and check the box <em>Compile
- independent modules in parallel</em>.</li>
- <li>Further work on the new resource repository used for layout rendering, resource
- folding in the editor, and more:
- <ul>
- <li>Basic support for .aar library dependencies (e.g. using a library without a local copy of
- the sources). Still not working for resource XML validation and navigation in source editors.
- </li>
- <li>Cycle detection in resource references.</li>
- <li>Quick Documentation (F1), which can show all translations of the string under the caret,
- will now also show all resource overlays from the various Gradle flavors and build types, as
- well as libraries. They are listed in reverse resource overlay order, with strikethrough on
- the versions of the string that are masked.</li>
- <li>Fixes to handle updating the merged resources when the set of module dependencies
- change.</li>
- <li>XML rendering fixes to properly handle character entity declarations and XML and unicode
- escapes.</li>
- </ul>
- <li>Save screenshot support for the layout preview and layout editor windows.</li>
- <li>Template bug fixes.</li>
- <li>Lint bug fixes.</li>
- <li>Various fixes for crash reports. Thank you, and keep filing crash reports!</li>
- </ul>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>Android Studio v0.1.x</a> <em>(May 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <ul>
- <li>Various bug fixes, including a fix for a common Windows installation issue.
- </ul>
- </div>
-</div>
-
-<p> </p>
-
-
-<h2 id="Troubleshooting">Troubleshooting</h2>
-
-<p>If you encounter problems in Android Studio, look at the following page
-for possible resolutions to known issues: <a href="http://tools.android.com/knownissues"
->http://tools.android.com/knownissues</a>.</p>
-
-
-
-</div><!-- end main content -->
-
-
-
-
-</div><!-- end relative position wrapper -->
-
-
-
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
deleted file mode 100644
index d5f581f..0000000
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ /dev/null
@@ -1,2360 +0,0 @@
-page.title=ADT Plugin Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse
-Plugin</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>Android Development Tools (ADT) is a plugin for the Eclipse IDE
-that extends the capabilities of Eclipse to let you quickly set up new Android
-projects, create an application UI, add packages based on the Android
-Framework API, debug your applications using the Android SDK tools, and even
-export signed (or unsigned) {@code .apk} files in order to distribute your application.</p>
-
-<p class="note"><strong>Note:</strong>
-If you have been using Eclipse with ADT, be aware that <a
-href="{@docRoot}tools/studio/index.html">Android Studio</a> is now the official IDE
-for Android, so you should migrate to Android Studio to receive all the
-latest IDE updates. For help moving projects,
-see <a href="/sdk/installing/migrate.html">Migrating to Android
-Studio</a>.</p>
-
-<p>Note that
-before you can install or use ADT, you must have compatible versions of both the
-Eclipse IDE and the Android SDK installed. For details, make sure to read <a
-href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse
-Plugin</a>. </p>
-
-
-<p>For information about the features provided by the ADT plugin, such as code
-editor features, SDK tool integration, and the graphical layout editor (for drag-and-drop layout
-editing), see the <a href="{@docRoot}tools/help/adt.html">Android Developer Tools</a>
-document.</p>
-
-
-<h2 id="notes">Revisions</h2>
-
-<p>The sections below provide notes about successive releases of
-the ADT Plugin, as denoted by revision number. </p>
-
-<p>For a summary of all known issues in ADT, see <a
-href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</p>
-
-
-<div class="toggle-content opened">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
- alt=""/>ADT 23.0.7</a> <em>(August 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
- <li>Java 1.6 or higher is required if you are targeting other releases.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r24.1.2</a>.
- If you haven't already installed SDK Tools r24.1.2 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issues with the rendering library for the visual layout editor.</li>
- </ul>
- </dd>
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 23.0.6</a> <em>(March 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
- <li>Java 1.6 or higher is required if you are targeting other releases.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r24.1.2</a>.
- If you haven't already installed SDK Tools r24.1.2 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issues with the rendering library for the visual layout editor.</li>
- </ul>
- </dd>
-</dl>
-</div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 23.0.4</a> <em>(October 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
- <li>Java 1.6 or higher is required if you are targeting other releases.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.4</a>.
- If you haven't already installed SDK Tools r23.0.4 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed duplicate devices in AVD for Wear and TV.</li>
- </ul>
- </dd>
-</dl>
-</div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 23.0.3</a> <em>(August 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
- <li>Java 1.6 or higher is required if you are targeting other releases.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.2</a>.
- If you haven't already installed SDK Tools r23.0.2 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed an issue where ADT displayed a <code>NullPointerException</code> warning dialog
- when a valid SDK was not configured. (<a href="http://b.android.com/73313">Issue
- 73313</a>)</li>
- <li>Fixed a minor issue with RenderScript support.</li>
- <li>Disabled APK compression.</li>
- </ul>
- </dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 23.0.2</a> <em>(July 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
- <li>Java 1.6 or higher is required if you are targeting other releases.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.2</a>.
- If you haven't already installed SDK Tools r23.0.2 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>ADT Bundle shows the Java perspective by default.</li>
- <li>ADT Bundle 23.0.0 and prior versions would not allow updating the ADT plugins
- due to conflicting dependencies. This version fixes that bug and should allow
- updating to future versions of the ADT plugins.</li>
- </ul>
- </dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 23.0.0</a> <em>(June 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
- <li>Java 1.6 or higher is required if you are targeting other releases.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.0</a>.
- If you haven't already installed SDK Tools r23.0.0 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added the Android Wear tools and system images.</li>
- </ul>
- </dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.6.3</a> <em>(April 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6.3</a>.
- If you haven't already installed SDK Tools r22.6.3 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed a problem where the AVD manager allowed creating Android Wear virtual devices
- with a target API Level lower than 19.</li>
- <li>Fixed the description of Android Wear system images in the SDK Manager.</li>
- </ul>
- </dd>
-
- <dt>Known Issues:</dt>
- <dd>
- <p>When you create an Android Wear virtual device in the AVD manager, a target API Level
- lower than 19 may be selected by default. Make sure you select the target API Level 19
- when creating Android Wear virtual devices.</p>
- </dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.6.2</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6.2</a>.
- If you haven't already installed SDK Tools r22.6.2 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li><p>Changed the URL for the Android Developer Tools update site to require HTTPS.</p>
- <p class="note"><strong>Note:</strong> If you are
- <a href="{@docRoot}sdk/installing/installing-adt.html">updating ADT</a>, make sure
- you use HTTPS in the URL for the Android Developer Tools update site.</p>
- </li>
- <li>Fixed a problem where Eclipse was non-responsive for a few seconds after opening
- an XML file. (<a href="http://b.android.com/67084">Issue 67084</a>)</li>
- <li>Fixed a problem where the SDK Manager threw a <code>NullPointerException</code> after
- removing a virtual device that was created using the Android Wear
- system image. (<a href="http://b.android.com/67588">Issue 67588</a>)</li>
- <li>Fixed a problem where the layout preview for large screens in Eclipse showed the
- resources from the <code>drawable-*</code> directories instead of those from the
- <code>drawable-large-*</code> directories.</li>
- <li>Fixed a problem with Nexus 5 Android virtual devices created from the command line
- where the SD card file system was read-only.</li>
- </ul>
- </dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.6.1</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6.1</a>.
- If you haven't already installed SDK Tools r22.6.1 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed a problem where the Android Virtual Device Manager could not create new
- virtual devices. (<a href="http://b.android.com/66661">Issue 66661</a>)</li>
- <li><p>Fixed a problem with virtual devices created using ADT 22.3 or earlier.</p>
- <p>If you created an Android Virtual Device using ADT 22.3 or earlier, the
- AVD may be listed as <em>broken</em> in the AVD Manager in 22.6.1. To fix
- this problem, select the virtual device on the AVD Manager and click
- <strong>Repair</strong>.</p>
- </li>
- <li>Fixed a problem with the command line tools when creating virtual devices.
- (<a href="http://b.android.com/66740">Issue 66740</a>)</li>
- <li>Fixed a problem with the command line <code>lint</code> script.</li>
- </ul>
- </dd>
-
- <dt>Known Issues:</dt>
- <dd>
- <p>When you create an Android virtual device using the Nexus 5 device definition,
- you must enable the <em>Use Host GPU</em> option, otherwise the virtual device
- will not start.</p>
- </dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.6.0</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6</a>.
- If you haven't already installed SDK Tools r22.6 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li><p>Added support for Java 7 language features like multi-catch, try-with-resources,
- and the diamond operator. These features require version 19 or higher
- of the Build Tools. Try-with-resources requires <code>minSdkVersion</code>
- 19; the rest of the new language features require
- <code>minSdkVersion</code> 8 or higher.</p>
- <p>To use the new language features after installing ADT 22.6.0, ensure
- that you run Eclipse on JDK 7 and change your application project settings
- to use JDK 7.</p>
- </li>
- <li>Added new lint checks:
- <ul>
- <li>Security:
- <ul>
- <li>Look for code potentially affected by a <code>SecureRandom</code>
- vulnerability.</li>
- <li>Check that calls to <code>checkPermission</code> use the return
- value.</li>
- </ul>
- </li>
- <li>Check that production builds do not use mock location providers.</li>
- </ul>
- </li>
- <li>Updated the New Project templates to include the
- <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">
- v7 appcompat Support Library</a>.</li>
- <li>Updated the Android tools libraries to include the rendering sandbox,
- improvements for converting resource XML string declarations to layout
- strings, and other updates.</li>
- <li>Improved the Gradle export wizard. Note that the new importer in Android
- Studio is the preferred way to migrate existing projects to Gradle.</li>
- <li>Fixed a deadlock during startup.</li>
- <li>Fixed an issue with RenderScript support. Using RenderScript support mode
- now requires version 19.0.3 of the Build Tools.</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.3.0</a> <em>(October 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.3</a>.
- If you haven't already installed SDK Tools r22.3 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added support for Android 4.4 (API level 19).</li>
- <li>Fixed problem with parsing view hierarchies containing classes in the java.*
- name space.</li>
- <li>Fixed problem importing Android projects that have the same name as an existing
- project.</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.2.1</a> <em>(September 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.2.1</a>.
- If you haven't already installed SDK Tools r22.2.1 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed problem with templates that causes the new project wizard to hang.
- (<a href="http://b.android.com/60149">Issue 60149</a>)</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.2</a> <em>(September 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.2</a>.
- If you haven't already installed SDK Tools r22.2 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Updated build tools to allow use of RenderScript on older versions of Android
- using new features in the
- <a href="{@docRoot}tools/support-library/features.html#v8">Support Library</a>.</li>
- <li>Reverted signing changes that sometimes trigger a signing verification problem on older
- platforms.</li>
- <li>Fixed problem with gradle export function for the Windows platform.</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.0.5</a> <em>(July 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.0.5</a>.
- If you haven't already installed SDK Tools r22.0.5 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed RenderScript compilation issue for Windows platforms.</li>
- <li>Updated <a href="{@docRoot}tools/help/systrace.html">Systrace</a> report generation
- in the Monitor and DDMS perspectives.</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.0.4</a> <em>(July 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.0.4</a>.
- If you haven't already installed SDK Tools r22.0.4 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed problem with compiling RenderScript code.</li>
- <li>Improved Gradle export with better workflow and error reporting.</li>
- <li>Improved Gradle multi-module export feature.</li>
- <li>Updated build logic to force exporting of the classpath containers unless you are using
- the Maven plugin.</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.0.1</a> <em>(May 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.0.1</a>.
- If you haven't already installed SDK Tools r22.0.1 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issue with Lint ServiceCast check and fully qualified class names.
- (<a href="http://code.google.com/p/android/issues/detail?id=55403">Issue 55403</a>)</li>
- <li>Fixed crash issue with Lint ArraySizeDetector check.
- (<a href="http://code.google.com/p/android/issues/detail?id=54887">Issue 54887</a>)</li>
- <li>Fixed problem with the Gradle export feature.</li>
- <li>Fixed version check issue for the ADT Plugin.</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 22.0.0</a> <em>(May 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22</a>.
- If you haven't already installed SDK Tools r22 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Updated tools to allow libraries to share the same package name as the applications
- that use them.</li>
- <li>Added new Lint checks, including checks for layout consistency,
- {@link android.widget.RelativeLayout} siblings, {@link android.os.Parcel} creator,
- JavaScript interfaces, {@link android.app.Service} casting, quantity strings, manifest
- typos, orientation tags in layouts, overlapping names for 9-patches and images, and class
- existence checks.</li>
- <li>Updated build tools to sign applications using the BouncyCastle library instead of
- relying on Sun JVM specific APIs.</li>
- <li>Added an experimental Gradle build export feature for moving projects into the
- <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a> environment or for
- setting up command-line builds with Gradle.
- (<a href="http://tools.android.com/tech-docs/new-build-system">more info</a>)</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 21.1.0</a> <em>(February 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r21.1</a>.
- If you haven't already installed SDK Tools r21.1 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added new <a href="{@docRoot}tools/projects/templates.html">code templates</a> for
- notifications, blank fragments and list fragments.</li>
- <li>Added support for resource rename refactoring. Renaming a resource XML file, drawable
- icon, an {@code R.} field name or ID in the layout editor invokes a refactoring routine
- to update all resource references.</li>
- <li>Added more than 15 new Lint checks, including checks for overriding older APIs, XML
- resource problems, graphic asset issues and manifest tags.
- <li>Updated XML Editor to respond to refactoring shortcut keys such as <strong>Refactor
- > Rename</strong>.</li>
- <li>Updated XML Editor to improve double click handling.</li>
- <li>Added code completion improvements for custom views, theme references and class
- references. For example, code completion in a {@code <fragment android:name="" >} tag
- now suggests completion with a list of fragment classes. Similarly, code completion in the
- manifest now offers implementations suitable for the given tag.</li>
- <li>Updated the <strong>Project Import</strong> dialog so that it shows a table for all
- imported projects where you can edit the name of the imported project.</li>
- <li>Added support for layout aliases in the Layout Editor.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed issued with refactoring support for renaming and moving classes and packages.
- </li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 21.0.1</a> <em>(December 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r21.0.1</a>.
- If you haven't already installed SDK Tools r21.0.1 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Build
- <ul>
- <li>Updated build to detect and handle package name conflicts between an application and
- the libraries it depends on. Libraries cannot share package names unless all of them
- share the same package name.
- (<a href="http://code.google.com/p/android/issues/detail?id=40152">Issue 40152</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=40273">Issue 40273</a>)
- </li>
- <li>Added a flag to disable dex merging to deal with cases where merging could generate
- a broken dex file. If this happens to your project, add the following setting to your
- {@code project.properties} file: {@code dex.disable.merger=true} This setting
- causes the build system to revert to the older, slower dex processing that does not
- pre-dex libraries.</li>
- </ul>
- </li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Lint
- <ul>
- <li>Corrected check for {@code 0px} values in style XML elements.
- (<a href="http://code.google.com/p/android/issues/detail?id=39601">Issue 39601</a>)
- </li>
- <li>Fixed incorrect flagging of formatting strings.
- (<a href="http://code.google.com/p/android/issues/detail?id=39758">Issue 39758</a>)
- </li>
- <li>Fixed problem where {@code tools:ignore} directive in the manifest file was ignored
- by the Lint tool.
- (<a href="http://code.google.com/p/android/issues/detail?id=40136">Issue 40136</a>)
- </li>
- <li>Fixed problem with flagging a wakelock release inside a conditional.
- (<a href="http://code.google.com/p/android/issues/detail?id=40424">Issue 40424</a>)
- </li>
- <li>Fixed incorrect reporting of missing {@code layout_width} and {@code layout_height}
- XML fields.
- (<a href="http://code.google.com/p/android/issues/detail?id=38958">Issue 38958</a>)
- </li>
- <li>Fixed handling of custom namespace attributes.</li>
- <li>Added fixes for filtering out library project warnings.</li>
- <li>Removed warnings about missing classes before a build.</li>
- </ul>
- </li>
-
- <li>Android Virtual Device Manager
- <ul>
- <li>Fixed handling of {@code devices.xml} file in other locales.
- (<a href="http://code.google.com/p/android/issues/detail?id=39704">Issue 39704</a>)
- </li>
- <li>Fixed problem where the AVD Manager would not allow you to create a new AVD using
- the <strong>4.0" WVGA</strong> or <strong> 4.65" 720p</strong> device definitions.
- (<a href="http://code.google.com/p/android/issues/detail?id=39939">Issue 39939</a>)
- </li>
- <li>Fixed problem where deleted device definitions were not removed.</li>
- <li>Fixed incorrect screen resolution setting for the Nexus One device definition.</li>
- <li>Fixed problem where writing of an AVD settings file does not properly escape
- {@code \\} path characters.</li>
- </ul>
- </li>
-
- <li>Layout Editor
- <ul>
- <li>Fixed problem where layout cannot render strings starting with {@code \@}.
- (<a href="http://code.google.com/p/android/issues/detail?id=40222">Issue 40222</a>)
- </li>
- <li>Fixed preview error when using the {@code android:numColumns} attribute in a layout.
- (<a href="http://code.google.com/p/android/issues/detail?id=21296">Issue 21296</a>)
- </li>
- <li>Fixed compatibility issue with IntelliJ layout preview caused by layout editor
- deleting the {@code .android/devices.xml} file.</li>
- <li>Added fixes to editor for {@link android.widget.GridLayout}.</li>
- </ul>
- </li>
-
- <li>Added support for {@code ldrtl} and {@code ldltr} resource qualifiers.</li>
- <li>Fixed problem where Android XML resources mistakenly get compiled into {@code *.out.xml}
- output files, causing project errors.
- (<a href="http://code.google.com/p/android/issues/detail?id=3767">Issue 3767</a>)</li>
- <li>Fixed error which caused resource refresh operations to fail.
- (<a href="http://code.google.com/p/android/issues/detail?id=39213">Issue 39213</a>)</li>
- <li>Updated the Custom View code template handle to library projects properly.</li>
- <li>Fixed support for library string resources ({@code strings.xml}) when exporting an
- application that references a library with string resources.
- (<a href="http://code.google.com/p/android/issues/detail?id=39751">Issue 39751</a>)</li>
- <li>Fixed problem where bad AVD setting files caused Device Manager and graphical XML editors
- to crash.
- (<a href="http://code.google.com/p/android/issues/detail?id=40400">Issue 40400</a>)</li>
- </ul>
- </dd>
-
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 21.0.0</a> <em>(November 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r21</a>.
- If you haven't already installed SDK Tools r21.0.0 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General improvements:</dt>
- <dd>
- <ul>
- <li>Layout Editor
- <ul>
- <li>Added multi-configuration editing feature that was previewed at Google I/O
- developer tools talk in June. For an overview, see the
- <a href="https://www.youtube.com/watch?v=Erd2k6EKxCQ">session recording</a>
- (starting at: 20:30).</li>
- <li>Modified the layout logic so that setting a {@link android.app.Fragment} layout or
- a {@link android.widget.ListView} preview layout is now applied not
- only to the current layout but to all other configurations of the same layout.</li>
- <li>Updated the editor to include resources from library projects in the resource chooser,
- XML code completion, Go To Declaration and other editing contexts.</li>
- <li>Updated the editor so that it no longer forces all variations of a single
- layout into a single editor. You can, for example, open both the landscape and portrait
- versions of a layout as separate editors and quickly switch between them, or even
- re-dock your editors to edit them simultaneously. If you prefer the previous behavior,
- set the new option in <strong>Preferences > Android > Editors</strong> to use the
- old behavior.</li>
- <li>Improved the handling of {@link android.widget.RelativeLayout} in the layout editor,
- so that dragging widgets around and deleting them should now result in the layout
- working more intuitively. In particular, deleting a widget causes the constraints
- flowing through the deleted widgets to be intelligently adjusted, and when moving
- widgets the constraints are preserved whenever possible.</li>
- <li>Added the ability to specify a default action in Layout Editor views, which you can
- invoke with the <em>F2</em> key. For example, after dropping a button or text view,
- you can press <em>F2</em> to edit its text.</li>
- <li>Added renaming of an ID (changing the {@code android:id} attribute) by invoking the
- <strong>Rename</strong> shortcut.</li>
- <li>Adding a new locale is now easier with the new <strong>Add Locale...</strong> action
- in the locale menu. In addition to creating the new values folder, it lets you edit an
- initial set of translations for the new locale.</li>
- <li>Updated the editor so that when a custom view (or incorrectly configured view)
- throws an exception during initialization or painting, part of the relevant stack trace
- is shown inline in the layout editor, and you can click on the stack frames to jump to
- the relevant location</li>
- <li>Improved the editor error display to show the relevant part of a stack trace
- when a custom view throws exceptions during rendering or construction, and provides
- hyperlinks to the stack frames.</li>
- <li>Improved the stack trace display for exceptions for custom views that are generated
- during rendering.</li>
- <li>Updated the configuration chooser so that it shows full language and region names (not
- just 2-letter codes) in menus, in the configuration dialog and other editing contexts.
- </li>
- <li>Improved the device menu in the configuration chooser.</li>
- </ul>
- </li>
- <li>Lint
- <ul>
- <li>Added over 25 new lint rules for resources, locale settings, layout
- files, incorrect use of {@link android.util.SparseArray} and
- {@link android.os.PowerManager.WakeLock} and manifest issues.</li>
- <li>Improved the XML export function to support the
- <a href="https://wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin">Jenkins Lint
- plugin</a>.
- </li>
- </ul>
- </li>
- <li>Editors
- <ul>
- <li>Modified the plugin to remember which editor mode (text or graphical) you were last
- using for each type of editor (layout, manifest or values) and uses that mode for newly
- opened files. This means that if you prefer to work with just XML, the editors start
- showing you XML text editors after you have switched to them for each type of editor.</li>
- <li>Updated XML code completion so that it completes (and shows documentation for) theme
- references, such as {@code ?android:attr/dividerHeight}.</li>
- </ul>
- </li>
- <li>Android Virtual Devices (AVD)
- <ul>
- <li>Added new <strong>Device Definitions</strong> tab in the AVD Manager for configuring
- standard size and Nexus virtual devices.</li>
- <li>Improved emulators so that they launch with a skin that is dynamically generated and
- reflects the actual hardware configured in the AVD Manager.</li>
- </ul>
- </li>
- <li>Improved the new template mechanism, cleaned up the existing templates and added
- several new templates</li>
- <li>Added ability to export images and frames in the Tracer for OpenGL ES tool.</li>
- <li>Integrated the Systrace tool into the DDMS perspective.</li>
- <li>Improved the JUnit test runner to allow a test to be run on all connected devices
- simultaneously.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed the editors so that attributes and resources specified by XML files in the
- {@code /values} directory are validated when files are saved.</li>
- <li>Added a workaround for a bug in Eclipse on Mac OS X 10.8 where the Property Sheet was not
- working properly.</li>
- </ul>
- </dd>
-
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 20.0.3</a> <em>(August 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r20.0.3</a>.
- If you haven't already installed SDK Tools r20.0.3 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed issue with keyboard shortcuts for editors in Eclipse Juno (Version 4.x).</li>
- <li>Fixed problem with cached download lists in SDK Manager.</li>
- </ul>
- </dd>
-
-</dl>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 20.0.2</a> <em>(July 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r20.0.1</a>.
- If you haven't already installed SDK Tools r20.0.1 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed keybindings in various XML editors for Eclipse 4.x.</li>
- <li>Fixed a bug that occurs when you try to create layout configurations that already
- exist.</li>
- </ul>
- </dd>
-
-</dl>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 20.0.1</a> <em>(July 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r20.0.1</a>.
- If you haven't already installed SDK Tools r20.0.1 into your SDK, use the
- Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed issue in the New Project Wizard related to installation of the Support Library.</li>
- <li>Fixed several issues with New Project Wizard related to templates.</li>
- <li>Fixed issue with the text-based launcher icon in New Project Wizard.</li>
- <li>Fixed issue with sticky error markers in Java files.</li>
- <li>Fixed problem with manifest merger when exporting release {@code .apk} files.</li>
- <li>Fixed NDK support to automatically find include path on Windows.</li>
- <li>Fixed editor startup exception for new configurations where editor would come up blank.</li>
- <li>Added support for {@code xxhdpi} density, which was included in API Level 16.</li>
- <li>Fixed a bug in the {@code lint} check for unprotected broadcast receivers to ignore
-unprotected receivers for default Android actions.</li>
- </ul>
- </dd>
-
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 20.0.0</a> <em>(June 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}sdk/tools-notes.html">SDK Tools r20</a>.
- If you haven't already installed SDK Tools r20 into your SDK, use the Android SDK
- Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General improvements:</dt>
- <dd>
- <ul>
- <li>Application Templates
- <ul>
- <li>Added Android application templates to allow developers to create specific types of
-applications faster, using Android-recommended best practices.</li>
- </ul>
- </li>
- <li>Performance
- <ul>
- <li>Improved overall ADT performance and fixed memory issues. Loading SDK data
-should be up to 30% faster.</li>
- </ul>
- </li>
- <li>Tracer for GLES
- <ul>
- <li>Added new perspective view and tools for tracing OpenGL calls for an application and
-track the visual results of each call. (<a href="{@docRoot}tools/help/gltracer.html">more info</a>)</li>
- </ul>
- </li>
- <li>Lint
- <ul>
- <li>Added new Lint rules for manifest registrations, duplicate activity
-registrations, security checking, correct use of Toast, missing SharedPreferences commit()
-calls, Fragment class instantiation, and handler leaks.</li>
- <li>Created tighter integration of lint with the layout editor. (<a
-href="http://tools.android.com/recent/lintfeedback">more info</a>)</li>
- <li>Added execution of Lint tool on save option for Java files. (<a
-href="http://tools.android.com/recent/lintonsave">more info</a>)</li>
- </ul>
- </li>
- <li>Layout Editor (<a href="http://tools.android.com/recent/newlayouteditorpropertysheet">more
-info</a>)
- <ul>
- <li>Added highlighting (in bold) for important attributes, inline preview of colors and
-images, including the corresponding resource name.</li>
- <li>Added display of default values, when available.</li>
- <li>Added completion of resource values and enum and flag constants.</li>
- <li>Added support for displaying advanced properties, and nested properties for better
-categorization, for example, layout params are listed first as a single nested property.</li>
- <li>Display Tooltips over the attribute names, not values, so they never obscure the value
-column.</li>
- <li>Provided checkbox support for boolean values.</li>
- <li>Added support for switching between alphabetical and natural sort orders.</li>
- <li>Improved layout editor tool's window management for more usable editing views.</li>
- <li>Improved the layout editor's configuration chooser header user interface.</li>
- </ul>
- </li>
- <li>XML Editing
- <ul>
- <li>Added go to declaration support for theme references (?android:attr, ?attr:).</li>
- <li>Improved code completion in style definitions.</li>
- <li>Improved code completion for the {@code minSdkVersion} and {@code targetSdkVersion}
-attributes in manifest files so that version descriptions are displayed for each of the API
-levels</li>
- <li>Provided support for code completion of custom attributes for custom views,
-including current edits to the style files.</li>
- <li>Improved synchronization of text and graphic editors with the XML outline view,
-including outline changes and display of current selection.</li>
- </ul>
- </li>
- <li>Build System
- <ul>
- <li>Added automatic merging of library project manifest files into the including
-project's manifest. Enable this feature with the {@code manifestmerger.enabled} property.</li>
- <li>Added automatic ProGuard support for the {@code aapt -G} flag. This change causes
-the build system to generate a temporary ProGuard keep-rules file containing classes that
-are referenced from XML files (such as custom views) and pass this to ProGuard at shrink-time. This
-can make the resulting APK much smaller when using just a small portion of a large library project
-(such as the Android Support library), since the catch-all rules to keep all custom views from the
-default ProGuard configuration file have also been removed.</li>
- </ul>
- </li>
- <li>Added support building and debugging NDK-based Android projects.</li>
- </li>
- <li>Added support to the Asset Studio Wizard for padding and turning off background
-shapes.</li>
- <li>Improved LogCat to allow developers to set colors for different priorities.</li>
- <li>Improved app Run functionality to allow running on multiple devices with a single launch.
-The target tab in the launch configuration dialog includes an option to allow launching on all
-connected devices, with the option to further narrow the list to just physical devices or just
-emulators. (This feature is available only for Run configurations, and not for Debug or JUnit
-tests.)</li>
- <ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed a number of issues where Lint incorrectly reported code errors or failed to
-flag code issues.</li>
- <li>Fixed several bugs in the layout editor.</li>
- <li>Fixed compatibility issues with Eclipse 4.x (Juno), including cut/copy/paste
-functions.</li>
- </ul>
- </dd>
-
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 18.0.0</a> <em>(April 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r18</a>.
- If you haven't already installed SDK Tools r18 into your SDK, use the Android SDK
- Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed problem where exporting release package does not recompile libraries in release
- mode.
- (<a href="http://code.google.com/p/android/issues/detail?id=27940">Issue 27940</a>)</li>
- </ul>
- </dd>
-
-</dl>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 17.0.0</a> <em>(March 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Java 1.6 or higher is required.</li>
- <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r17</a>.
- If you haven't already installed SDK Tools r17 into your SDK, use the Android SDK
- Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General improvements:</dt>
- <dd>
- <ul>
- <li>New build features
- <ul>
- <li>Added feature to automatically setup JAR dependencies. Any {@code .jar} files in the
- {@code /libs} folder are added to the build configuration (similar to how the Ant build
- system works). Also, {@code .jar} files needed by library projects are also automatically
- added to projects that depend on those library projects.
- (<a href="http://tools.android.com/recent/dealingwithdependenciesinandroidprojects">more
- info</a>)</li>
- <li>Added a feature that allows you to run some code only in debug mode. Builds now
-generate a class called {@code BuildConfig} containing a {@code DEBUG} constant that is
-automatically set according to your build type. You can check the ({@code BuildConfig.DEBUG})
-constant in your code to run debug-only functions.</li>
- <li>Added support for custom views with custom attributes in libraries. Layouts using
-custom attributes must use the namespace URI {@code http://schemas.android.com/apk/res-auto} instead
-of the URI that includes the app package name. This URI is replaced with the app specific one at
-build time.</li>
- </ul>
- </li>
- <li>Improved Lint features. See the <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r17</a>
-release notes.</li>
- <li>Improved the Lint user interface
- <ul>
- <li>Added <strong>Run Lint</strong> toolbar action with a dropdown menu for selecting
-specific (or all) projects, clearing results and other actions.</li>
- <li>Updated the results window to be organized as a tree rather than a flat list. Each
-issue type has a single top level item, which makes it easier to quickly scan through the reported
-issues and narrow down to the issues you are most interested in.</li>
- <li>Added many new toolbar actions to the results window, including expand/collapse,
-ignore in file, ignore in project, ignore everywhere, show options, and configure columns.</li>
- <li>Added new column options for the <strong>Lint Warnings</strong> tab, such as
-category, priority, project, file and line. The column selection (as well as the column sizes) are
-persisted. You can also click on columns to sort by those values.</li>
- <li>Added Enable All and Disable All buttons to the Lint Options dialog, and a search
-filter textbox to filter by issue id, summary and severity.</li>
- </ul>
- </li>
- <li>Added Quick Outline for XML editors (Ctrl-O, Command-O). This feature shows the structure
-of the current file including icons and ids, lets you filter and quickly jump to specific ids.</li>
- <li>Updated the resource chooser to shows the resolved value for resources. For example,
-when selecting {@code @string/hello} the chooser displays a resolved value such as "Hello World").
-The resource chooser also now allows you to edit the chosen value directly.</li>
- <li>Updated Layout Editor so that it does not assign default ids to layouts, includes and
-merge tags. This behavior tended to pollute the namespace with a lot of unused resources since
-layouts are not usually manipulated via code, or referenced from XML. (The RelativeLayout editor
-automatically assigns ids to views without ids when pointing to them.)</li>
- <li>Added ability to export screenshots from the Layout Editor</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed problem using Layout Editor with {@link android.widget.SlidingDrawer} which could
- not be dragged into the layout on some platforms.</li>
- <li>Fixed preview rendering for {@link android.widget.SlidingDrawer} and
- {@link android.widget.TabHost}.
- (<a href="http://code.google.com/p/android/issues/detail?id=23022">Issue 23022</a>).</li>
- <li>Fixed issues that could prevent layout rendering due to unresolvable resources.
- (<a href="http://code.google.com/p/android/issues/detail?id=21046">Issue 21046</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=21051">Issue 21051</a>)</li>
- <li>Fixed a bug in resource chooser which made some types of framework resources impossible to
-select. (<a href="http://code.google.com/p/android/issues/detail?id=20589">Issue 20589</a>)</li>
- <li>Fixed a bug in the formatter where a certain whitespace pattern could result in a
- non-space character getting deleted.
- (<a href="http://code.google.com/p/android/issues/detail?id=23940">Issue 23940</a>)</li>
- <li>Fixed a locale bug affecting Turkish locales in particular.
- (<a href="http://code.google.com/p/android/issues/detail?id=23747">Issue 23747</a>)</li>
- <li>Fixed an issue where dex complains about duplicate classes in cases where a Library
- Project depends on the same jar files or Java-only projects.</li>
- <li>Fixed an issue where test projects had to independently reference the library projects
- used by an app project. Now referencing only the app project is enough.</li>
- </ul>
- </dd>
-
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 16.0.1</a> <em>(December 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Eclipse Helios (Version 3.6) or higher is required.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r16</a>.
- If you haven't already installed SDK Tools r16 into your SDK, use the Android SDK
- Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed build issue where the 9-patch could be packaged as normal bitmap in some cases.</li>
- <li>Fixed minor issues in the <a href="http://tools.android.com/recent/lint">Lint</a>
- tool.</li>
- <li>Fixed minor issues in the SDK Manager.</li>
- </ul>
- </dd>
-</dl>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 16.0.0</a> <em>(December 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Eclipse Helios (Version 3.6) or higher is required for ADT 16.0.0.</li>
- <li>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r16</a>.
- If you haven't already installed SDK Tools r16 into your SDK, use
- the Android SDK Manager to do so.</li>
- </ul>
- </dd>
-
- <dt>General improvements:</dt>
- <dd>
- <ul>
- <li>Added Lint tool to detect common errors in Android projects. (<a
-href="http://tools.android.com/recent/lint">more info</a>)</li>
- </ul>
- </dd>
-</dl>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 15.0.1</a> <em>(November 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
- <dt>Dependencies:</dt>
-
- <dd>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r15</a>.
- If you haven't already installed SDK Tools r15 into your SDK, use the Android SDK Manager to
- do so.</dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed how source files are attached to library project <code>.jar</code> files.</li>
- <li>Fixed how the <code>bin/</code> folder for library projects are refreshed. This ensures that parent projects pick up changes in library projects.</li>
- <li>Fixed how a parent project's library container is updated when a library project is recompiled. This ensures that parent projects are
- recompiled when code in a library project changes.</li>
- <li>Fixed how <code>res/</code> folders are checked in library projects. This ensures that all <code>res</code> folders are properly included
- even if Eclipse is not aware of them due to refresh issues.</li>
- <li>Fixed issue that prevented <code>aapt</code> from running when editing certain XML files.</li>
- <li>Fixed minor XML formatting issues.</li>
- </ul>
- </dd>
-</dl>
-
-</div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 15.0.0</a> <em>(October 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r15</a>.
- If you haven't already installed SDK Tools r15 into your SDK, use the Android SDK Manager to
- do so.</dd>
-
-<dt>Bug fixes:</dt>
-<dd>
-<ul>
- <li>Fixed build issue when using RenderScript in projects that target API levels 11-13
- (<a href="http://code.google.com/p/android/issues/detail?id=21006">Issue 21006</a>).</li>
- <li>Fixed issue when creating projects from existing source code.</li>
- <li>Fixed issues in the SDK Manager
- (<a href="http://code.google.com/p/android/issues/detail?id=20939">Issue 20939</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=20607">Issue 20607</a>).</li>
- <li>Fixed a scrolling issue in the new Logcat panel of DDMS.</li>
-</ul>
-</dd>
-</dl>
-
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 14.0.0</a> <em>(October 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with
- <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r14</a>.
- If you haven't already installed SDK Tools r14 into your SDK, use the Android SDK Manager to
- do so.</dd>
-
-<dt>Build system:</dt>
-<dd>
- <ul>
- <li>Changed <code>default.properties</code> to <code>project.properties</code> and
- <code>build.properties</code> to <code>ant.properties</code>. ADT automatically
- renames these files, if necessary, when you open a project in Eclipse.</li>
- <li>Changed how library projects are built in Eclipse.</a></li>
- <li>Changed output of <code>javac</code> from <code>bin/</code> to <code>bin/classes</code>
- in Eclipse.</li>
- <li>Improved incremental builds so that resource compilation runs less frequently. Builds no
- longer run when you edit strings or layouts (unless you add a new <code>id</code>) and no longer
- run once for each library project.</li>
- <li>Introduced a "PNG crunch cache" that only runs on modified PNG files, instead of
- crunching all existing PNG files, all the time.</li>
- <li>Modified resource compilation so it no longer happens for normal save operations. It only
- happens when running or debugging (the build option that lets you disable the packaging
- step, which was introduced in ADT 12, is now on by default.)</li>
- </ul>
-<p>For a complete overview of the build system changes and what you need to do to support them,
-see the <a href="http://tools.android.com/recent/buildchangesinrevision14">Android Tools Project
-site</a>.</p>
-</dd>
-
-<dt>General improvements:</dt>
-<dd>
- <ul>
-
-
-<li>Added a Welcome Wizard to help with the initial setup of the Android
-development environment (<a href="http://tools.android.com/recent/welcomewizard">more
-info</a>).</li>
-<li>Integrated the Android Asset Studio, which helps you create icons for things
-like the launcher, menus, and tabs. (<a
-href="http://tools.android.com/recent/assetstudiointegration">more
-info</a>).</li>
-<li>Revamped the Logcat view and added support to display and filter logs by
- application names as well as PIDs (<a
- href="http://tools.android.com/recent/updatedlogcatviewer">more info</a>).</li>
-<li>Revamped the SDK Manager UI (<a href="http://tools.android.com/recent/newsdkmanager">more
-info</a>).</li>
-<li>Revamped the New Project and the New XML File wizards to have
-multiple pages. Sample projects are now copied into the workspace such that they can be modified
-and deleted without affecting the master copy
-(<a href="http://tools.android.com/recent/revampedwizards">more info</a>).</li>
-<li>Removed the dependency on Eclipse GEF.</li>
-</ul>
-</dd>
-
-<dt>XML and Java editors:</dt>
-<dd>
- <ul>
- <li>Added a new XML formatter that formats all XML files according to the
- standard Android coding style. The formatter can also reorder
- attributes to follow a recommended order and processes any changes made in the Layout editor.
-(<a href="http://tools.android.com/recent/xmlformatter">more info</a>).</li>
- <li>Added the "Go to Matching" (Ctrl-Shift-P) feature, which lets you jump
-between opening and closing tags in XML files.</li>
- <li>Added support for the "Select Enclosing Element" feature on Mac.</li>
- <li>Added a Quickfix for extracting Strings when the caret is inside a String (<a href="">see
-more</a>).</li>
- <li>Improved "smart indent", which allows automatic indentation and un-indentation
- when pressing the Return key in XML editors (<a
-href="http://tools.android.com/recent/xmleditingimprovements">more info</a>).</li>
-
- </ul>
-</dd>
-
-<dt>Layout editor:</dt>
-<dd>
- <ul>
- <li>Added tooltip feedback for dragging and resizing operations. For
- example, when dragging in a relative layout, the proposed
- constraints are shown. When resizing, the new dimensions are
- shown (<a href="http://tools.android.com/recent/layouteditorfeedbacktooltips">more
-info</a>).</li>
- <li>Added the ability to suppress rendering fidelity warnings (<a
-href="http://tools.android.com/recent/suppressrenderwarnings">more info</a>).</li>
- <li>Added "Remove Container" visual refactoring that removes the
- children of a container up to the top level and transfers
- namespace and layout attributes if necessary (<a
-href="http://tools.android.com/recent/removecontainervisualrefactoring">more info</a>).</li>
- <li>Added pull-right menus to the context menu for accessing
- properties of the parents, which is useful when the children fully
- cover the parent and make it hard to select on their own.</li>
- <li>Improved access to properties in the context menu. The most
- frequently set attributes for each view are listed at the top of
- the menu. The Properties menu offers access to the most
- recently set attributes, attributes organized by their defining
- view, and layout attributes only or all attributes alphabetically (<a
-href="http://tools.android.com/recent/layouteditorcontextmenuimprovements">more info</a>).</li>
- </ul>
-</dd>
-
-<dt>Bug fixes:</dt>
-<dd>Fixed many bugs and added <a
-href="http://tools.android.com/recent/miscellaneousrecentfixes">minor improvements</a>, in
-particular some <a href="http://tools.android.com/recent/linuxfixes">critical bug fixes on
-Linux</a>.</dd>
-
-</div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 12.0.0</a> <em>(July 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with
-<a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a>. If you haven't
-already installed SDK Tools r12 into your SDK, use
-the Android SDK Manager to do so.</dd>
-
-<dt>Visual Layout Editor:</dt>
-<dd>
-<ul>
- <li>New RelativeLayout drop support with guideline suggestions for
- attachments and cycle prevention
- (<a href="http://tools.android.com/recent/revampedrelativelayoutsupport">more info</a>).</li>
- <li>Resize support in most layouts along with
- guideline snapping to the sizes dictated by <code>wrap_content</code> and <code>match_parent</code>.
- In LinearLayout, sizes are mapped to weights instead of pixel widths.
- (<a href="http://tools.android.com/recent/resizesupport">more info</a>).</li>
- <li>Previews of drawables and colors in the resource chooser dialogs
- (<a href="http://tools.android.com/recent/imageandcolorpreviews">more info</a>).</li>
- <li>Improved error messages and links for rendering errors including
- detection of misspelled class names
- (<a href="http://tools.android.com/recent/improvedrenderingerrordiagnostics">more info</a>).</li>
-</ul>
-</dd>
-
-<dt>Build system:</dt>
-<dd>
-<ul>
- <li id="build-option">A new option lets you disable the packaging step in the automatic
- builders. This improves performance when saving files by not
- performing a full build, which can take a long time for large projects.
- If the option is enabled, the APK is packaged when the
- application is deployed to a device or emulator or when the
- release APK is exported (<a href="http://tools.android.com/recent/finercontroloveradtbuildprocess">more info</a>).</li>
-</ul>
-</dd>
-
-<dt>Bug fixes:</dt>
-<dd>Many bug fixes are part of this release
-(<a href="http://tools.android.com/recent/adt12bugfixroundup">more info</a>).</dd>
-
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 11.0.0</a> <em>(June 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r11. If you haven't
-already installed SDK Tools r11 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>Visual Refactoring:</dt>
-<dd>
- <ul>
- <li>"Extract Style" feature pulls out style-related attributes from your layout and extracts
-them as a new style defined in {@code styles.xml} (<a
-href="http://tools.android.com/recent/extractstylerefactoring">more info</a>).</li>
- <li>"Wrap in Container" feature lets you select a group of views then surround them
- in a new layout (a new view group, such as a LinearLayout), and transfers namespace and layout
- parameters to the new parent (<a
-href="http://tools.android.com/recent/newrefactoringswrapinchangelayoutchangewidget">more
-info</a>).</li>
- <li>"Change Layout" feature changes layouts from one type
- to another, and can also flatten a layout hierarchy (<a
-href="http://tools.android.com/recent/newrefactoringswrapinchangelayoutchangewidget">more
-info</a>).</li>
- <li>"Change Widget Type" feature changes the type of the
- selected views to a new type. Also, a new selection context menu
- in the visual layout editor makes it easy to select siblings as
- well as views anywhere in the layout that have the same type (<a
-href="http://tools.android.com/recent/newrefactoringswrapinchangelayoutchangewidget">more
-info</a>).</li>
- <li>"Extract as Include" feature finds identical collections of views
- in other layouts and offers to combine them into a single layout that you can then include in
- each layout (<a
-href="http://tools.android.com/recent/extractasincludeimprovements">more info</a>).</li>
- <li>Quick Assistant in Eclipse can be invoked
- from the XML editor (with Ctrl-1) to apply any of the above
- refactorings (and Extract String) to the current selection (<a
-href="http://tools.android.com/recent/refactoringquickassistant">more info</a>).</li>
- </ul>
-</dd>
-
-<dt>Visual Layout Editor:</dt>
-<dd>
- <ul>
- <li>This is the update to the layout editor you've been waiting for! It includes (almost) all
-the goodies demonstrated at Google I/O. <a href="http://www.youtube.com/watch?v=Oq05KqjXTvs">Watch
-the video</a> on YouTube.</li>
- <li>The palette now supports different configurations for supported widgets. That is, a single
-view is presented in various different configurations that you can drag into your layout. For
-example, there is a <em>Text Fields</em> palette category where you can drag an {@link
-android.widget.EditText} widget in as a password field, an e-mail field, a phone field, or other
-types of text boxes. Similarly, {@link android.widget.TextView} widgets are preconfigured
-with large, normal and small theme sizes, and {@link android.widget.LinearLayout} elements are
-preconfigured in horizontal and vertical configurations (<a
-href="http://tools.android.com/recent/multipletextfieldandlayouttypes">more info</a>).</li>
- <li>The palette supports custom views. You can pick up any custom
- implementations of the View class you've created in your project or from included libraries and
-drag them into your layout (<a
-href="http://tools.android.com/recent/customviewsinthepalette">more info</a>).</li>
- <li>Fragments are available in the palette for placement in your layout. In the tool, you can
-choose which layout to show rendered for a given fragment tag. Go to declaration works for fragment
-classes (<a href="http://tools.android.com/recent/fragmentsupport">more info</a>).</li>
- <li>The layout editor automatically applies a "zoom to fit" for newly
- opened files as well as on device size and orientation changes to
- ensure that large layouts are always fully visible unless you
- manually zoom in.</li>
- <li>You can drop in an {@code <include>} element from the palette, which will pop up
- a layout chooser. When you select the layout to include, it is added with an {@code
-<include>}. Similarly, dropping images or image buttons will pop up image
- resource choosers (<a
-href="http://tools.android.com/recent/includetagdropsupport">more info</a>).</li>
- <li>The configuration chooser now applies the "Render Target" and
- "Locale" settings project wide, making it trivial to check the
- layouts for different languages or render targets without having
- to configure these individually for each layout.</li>
- <li>The layout editor is smarter about picking a default theme to
- render a layout with, consulting factors like theme registrations
- in the manifest, the SDK version, and other factors.</li>
- <li>The layout editor is smarter about picking a default configuration to render a layout
-with, defaulting to the currently visible configuration in the previous file. It also considers the
-SDK target to determine whether to default to a tablet or phone screen size.</li>
- <li>Basic focus support. The first text field dropped in a layout is assigned focus, and there
-are <strong>Request Focus</strong> and <strong>Clear Focus</strong> context menu items on text
-fields to change the focus.</li>
- </ul>
-</dd>
-
-<dt>XML editors:</dt>
-<dd>
-<ul>
- <li>Code completion has been significantly improved. It now works
- with {@code <style>} elements, completes dimensional units,
- sorts resource paths in values based on the attribute name, and more. There are also many fixes to
-handle text replacement (<a
-href="http://tools.android.com/recent/xmlcodecompletionimprovements">more info</a>).</li>
- <li>AAPT errors are handled better. They are now underlined for the
- relevant range in the editor, and a new quickfix makes it trivial
- to create missing resources.</li>
- <li>Code completion for drawable, animation and color XML files (<a
-href="http://tools.android.com/recent/codecompletionfordrawablescolorsandanimationfiles">more
-info</a>).</li>
-</ul>
-</dd>
-
-<dt>DDMS:</dt>
-<dd>
-<ul>
- <li>"New Folder" action in the File Explorer.</li>
- <li>The screenshot dialog will add timestamps to the filenames and preserve the orientation on
-snapshot refresh.</li>
-</ul>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>TraceView supports zooming with the mouse-wheel in the timeline.</li>
- <li>The New Android Project wizard now supports Eclipse working sets.</li>
- </ul>
-</dd>
-</dl>
-<p>More information about tool changes are available on the <a
-href="http://tools.android.com/recent">Android Tools Project Site</a>.</p>
-</div>
-</div>
-
-
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 10.0.1</a> <em>(March 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r10. If you haven't
-already installed SDK Tools r10 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>Temporary work-around to resolve the rare cases in which the layout editor will
-not open.</li>
- <li>Fixed an issue in which ADT 10.0.0 would install on Eclipse 3.4 and lower, even though ADT
-requires Eclipse 3.5 or higher (as of 10.0.0).</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 10.0.0</a> <em>(February 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r10. If you haven't
-already installed SDK Tools r10 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>The tools now automatically generate Java Programming Language source files (in the <code>gen/</code> directory) and
- bytecode (in the <code>res/raw/</code> directory) from your <code>.rs</code> files.</li>
- <li>A Binary XML editor has been added (<a href="http://tools.android.com/recent/binaryxmleditor">details</a>).</li>
- <li>Traceview is now integrated into the Eclipse UI (<a href="http://tools.android.com/recent/traceviewineclipse">details</a>).</li>
- <li>The "Go To Declaration" feature for XML and <code>.java</code> files quickly show all the matches in the project
- and allows you jump to specific items such as string translations or <code>onClick</code> handlers
- (<a href="http://tools.android.com/recent/gotodeclarationimprovements">details</a>).</li>
- <li>The Resource Chooser can create items such as dimensions, integers, ids, and booleans
- (<a href="http://tools.android.com/recent/resourcechoosercannowcreatearbitraryvalues">details</a>).</li>
- <li>Improvements to the Visual Layout Editor:
- <ul>
- <li>A new Palette with categories and rendering previews
- (<a href="http://tools.android.com/recent/newpalette">details</a>).</li>
- <li>A Layout Actions bar that provides quick access to common layout operations
- (<a href="http://tools.android.com/recent/layoutactionsbar">details</a>).</li>
- <li>When the Android 3.0 rendering library is selected, layouts render more like they do on devices.
- This includes rendering of status and title bars to more accurately reflect the actual
- screen space available to applications
- (<a href="http://tools.android.com/recent/systembarandactionbar">details</a>).</li>
- <li>Zoom improvements such as fit to view, persistent scale, and keyboard access.
- (<a href="http://tools.android.com/recent/zoomimprovements">details</a>).</li>
- <li>Further improvements to <code><merge></code> layouts, as well as layouts with gesture overlays
- (<a href="http://tools.android.com/recent/improvedsupportformergetags">details</a>).</li>
- <li>Improved rendering error diagnostics.</li>
- </ul>
- </li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 9.0.0</a> <em>(January 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r9. If you haven't
-already installed SDK Tools r9 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>"Go To Declaration" hyperlink support: You can jump directly from code references (such as
- <code>R.id.main</code>) to the corresponding XML declaration, or from XML attributes (such as
- <code>@string</code>) to the corresponding resource definition, or from manifest XML
- registrations to activities and services.</li>
- <li>Improvements were made to name refactoring.</li>
- <li>AVDs now automatically save their state, so they can restart almost instantly. You can enable this feature when
- creating an AVD or by editing an AVD with the AVD Manager.</li>
- <li>Improvements to the Visual Layout Editor:
- <ul>
- <li>Support for rendering targets: You can now choose an arbitrary Android platform to
- render the current page, regardless of the project's minimum platform. This makes it
- easy to verify the layout and appearance of your activity on different versions of
- the platform.
- </li>
- <li>Improved support for empty and nested layouts: Dragging items over nested and
- invisible layouts automatically enlarges and highlights these layouts, so that they
- can receive drops.
- </li>
- <li>XML formatting improvements: The editor generates cleaner XML and you can now enable
- XML auto-formatting in the <strong>Preferences</strong> menu.</li>
- <li>Improved Outline labels: The Outline tab now displays additional information about each
- View. Textual Views display a snippet of the actual text. Views with a source
- (such as ImageView) displays the resource name. Included Views display the name of the View.
- </li>
- <li>When you right click a View in the Layout Editor,
- the context menu now contains <strong>Edit ID...</strong> and <strong>Edit Text...</strong>
- items. The <strong>Properties...</strong> context menus now list all of the properties and
- provide a way to edit them
- (<a href="http://tools.android.com/recent/editidtextandotherpropertiesviamenu">Details</a>).
- </li>
- <li>The layout editor now properly handles
- <a href="{@docRoot}guide/topics/resources/layout-resource.html#include-element"><code><include></code></a>
- and <a href="{@docRoot}guide/topics/resources/layout-resource.html#merge-element"><code><merge></code></a>
- tags (<a href="http://tools.android.com/recent/supportforincludeandmerge">Details</a>).</li>
- <li>"Extract as Include" refactoring: The Layout Editor has a new refactoring that allows
- you to select one or more views in a layout, and extract it into a separate layout
- (<a href="http://tools.android.com/recent/extractasincluderefactoring">Details</a>).</li>
- <li>Improved diagnostics for class loading and rendering errors: Class loading and rendering
- error messages are more useful and provide better information about the root cause of the
- error.</li>
- <li>Improved error handling to prevent drag and reordering operations from adding children
- into an {@link android.widget.AdapterView}.</li>
- <li>Outline reordering: Reordering your views in the Outline tab is much easier
- (<a href="http://tools.android.com/recent/outlineimprovements">Details</a>).</li>
- <li>Fix for keybinding bug where keyboard shortcuts did not work (Issues
- <a href="http://code.google.com/p/android/issues/detail?id=13231">13231</a> and
- <a href="http://code.google.com/p/android/issues/detail?id=13134">13134</a>).</li>
- <li>Fix for problems with Custom layout attribute menu (Issue
- <a href="http://code.google.com/p/android/issues/detail?id=13134">13134</a>).</li>
- <li>Automatic configuration for various view types: Certain views have properties configured
- by default. For example, the width of an {@link android.widget.EditText} object is set to
- <code>match_parent</code> when added to a vertical {@link android.widget.LinearLayout}
- or a default image is added to an {@link android.widget.ImageButton}.</li>
- <li>Previews during dragging: Dragging from the palette or dragging within the layout editor
- now shows live previews of the dragged item.</li>
- <li>Navigation improvements: In the Layout Editor, double-clicking Views jumps to the
- corresponding XML element. In the Outline view, double-clicking opens the Properties view.</li>
- <li>The editor has Honeycomb style animation preview support.</li>
- <li>Improved rendering support for various Views (such as TabHosts and SlidingDrawers) in
- Honeycomb (Issues <a href="http://code.google.com/p/android/issues/detail?id=3162">3162</a>
- and <a href="http://code.google.com/p/android/issues/detail?id=13092">13092</a>).</li>
- <li>Included layouts can be rendered and edited in the context of the layouts that include
- them. From a layout using an <a href="{@docRoot}guide/topics/resources/layout-resource.html#include-element">
- <code><include></code></a> tag, double-clicking on the
- <a href="{@docRoot}guide/topics/resources/layout-resource.html#include-element">
- <code><include></code></a> element edits the referenced layout in the context of the
- current layout. Additionally, when editing a layout that is included by other layouts,
- you can quickly change between context layouts, by right clicking in the editor and choosing
- <strong>Show included in...</strong>. This feature is only available in Honeycomb.</li>
- </ul>
- </li>
- <li>This release fixes many other bugs, but the most important ones are listed below:
- <ul>
- <li>Fixed issue that prevented launching debug builds on productions devices when
- <code>debuggable=true</code> was not set in the Android manifest.</li>
- <li>The LogCat view in DDMS properly handles UTF-8 characters.</li>
- <li>The SDK Manager is more reliable on Windows
- (<a href="http://tools.android.com/recent/sdkmanagerfixes">Details</a>).</li>
- <li>A JUnit initialization bug that prevented you from working with JUnit tests was fixed
- (Issue <a href="http://code.google.com/p/android/issues/detail?id=12411">12411</a>).</li>
- </ul>
-</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 8.0.1</a> <em>(December 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<p>This version of ADT is designed for use with SDK Tools r8. If you haven't
-already installed SDK Tools r8 into your SDK, use the Android SDK Manager to do
-so.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
- <li>This is a quick follow-up to ADT 8.0.0 to fix some bugs.</li>
- <li>Fixes an issue in which projects failed to compile, citing a dex error.</li>
- <li>Better ProGuard error reporting when exporting applications for release.</li>
-</ul>
-<p>Also see the recent release notes for 8.0.0, below.</p>
-</dd>
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 8.0.0</a> <em>(December 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<p>This version of ADT is designed for use with SDK Tools r8. If you haven't
-already installed SDK Tools r8 into your SDK, use the Android SDK Manager to do
-so.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
- <li>New version number scheme that follows the SDK Tools revision number. The major version
-number for your ADT plugin should now always match the revision number of your SDK Tools. For
-example, ADT 8.x is for SDK Tools r8.</li>
- <li>Support for true debug build. You no longer need to change the value of the
- <code>debuggable</code> attribute in the Android Manifest.
- <p>Incremental builds automatically insert <code>debuggable="true"</code>, but if you perform
- "export signed/unsigned application package", ADT does <em>not</em> insert it.
- If you manually set <code>debuggable="true"</code> in the manifest file, then release builds will
- actually create a debug build (it does not remove it if you placed it there).</p></li>
- <li>Automatic <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> support in
- release builds. For it to work, you need to have a <code>proguard.config</code>
- property in the <code>default.properties</code> file that points to a ProGuard config file.</li>
- <li>Completely rewritten Visual Layout Editor. (This is still a work in progress.) Now includes:
- <ul>
- <li>Full drag and drop from palette to layout for all Layout classes.</li>
- <li>Move widgets inside a Layout view, from one Layout view to another and from one layout file to another.</li>
- <li>Contextual menu with enum/flag type properties.</li>
- <li>New zoom controls.</li>
- </ul></li>
- <li>New HierarchyViewer plugin for Eclipse.</li>
- <li>Android launch configurations no longer recompile the whole workspace on launch.</li>
- <li>The location of <code>android.jar</code> source and javadoc can now be configured.</li>
-</ul>
-</dd>
-</dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 0.9.9</a> <em>(September 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd><p>ADT 0.9.9 replaces ADT 0.9.8 and is designed for use with SDK Tools r7
-and later. ADT 0.9.9 includes the ADT 0.9.8 features as well as an important
-bugfix, so we recommend that you upgrade as soon as possible. If you haven't
-already installed SDK Tools r7 into your SDK, use the Android SDK Manager to do
-so.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Fixes a problem in project import, in which source files were deleted in some cases.</li>
-<li>Includes all other ADT 0.9.8 features (see below).</li>
-</ul>
-</dd>
-</dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 0.9.8</a> <em>(September 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-</ul>
-</dd>
-
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd><p>ADT 0.9.8 is now deprecated. Please use ADT 0.9.9 instead.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Adds a new Action, "Rename Application Package", to the Android Tools
-contextual menu. The Action does a full application package refactoring.
-<li>Adds support for library projects that don't have a source folder
-called <code>src/</code>. There is now support for any number of source folders,
-with no name restriction. They can even be in subfolder such as
-<code>src/java</code>. If you are already working with library projects created
-in ADT 0.9.7, see <a
-href="{@docRoot}tools/projects/index.html#libraryMigrating">Migrating
-library projects to ADT 0.9.8</a> for important information about moving
-to the new ADT environment.</li>
-<li>Adds support for library projects that depend on other library
-projects.</li>
-<li>Adds support for additional resource qualifiers:
-<code>car</code>/<code>desk</code>, <code>night</code>/<code>notnight</code> and
-<code>navexposed</code>/<code>navhidden</code>.</li>
-<li>Adds more device screen types in the layout editor. All screen
-resolution/density combinations listed in the <a
-href="{@docRoot}guide/practices/screens_support.html#range">Supporting
-Multiple Screens</a> are now available.</li>
-<li>Fixes problems with handling of library project names that
-contain characters that are incompatible with the Eclipse path variable.
-Now it properly sets up the link between the main project and the library
-project.</li>
-</ul>
-</dd>
-</dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 0.9.7</a> <em>(May 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Library projects:</dt>
-<dd>
-<p>The ADT Plugin now supports the use of <em>library projects</em> during
-development, a capability that lets you store shared Android application
-code and resources in a separate development project. You can then reference the
-library project from other Android projects and, at build time, the tools
-compile the shared code and resources as part of the dependent applications.
-More information about this feature is available in the <a
-href="{@docRoot}tools/projects/index.html#LibraryProjects">Creating and Managing Projects</a> document. </p>
-<p>If you are not developing in Eclipse, <a
-href="tools-notes.html">SDK Tools r6</a> provides the equivalent library
-project support through the Ant build system.</p>
-</dd>
-</dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 0.9.6</a> <em>(March 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-
-<dd><p>This version of ADT is designed for use with SDK Tools r5 and later. Before
-updating to ADT 0.9.6, we highly recommend that you use the Android SDK Manager to install SDK
-Tools r5 into your SDK.</p></dd>
-
-<dt>General Notes:</dt>
-<dd>
-<ul>
-<li>Editing <code>default.properties</code> outside of Eclipse will now
-automatically update the project.</li>
-<li>Loads the SDK content only when a project requires it. This will make
-Eclipse use less resources when the SDK contains many versions of Android.</li>
-<li>Resolves potential deadlock between modal dialogs, when launching ADT the
-first time with the SDK Usage panel.</li>
-<li>Fixes issues with the New Project Wizard when selecting samples.</li>
-</ul>
-</dd>
-<dt>AVD/SDK Manager:</dt>
-<dd>
-<ul>
-<li>Adds support for platform samples packages.</li>
-<li>Improves support for dependency between packages.</li>
-<li>AVDs now sorted by API level.</li>
-<li>The AVD creation dialog now enforces a minimum SD card size of 9MB.</li>
-<li>Prevents deletion of running AVDs.</li>
-</ul>
-</dd>
-<dt>DDMS:</dt>
-<dd>
-<ul>
-<li>DDMS plug-in now contains the Allocation Tracker view.</li>
-<li>New action in the Logcat view: "Go to problem" lets you go directly from an
-exception trace output to the code.</li>
-</ul>
-</dd>
-<dt>Editors:</dt>
-<dd>
-<ul>
-<li>Explode mode in the Visual Layout Editor adds a margin to all layout objects
-so that it's easier to see embedded or empty layouts.</li>
-<li>Outline mode in the Visual Layout Editor draws layout outline to make it
-easier to see layout objects.</li>
-<li>Several fixes in the configuration selector of the Visual Layout
-Editor.</li>
-</ul>
-</dd>
-<dt>Application launching:</dt>
-<dd>
-<ul>
-<li>Applications launched from ADT now behave as if they were clicked from the
-Home screen.</li>
-<li>Fixes an issue where add-ons without an optional library would not show up as valid
-targets for application launches.</li>
-<li>Resolves a possible crash when launching applications.</li>
-</ul>
-</dd>
-</dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 0.9.5</a> <em>(December 2009)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-
-<dd><p>This version of ADT requires features provided in SDK Tools r4 or higher. If you install
-ADT 0.9.5, which is highly recommended, you should use the Android SDK
-Manager to download the latest SDK Tools into your SDK. For more information,
-see <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>The AVD Launch dialog now allows you to set the scale value.</li>
-<li>Fixes a potential NullPointerException in the SDK Manager when you launch an AVD that does not
- have a skin name specified.</li>
-<li>Fixes an XML validation issue in older Java versions.</li>
-<li>.apk packaging now properly ignores vi swap files as well as hidden files.</li>
-</ul>
-</dd>
-</dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>ADT 0.9.4</a> <em>(October 2009)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-
-<dd><p>This version of ADT requires features provided in SDK Tools r3 or higher. If you install
-ADT 0.9.4, which is highly recommended, you should use the Android SDK
-Manager to download the latest SDK Tools into your SDK. For more information,
-see <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>.</p>
-</dd>
-
-<dt>Project Creation Wizard:</dt>
-<dd>
-<ul>
-<li>New option to create a project from a sample by choosing it from a list.</li>
-</ul>
-</dd>
-
-<dt>Layout Editor:</dt>
-<dd>
-<ul>
-<li>Improved Configuration selector that lets you see how your layout will
-render on different devices. Default device descriptions include ADP1
-and Google Ion, while SDK add-ons can also provide new descriptions.
-A new UI allows you to create custom descriptions.</li>
-<li>Adds a new clipping toggle, to let you see your full layout even if it's
-bigger than the screen.</li>
-</ul>
-</dd>
-
-<dt>DDMS integration:</dt>
-<dd>
-<ul>
-<li>Includes the improvements from the standalone DDMS, revision 3.</li>
-<li>Adds an option to open HPROF files into eclipse instead of writing them on
-disk. If a profiler such as MAT (<a href="http://eclipse.org/mat">Memory Analyzer
-Tool</a>) is installed, it'll open the file.</li>
-</ul>
-</dd>
-
-<dt>Android SDK and AVD Manager integration:</dt>
-<dd>
-<ul>
-<li>Includes the improvements from the standalone Android SDK and AVD Manager,
-revision 3.</li>
-</ul>
-</dd>
-</dl>
- </div>
-</div>
diff --git a/docs/html/tools/sdk/ndk/1.5_r1/index.jd b/docs/html/tools/sdk/ndk/1.5_r1/index.jd
deleted file mode 100644
index 2f6764b..0000000
--- a/docs/html/tools/sdk/ndk/1.5_r1/index.jd
+++ /dev/null
@@ -1,7 +0,0 @@
-page.title=Android 1.5 NDK, Release 1
-sdk.redirect=true
-sdk.redirect.path=ndk/index.html
-excludeFromSuggestions=true
-
-@jd:body
-
diff --git a/docs/html/tools/sdk/ndk/1.6_r1/index.jd b/docs/html/tools/sdk/ndk/1.6_r1/index.jd
deleted file mode 100644
index 1dc5b6f..0000000
--- a/docs/html/tools/sdk/ndk/1.6_r1/index.jd
+++ /dev/null
@@ -1,6 +0,0 @@
-page.title=Android 1.6 NDK, Release 1
-sdk.redirect=true
-sdk.redirect.path=ndk/index.html
-excludeFromSuggestions=true
-
-@jd:body
diff --git a/docs/html/tools/sdk/ndk/index.jd b/docs/html/tools/sdk/ndk/index.jd
deleted file mode 100644
index 90116d4..0000000
--- a/docs/html/tools/sdk/ndk/index.jd
+++ /dev/null
@@ -1,21 +0,0 @@
-page.title=Android NDK
-@jd:body
-
-
-
- <p>The NDK is a toolset that allows you to implement parts
- of your app using native-code languages such as C and C++. Typically, good use cases for the NDK
- are CPU-intensive applications such as game engines, signal processing, and physics simulation.
- </p>
-
- <p>Before downloading the NDK, you should understand that <strong>the NDK
- will not benefit most apps</strong>. As a developer, you need to balance its benefits
- against its drawbacks. Notably, using native code on Android
- generally does not result in a noticable performance improvement,
- but it always increases your app complexity. In general, you should only use the NDK
- if it is essential to your app—never because you simply prefer to program in C/C++.
- When examining whether or not you should develop in native code, think about your requirements and
- see if the Android framework APIs provide the functionality that you need.</p>
-
- <a class="dac-hero-cta" href="{@docRoot}ndk/index.html">
- <span class="dac-sprite dac-auto-chevron"></span> NDK Documentation and Downloads</a>
diff --git a/docs/html/tools/sdk/preview/features.jd b/docs/html/tools/sdk/preview/features.jd
deleted file mode 100644
index 2bdb0f4..0000000
--- a/docs/html/tools/sdk/preview/features.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
- document.location=toRoot+"about/versions/android-3.0.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to the
-<a href="{@docRoot}about/versions/android-3.0.html">Android 3.0 Platform</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/preview/index.jd b/docs/html/tools/sdk/preview/index.jd
deleted file mode 100644
index 713730e..0000000
--- a/docs/html/tools/sdk/preview/index.jd
+++ /dev/null
@@ -1,4 +0,0 @@
-sdk.redirect=true
-page.template=sdk
-excludeFromSuggestions=true
-@jd:body
diff --git a/docs/html/tools/sdk/preview/installing.jd b/docs/html/tools/sdk/preview/installing.jd
deleted file mode 100644
index d248b67..0000000
--- a/docs/html/tools/sdk/preview/installing.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
- document.location=toRoot+"sdk/installing/index.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to
-<a href="{@docRoot}sdk/installing/index.html">Installing the SDK</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/preview/requirements.jd b/docs/html/tools/sdk/preview/requirements.jd
deleted file mode 100644
index b62ee05..0000000
--- a/docs/html/tools/sdk/preview/requirements.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
- document.location=toRoot+"sdk/requirements.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to the
-<a href="{@docRoot}sdk/requirements.html">SDK System Requirements</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/preview/upgrading.jd b/docs/html/tools/sdk/preview/upgrading.jd
deleted file mode 100644
index 3b90696..0000000
--- a/docs/html/tools/sdk/preview/upgrading.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
- document.location=toRoot+"sdk/index.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to
-<a href="{@docRoot}sdk/index.html">the Android SDK</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
deleted file mode 100644
index 1ff2391..0000000
--- a/docs/html/tools/sdk/tools-notes.jd
+++ /dev/null
@@ -1,2320 +0,0 @@
-page.title=SDK Tools Release Notes
-excludeFromSuggestions=true
-@jd:body
-
-<p>SDK Tools is a downloadable component for the Android SDK. It includes the
-complete set of development and debugging tools for the Android SDK. It is included
-with <a href="{@docRoot}tools/studio/index.html">Android Studio</a>.</p>
-
-<p>If you are already using the SDK and you want to update to the latest version
-of the SDK Tools, use the <a
-href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to get the
-update.</p>
-
-
-<h2 id="notes">Revisions</h2>
-
-<p>The sections below provide notes about successive releases of
-the SDK Tools, as denoted by revision number. To determine what revision of the SDK
-Tools you are using, refer to the "Installed Packages" listing in the Android SDK Manager. </p>
-
-<p>
- For a summary of all known issues in SDK Tools, visit <a class=
- "external-link" href="http://tools.android.com/knownissues">the Android Tools
- Project Site</a>.
-</p>
-
-<div class="toggle-content opened">
- <p>
- <a href="#" onclick="return toggleContent(this)"><img src=
- "{@docRoot}assets/images/styles/disclosure_up.png" class=
- "toggle-content-img" alt="">SDK Tools, Revision 25.0.0</a>
- <em>(April 2016)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
- <dt>
- <strong>Android Emulator 2.0</strong>:
- </dt>
-
- <dd>
- <ul>
- <li>Performance improvements:
- </li>
- <ul>
- <li>Emulator now uses CPU acceleration on x86 emulator system images by
- default.
- </li>
-
- <li>Added <a href="{@docRoot}training/articles/smp.html">SMP</a> support
- to take advantage of host multi-core architecture when emulating Android
- 6.0 (API level 23) or higher, resulting in much better performance and
- speed than the physical counterpart. Also with SMP support, you can test
- apps that specifically target multi-core Android devices.
- </li>
-
- <li>Improved data and APK push-pull protocol between the the <a href=
- "{@docRoot}tools/help/adb.html">Android Debug Bridge</a> and devices
- running Android 5.0 (API level 21) or higher. See speed improvements up
- to five times faster than using a physical device.
- </li>
- </ul>
-
- <li>Extended UI controls and a floating toolbar provide easy access to features
- previously available only through the command line, such as taking screen
- captures, adjusting the battery level, rotating the screen, and managing
- virtual calls.
- </li>
-
- <li>Upload KML and GPX files to play back a set of custom location points.
- </li>
-
- <li>Dynamically resize the emulator by dragging a corner or zoom into the
- emulator window.
- </li>
-
- <li>Install APKs or add media files to the emulator’s internal SD card by
- dragging and dropping files into the emulator window.
- </li>
-
- <li>Simulate multi-touch input. While interacting with the emulator screen,
- enter multi-touch mode by holding down the <strong>Ctrl</strong> key on
- Windown/Linux, or <strong>Command</strong> key on Mac OSX.
- </li>
-
- <li>The Android Emulator works best with Android Studio 2.0. To find out more
- about what's included in the newest version of the official Android IDE,
- <a href="{@docRoot}tools/revisions/studio.html#Revisions">read the release
- notes</a>.
- </li>
-
- <li>Read the documentation to find out more about <a href=
- "{@docRoot}tools/devices/emulator.html">using the Android Emulator</a>.
- </li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p>
- <a href="#" onclick="return toggleContent(this)"><img src=
- "{@docRoot}assets/images/styles/disclosure_down.png" class=
- "toggle-content-img" alt="">SDK Platform-tools, Revision 23.1.0</a>
- <em>(December 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
- <dt>
- General Notes:
- </dt>
-
- <dd>
- <ul>
- <li>Changed Linux requirements for Android SDK Platform-tools
- revision 23.1.0 and later: it now requires 64-bit Linux.
- </li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.4.1</a> <em>(October 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 23 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed a problem where the emulator title bar was hidden off screen.
- (<a href="http://code.google.com/p/android/issues/detail?id=178344">Issue 178344</a>)</li>
- <li>Enabled the emulator to resize the user data partition by including e2fsprogs binaries.
- (<a href="http://code.google.com/p/android/issues/detail?id=189030">Issue 189030</a>)</li>
- <li>Fixed a regression on the 32-bit Windows OS where the emulator fails to boot Android 6.0
- (API level 23) through Android 5.0 (API level 21) system images.
- (<a href="http://code.google.com/p/android/issues/detail?id=188326">Issue 188326</a>)</li>
- </ul>
- </dd>
-
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.4.0</a> <em>(October 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 23 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Updated the emulator so it can display an upgrade notification when a new version is
- available.</li>
- <li>Added the ability for the emulator to send basic crash reports. You <em>must</em> opt-in
- through Android Studio preferences to enable crash report transmission.</li>
- </ul>
- </dd>
-
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.3.4</a> <em>(August 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 23 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added support for Android 6.0 (API level 23) platform.</li>
- </ul>
- </dd>
-
- <dt>Emulator:</dt>
- <dd>
- <ul>
- <li>Improved emulator performance on multi-core Windows desktops.
- (<a href="http://b.android.com/101040">Issue 101040</a>)</li>
- <li>Added support for GPU emulation on Windows and Linux platforms using the
- {@code -gpu mesa} command line option.</li>
- <li>Enabled support for running emulators with GPU emulation through remote desktop
- services, including Chrome Remote Desktop, Windows Terminal Services, and NoMachine.</li>
- <li>Added support for emulators with 280 dpi and 360 dpi screen resolutions.</li>
- <li>Improved support for GLES 2.0 extensions.</li>
- <li>Fixed several issues with GPU emulation support.</li>
- <li>Added support for setting the storage size on emulators using Android 4.4 (API level 19)
- and higher.
- (<a href="http://b.android.com/75141">Issue 75141</a>)</li>
- <li>Fixed problem with sending long SMS messages between emulators.
- (<a href="http://b.android.com/3539">Issue 3539</a>)</li>
- <li>Fixed issue with emulator getting incorrect time from location objects.
- (<a href="http://b.android.com/27272">Issue 27272</a>)</li>
- <li>Added handling for unusual characters in paths and file names when starting emulators.
- (<a href="http://b.android.com/35889">Issue 35889</a>)</li>
- </ul>
- </dd>
-
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.3.3</a> <em>(June 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issues with using Ant build tasks with the Eclipse ADT build structure. </li>
- <li>Fixed the emulator boot problem on Mac OS X 10.8.5.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.3.2</a> <em>(June 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issues with the ARM 64-bit emulator.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.3.1</a> <em>(June 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issue with the <code>root/</code> and <code>lib/</code> folders. </li>
- </ul>
- <p class="caution"><strong>Caution:</strong> This release is known to contain issues which
- prevent builds from completing. We strongly recommend that you update to SDK Tools 24.3.2
- as soon as possible. </p>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.3.0</a> <em>(June 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed several minor emulator issues.</li>
- </ul>
- <p class="caution"><strong>Caution:</strong> This release is known to contain issues which
- prevent builds from completing. We strongly recommend that you update to SDK Tools 24.3.2
- as soon as possible. </p>
- </dd>
- </div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.2.0</a> <em>(May 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed several minor emulator issues.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.1.2</a> <em>(February 2015)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed boot failures of MIPS system images on Mac OS X.</li>
- <li>Fixed AVD screen capture issues when using GPU emulation.</li>
- <li>Fixed memory leaks in emulator system.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.0.2</a> <em>(December 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issue with creating projects and activities from templates using Eclipse ADT.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.0.1</a> <em>(December 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed Java detection issue on 32-bit Windows systems.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 24.0.0</a> <em>(December 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added support for Android Studio 1.0 and emulator enhancements.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 23.0.5</a> <em>(October 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 23.0.4 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.4.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed Windows 32-bit compilation issue.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 23.0.4</a> <em>(October 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 23.0.4 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.4.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed duplicate devices in AVD for Wear and TV.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 23.0.2</a> <em>(July 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 23.0.2 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.2.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added ProGuard <code>.bat</code> files that were missing.</li>
- <li>Added the <code>proguard-android.txt</code> file that was missing.</li>
- <li>Renamed the <code>lombok-ast-0.2.2.jar</code> file to <code>lombok-ast.jar</code>,
- which should allow running lint from the command line.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 23.0.0</a> <em>(June 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 23.0.0 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added the Android Wear tools and system images.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.6.4</a> <em>(June 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 18 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.6.3 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.3.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed an issue with the x86 emulator that caused Google Maps to crash.
- (<a href="http://b.android.com/69385">Issue 69385</a>)</li>
- <li>Fixed minor OpenGL issues.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.6.3</a> <em>(April 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 18 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.6.3 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.3.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed a problem where the AVD manager allowed creating Android Wear virtual devices
- with a target API Level lower than 19.</li>
- <li>Fixed the description of Android Wear system images in the SDK Manager.</li>
- </ul>
- </dd>
-
- <dt>Known Issues:</dt>
- <dd>
- <p>When you create an Android Wear virtual device in the AVD manager, a target API Level
- lower than 19 may be selected by default. Make sure you select the target API Level 19
- when creating Android Wear virtual devices.</p>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.6.2</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 18 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.6.2 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.2.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed a problem where the SDK Manager threw a <code>NullPointerException</code> after
- removing a virtual device that was created using the Android Wear
- system image. (<a href="http://b.android.com/67588">Issue 67588</a>)</li>
- <li>Fixed a problem with Nexus 5 Android virtual devices created from the command line
- where the SD card file system was read-only.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.6.1</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 18 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.6.1 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.1.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed a problem where the Android Virtual Device Manager could not create new virtual
- devices. (<a href="http://b.android.com/66661">Issue 66661</a>)</li>
- <li><p>Fixed a problem with virtual devices created using ADT 22.3 or earlier.</p>
- <p>If you created an Android Virtual Device using ADT 22.3 or earlier, the
- AVD may be listed as <em>broken</em> in the AVD Manager in 22.6.1. To fix
- this problem, select the virtual device on the AVD Manager and click
- <strong>Repair</strong>.</p>
- </li>
- <li>Fixed a problem with the command line tools when creating virtual devices.
- (<a href="http://b.android.com/66740">Issue 66740</a>)</li>
- <li>Fixed a problem with the command line <code>lint</code> script.</li>
- </ul>
- </dd>
-
- <dt>Known Issues:</dt>
- <dd>
- <p>When you create an Android virtual device using the Nexus 5 device definition,
- you must enable the <em>Use Host GPU</em> option, otherwise the virtual device
- will not start.</p>
- </dd>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.6</a> <em>(March 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 18 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.6.0 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li><p>The command line <code>lint</code> script (<code>tools\lint.bat</code> on
- Windows platforms, <code>tools/lint</code> on other platforms) and the
- <code>lint</code> target on <code>ant</code> builds fail with the following
- error:</p>
- <p><code>Exception in thread "main" java.lang.NoClassDefFoundError:
- lombok/ast/AstVisitor</code></p>
- <p>As a temporary workaround, rename the file
- <code>tools\lib\lombok-ast-0.2.2.jar</code> to
- <code>tools\lib\lombok-ast.jar</code>.
- We will release an updated version of the tools with a fix for
- this issue as soon as possible.</p>
- </li>
- <li>Added support for Java 7 language features like multi-catch, try-with-resources,
- and the diamond operator. These features require version 19 or higher
- of the Build Tools. Try-with-resources requires <code>minSdkVersion</code>
- 19; the rest of the new language features require
- <code>minSdkVersion</code> 8 or higher.</li>
- <li>Added new lint checks:
- <ul>
- <li>Security:
- <ul>
- <li>Look for code potentially affected by a <code>SecureRandom</code>
- vulnerability.</li>
- <li>Check that calls to <code>checkPermission</code> use the return value.</li>
- </ul>
- </li>
- <li>Check that production builds do not use mock location providers.</li>
- <li>Look for manifest values that are overwritten by values from Gradle build
- scripts.</li>
- </ul>
- </li>
- <li>Fixed a number of minor issues in the SDK and build system.</li>
- <li>Emulator:
- <ul>
- <li>Fixed a problem with the emulator shutting down immediately for Android 1.5
- on the Nexus One and Nexus S devices.
- (<a href="http://b.android.com/64945">Issue 64945</a>)</li>
- <li>Fixed a problem with port numbers longer than four digits.
- (<a href="http://b.android.com/60024">Issue 60024</a>)</li>
- <li>Fixed battery errors for the Nexus One and Nexus S devices.
- (<a href="http://b.android.com/39959">Issue 39959</a>)</li>
- <li>Fixed a problem with paths or arguments that contain
- spaces on Windows platforms.
- (<a href="http://b.android.com/18317">Issue 18317</a>)</li>
- <li>Fixed a problem with long path values on Windows platforms.
- (<a href="http://b.android.com/33336">Issue 33336</a>)</li>
- <li>Fixed a problem with the {@code -snapshot-list} command line
- option on 64-bit systems.
- (<a href="http://b.android.com/34233">Issue 34233</a>)</li>
- </ul>
- </li>
- <li>Fixed an issue with RenderScript support. Using RenderScript support mode
- now requires version 19.0.3 of the Build Tools.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.3</a> <em>(October 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 18 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.3.0 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.3.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Added support for Android 4.4 (API level 19).</li>
- <li>Fixed a number of minor bugs in the SDK and build system.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.2.1</a> <em>(September 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.2.1 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.2.1.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed problem with templates that causes the new project wizard to hang.
- (<a href="http://b.android.com/60149">Issue 60149</a>)</li>
- <li>Fixed crash when using the lint command line tool because of mis-matched library
- dependency. (<a href="http://b.android.com/60190">Issue 60190</a>)</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.2</a> <em>(September 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.2 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.2.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Updated build tools to allow use of RenderScript on older versions of Android
- using new features in the
- <a href="{@docRoot}tools/support-library/features.html#v8">Support Library</a>.</li>
- <li>Moved the Systrace tool to the {@code <sdk>/platform-tools/} directory. </li>
- <li>Modified <a href="{@docRoot}tools/help/gltracer.html">Tracer for OpenGL ES</a> to
- support OpenGL ES 3.0.</li>
- <li>Lint
- <ul>
- <li>Fixed problem with lint not detecting custom namespaces.
- (<a href="http://b.android.com/55673">Issue 55673</a>)</li>
- <li>Fixed problem with the XML report including invalid characters.
- (<a href="http://b.android.com/56205">Issue 56205</a>)</li>
- <li>Fixed command-line execution of lint to work in headless mode to support execution
- by build servers. (<a href="http://b.android.com/55820">Issue 55820</a>)</li>
- </ul>
- </li>
- <li>Improved support for path names with spaces in the Windows command-line tools.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.0.5</a> <em>(July 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with the
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>, note that this version of
- SDK Tools is designed for use with ADT 22.0.5 and later. If you haven't already, update
- ADT to 22.0.5.</li>
- <li>If you are using <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
- note that this version of the SDK Tools is designed to work with Android Studio
- 0.2.x and later.</li>
- <li>If you are developing without an integrated development environment (IDE), you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed RenderScript compilation issue for Windows platforms with ant.</li>
- <li>Updated <a href="{@docRoot}tools/help/systrace.html">Systrace</a> to work with the
- Android 4.3 platform image.</li>
- <li>Fixed packaging of RenderScript compiler.</li>
- <li>Build tools 18.0.0 is obsolete and 18.0.1 should be used instead.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.0.4</a> <em>(July 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with the
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>, note that this version of
- SDK Tools is designed for use with ADT 22.0.4 and later. If you haven't already, update
- ADT to 22.0.4.</li>
- <li>If you are using <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
- note that this version of the SDK Tools is designed to work with Android Studio
- 0.2.x and later.</li>
- <li>If you are developing without an integrated development environment (IDE), you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed problem with compiling RenderScript code.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22.0.1</a> <em>(May 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.0.1 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.0.1.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed issue with Lint ServiceCast check and fully qualified class names.
- (<a href="http://code.google.com/p/android/issues/detail?id=55403">Issue 55403</a>)</li>
- <li>Fixed crash issue with Lint ArraySizeDetector check.
- (<a href="http://code.google.com/p/android/issues/detail?id=54887">Issue 54887</a>)</li>
- <li>Fixed a problem with the monkeyrunner tool failing to import standard python classes.
- (<a href="http://code.google.com/p/android/issues/detail?id=55632">Issue 55632</a>)</li>
- <li>Fixed a problem with DDMS monitor not opening heap and network statistics views due to
- a class not found exception.
- (<a href="http://code.google.com/p/android/issues/detail?id=55394">Issue 55394</a>)</li>
- </ul>
-
- </dd>
- </dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 22</a> <em>(May 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 22.0.0 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.0.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Changed the structure of the SDK by adding a new build tool SDK Component, which is
- based on the existing platform-tools component. This change decouples the build tools
- versions from the IDE versions, allowing updates to the tools without requiring an
- IDE update.</li>
- <li>Updated tools to allow libraries to share the same package name as the applications
- that use them.</li>
- <li>Updated {@code draw9patch} tool to allow easier changing of markers.</li>
- <li>Added new Lint checks, including checks for layout consistency,
- {@link android.widget.RelativeLayout} siblings, {@link android.os.Parcel} creator,
- JavaScript interfaces, {@link android.app.Service} casting, quantity strings, manifest
- typos, orientation tags in layouts, overlapping names for 9-patches and images, and class
- existence checks.</li>
- <li>Updated build tools to sign applications using the BouncyCastle library instead of
- relying on Sun JVM specific APIs.</li>
- <li>Released some of the Android tools into <a href="http://www.maven.org">Maven
- Central</a> to assist third-party tool developers. The following tools are available
- in the repository: {@code manifest-merger}, {@code common/sdk_common}, {@code ddmlib},
- {@code dvlib}, {@code layoutlib_api}, {@code sdklib}, and {@code lint}.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed a number of minor bugs in the SDK and build system.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 21.1</a> <em>(February 2013)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 21.1.0 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.1.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Improved error reporting in {@code dx} when dex merging fails in the build
- system.</li>
- <li>Added more than 15 new Lint checks, including checks for overriding older APIs, XML
- resource problems, graphic asset issues and manifest tags.</li>
- <li>Added new aapt feature to compile resources.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 21.0.1</a> <em>(December 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 21.0.1 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.0.1.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Build
- <ul>
- <li>Updated build to detect and handle package name conflicts between an application and
- the libraries it depends on. Libraries cannot share package names unless all of them
- share the same package name.
- (<a href="http://code.google.com/p/android/issues/detail?id=40152">Issue 40152</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=40273">Issue 40273</a>)
- </li>
- <li>Added a flag to disable dex merging to deal with cases where merging could generate
- a broken dex file. If this happens to your project, add the following setting to your
- {@code project.properties} file: {@code dex.disable.merger=true} This setting
- causes the build system to revert to the older, slower dex processing that does not
- pre-dex libraries.</li>
- </ul>
- </li>
-
- <li>RenderScript
- <ul>
- <li>Added support for
- <a href="{@docRoot}guide/topics/renderscript/compute.html#filterscript">Filterscript</a>
- compilation.</li>
- <li>Added new project setting to control the RenderScript compilation target separately
- from an Android project. Adding the following line to a {@code project.properties}
- file causes RenderScript code to be compiled for Android API Level 17, while the
- containing application can target a different (lower) API level:
- <pre>renderscript.target = 17</pre>
- Previously, the RenderScript compilation target was tied to the
- {@code android:minSdkVersion} setting in the manifest.
- (<a href="http://code.google.com/p/android/issues/detail?id=40487">Issue 40487</a>)
- </li>
- </ul>
- </li>
-
- </ul>
- </dd>
-
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Lint
- <ul>
- <li>Corrected check for {@code 0px} values in style XML elements.
- (<a href="http://code.google.com/p/android/issues/detail?id=39601">Issue 39601</a>)
- </li>
- <li>Fixed incorrect flagging of formatting strings.
- (<a href="http://code.google.com/p/android/issues/detail?id=39758">Issue 39758</a>)
- </li>
- <li>Fixed problem where {@code tools:ignore} directive in the manifest file was ignored
- by the Lint tool.
- (<a href="http://code.google.com/p/android/issues/detail?id=40136">Issue 40136</a>)
- </li>
- <li>Fixed problem with flagging a wakelock release inside a conditional.
- (<a href="http://code.google.com/p/android/issues/detail?id=40424">Issue 40424</a>)
- </li>
- <li>Fixed incorrect reporting of missing {@code layout_width} and {@code layout_height}
- XML fields.
- (<a href="http://code.google.com/p/android/issues/detail?id=38958">Issue 38958</a>)
- </li>
- <li>Fixed handling of custom namespace attributes.</li>
- <li>Added fixes for filtering out library project warnings.</li>
- <li>Removed warnings about missing classes before a build.</li>
- </ul>
- </li>
-
- <li>Fixed problem with UI Automator Viewer execution script where Android tools directory
- is not set.</li>
- <li>Fixed problem with the SDK Manager so that it auto-selects the most recently released
- platform on startup.</li>
- <li>Fixed Java finding script to look for the currently supported version of Java (1.6 or
- higher).</li>
- <li>Fixed the SDK Manager launcher in the ADT bundle so that it can properly launch the
- SDK Manager program when it is placed at the root of the bundle.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 21</a> <em>(November 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 16 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed
- for use with ADT 21.0.0 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.0.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Build System
- <ul>
- <li>Added a flag that sets <em>jumbo mode</em> for DEX files, which allows a larger
- number of strings in the DEX files. Enable this mode by adding the following line to
- the {@code project.properties} file of your project:
- <pre>dex.force.jumbo=true</pre></li>
- <li>Improved the build time by pre-dexing libraries (both JAR files and library
- projects).</li>
- <li>Updated the build to generate {@code R} resource classes for library projects
- with only the IDs needed by the libraries, reducing the risk of hitting DEX file
- limits for fields and methods.</li>
- <li>Improved the build so that several editing features (code completion, resource
- chooser, go to declaration) properly handle library project resources.</li>
- </ul>
- </li>
- <li>Lint
- <ul>
- <li>Added over 25 new lint rules for resources, locale settings, layout
- files, incorrect use of {@link android.util.SparseArray} and
- {@link android.os.PowerManager.WakeLock} and manifest issues.</li>
- <li>Updated reporting to include errors in library projects if the library project is
- in the list of projects to be checked.</li>
- <li>Added a new {@code lint} target to the Ant build system for easier
- integration with continuous build systems.</li>
- <li>Added new {@code --sources} and {@code --classpath} arguments to point to sources
- with different directory structures.</li>
- <li>Improved the XML export function to support the <a
- href="https://wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin">Jenkins Lint
- plugin</a>.
- </li>
- <li>Added support for class file flow analysis.</li>
- </ul>
- </li>
- <li>Android Virtual Devices (AVD)
- <ul>
- <li>Added new <strong>Device Definitions</strong> tab in the AVD Manager for configuring
- standard size and Nexus virtual devices.</li>
- <li>Improved emulators so that they launch with a skin that is dynamically generated and
- reflects the actual hardware configured in the AVD Manager.</li>
- <li>Improved support for developing Android apps on MIPS-based devices with new MIPS
- System Images for Android Virtual Devices.</li>
- </ul>
- </li>
- <li>Added {@code jobb} tool for creating and encrypting
- <a href="{@docRoot}google/play/expansion-files.html">APK Expansion Files</a>.
- (<a href="{@docRoot}tools/help/jobb.html">more info</a>)
- <li>Improved the Android JUnit test runner to allow a test to be run on all connected
- devices simultaneously.</li>
- </ul>
- </dd>
-
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed manifest merger to properly adapt library classes in the merged manifest.</li>
- </ul>
- </dd>
-
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 20.0.3</a> <em>(August 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 12 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed
- for use with ADT 20.0.3 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.3.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed problem with cached download lists in SDK Manager.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 20.0.1</a> <em>(July 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 12 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed
- for use with ADT 20.0.1 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.1.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed wrong check on build state that forced repetitive Java code recompilation.</li>
- <li>Fixed problems with running more than one emulator and running multiple emulators
-with GPU acceleration.</li>
- <li>Improved resize algorithm for better rendering on scaled emulator windows.</li>
- <li>Fixed a bug in the {@code lint} check for unprotected broadcast receivers to ignore
-unprotected receivers for default Android actions.</li>
- <li>Fixed build issue for projects using RenderScript.</li>
- <li>Fixed memory leak in the emulator.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 20</a> <em>(June 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 12 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
- use with ADT 20.0.0 and later. If you haven't already, we highly recommend updating your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
- <dt>General notes:</dt>
- <dd>
- <ul>
- <li>Added new Device Monitor application, grouping Android debugging tools into a
-single application, including ddms, traceview, hierarchyviewer and Tracer for GLES. (<a
-href="{@docRoot}tools/help/gltracer.html">more info</a>)</li>
- <li>Added new System Trace new tool for tracing Android system activity. This tool allow you
-to capture a slice of system activity, plus additional information tagged from the <strong>Settings
-> Developer Options > Monitoring: Enable traces</strong> or with specific calls added to your
-application code.</li>
- </li>
- <li>Build System
- <ul>
- <li>Added automatic merging of library project manifest files into the including
-project's manifest. Enable this feature with the {@code manifestmerger.enabled} property.</li>
- <li>Added automatic ProGuard support for the {@code aapt -G} flag. This change causes
-the build system to generate a temporary ProGuard {@code keep-rules} file containing classes that
-are referenced from XML files (such as custom views) and pass this to ProGuard at shrink time. This
-can make the resulting APK much smaller when using just a small portion of a large library project
-(such as the Android Support library), since the catch-all rules to keep all custom views from the
-default ProGuard configuration file have also been removed.</li>
- <li>Added two ProGuard configuration files for use in projects: {@code
-proguard-android-optimize.txt} which enables optimizations and {@code proguard-android.txt} which
-disables them.</li>
- </ul>
- </li>
- <li>SDK Manager
- <ul>
- <li>Improved caching to reduce downloading of repository definitions.</li>
- <li>Added <strong>Tools > Manage Add-on Sites</strong> option to improve performance by
- allowing temporary deactivation of third-party sites if they are loading slowly.</li>
- <li>Added settings for the SDK Manager download cache (<strong>SDK Manager > Tools >
-Options</strong>).</li>
- </ul>
- </li>
- </ul>
- </dd>
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Build
- <ul>
- <li>Fixed problem where test projects did not have access to the full classpath of tested
-projects, including Library Projects and third-party jars.</li>
- <li>Fixed deployment logic so that applications with embedded tests can now be deployed
-and tested like test applications, including code coverage information.</li>
- <li>Fixed Ant support for testing projects with libraries.</li>
- </ul>
- </li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 19</a> <em>(April 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p class="note"><strong>Note:</strong> This update of SDK Tools is only available through
-the <a href="{@docRoot}sdk/exploring.html">Android SDK Manager</a>. Use this tool to
-download and install this update.</p>
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 9 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
- use with ADT 18.0.0 and later. If you haven't already, we highly recommend updating your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 18.0.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed an issue that prevented some developers from running the emulator with GPU
-acceleration.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 18</a> <em>(April 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p class="caution"><strong>Important:</strong> To download the new Android
- 4.0 system components from the Android SDK Manager, you must first update the
- SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
- the Android 4.0 system components will not be available for download.</p>
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 9 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
- use with ADT 18.0.0 and later. If you haven't already, we highly recommend updating your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 18.0.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
- <dt>General notes:</dt>
- <dd>
- <ul>
- <li>Updated the SdkController app to encapsulate both sensor and multitouch emulation
- functionality.</li>
- </ul>
- </dd>
- <dt>Bug fixes:</dt>
- <dd>
- <ul>
- <li>Fixed Ant issues where some jar libraries in the {@code libs/} folder are not picked up
-in some cases.</li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 17</a> <em>(March 2012)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p class="caution"><strong>Important:</strong> To download the new Android
- 4.0 system components from the Android SDK Manager, you must first update the
- SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
- the Android 4.0 system components will not be available for download.</p>
-
- <dl>
- <dt>Dependencies:</dt>
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 9 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
- use with ADT 17.0.0 and later. If you haven't already, we highly recommend updating your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 17.0.0.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
- <dt>General notes:</dt>
- <dd>
- <ul>
- <li>Emulator
- <ul>
- <li>Added support for hardware accelerated graphics rendering. This feature requires an
-API Level 15, Revision 3 or later system image.
-(<a href="{@docRoot}tools/devices/emulator.html#accel-graphics">more info</a>)
- </li>
- <li>Added support for running Android x86 system images in virtualization mode on
-Windows and Mac OS X.
-(<a href="{@docRoot}tools/devices/emulator.html#accel-vm">more info</a>)
- <p class="note"><strong>Note:</strong> Use the Android SDK Manager to download and
-install x86 system images. Android x86 system images are not available for all API levels.</p>
- </li>
- <li>Added experimental support for multi-touch input by enabing the emulator to receive
- touch input from a USB-tethered physical Android device.
- (<a href="http://tools.android.com/tips/hardware-emulation">more info</a>)</li>
- </ul>
- </li>
- <li>Added viewing of live detailed network usage of an app in DDMS. (<a
- href="http://tools.android.com/recent/detailednetworkusageinddms">more info</a>)</li>
- <li>ProGuard
- <ul>
- <li>Updated the bundled ProGuard tool to version 4.7. In addition to many new features,
-this update fixes the {@code Conversion to Dalvik format failed with error 1} error some users have
-experienced.</li>
- <li>Updated the default {@code proguard.cfg} file with better default flags for
- Android.</li>
- <li>Split the ProGuard configuration file has been in half, with project specific flags
-kept in project and the generic Android flags distributed (and updated) with the tools
-themselves.</li>
- </ul>
- </li>
- <li>Build
- <ul>
- <li>Added a feature that allows you to run some code only in debug mode. Builds now
-generate a class called {@code BuildConfig} containing a {@code DEBUG} constant that is
-automatically set according to your build type. You can check the ({@code BuildConfig.DEBUG})
-constant in your code to run debug-only functions.</li>
- <li>Fixed issue when a project and its libraries include the same jar file in their libs
- folder. (<a href="http://tools.android.com/recent/dealingwithdependenciesinandroidprojects">more
- info</a>)</li>
- <li>Added support for custom views with custom attributes in libraries. Layouts using
-custom attributes must use the namespace URI {@code http://schemas.android.com/apk/res-auto} instead
-of the URI that includes the app package name. This URI is replaced with the app specific one at
-build time.</li>
- </ul>
- </li>
- <li>Lint
- <ul>
- <li>Updated Lint to check Android application code. Lint rules which previously
-performed pattern based searches in the application code (such as the unused resource check) have
-been rewritten to use the more accurate Java-style parse trees.</li>
- <li>Added support for checking library projects. This change means that rules such as
-the unused resource check properly handle resources declared in a library project and referenced in
-a downstream project.</li>
- <li>Added ability to suppress Lint warnings in Java code with the new
-{@code @SuppressLint} annotation, and in XML files with the new tools: namespace and
-ignore attribute. (<a
- href="http://tools.android.com/recent/ignoringlintwarnings">more info</a>)</li>
- <li>New Lint checks:
- <ul>
- <li>Added check for Android API calls that require a version of Android higher than
- the minimum supported version. You can use the new {@code @TargetApi} annotation
- to suppress warnings when the code is wrapped in a system version condition.
- (<a href="http://tools.android.com/recent/lintapicheck">more info</a>)</li>
- <li>Added over 20 new Lint rules, including checks for
- <a href="http://tools.android.com/recent/lintperformancechecks">performance</a>,
- XML layouts, manifest and file handling.</li>
- </ul>
- </li>
- </ul>
- </li>
- </ul>
- </dd>
- </dl>
- </div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 16</a> <em>(December 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p class="caution"><strong>Important:</strong> To download the new Android
- 4.0 system components from the Android SDK Manager, you must first update the
- SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
- the Android 4.0 system components will not be available for download.</p>
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
- <ul>
- <li>Android SDK Platform-tools revision 9 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use
- with ADT 16.0.0 and later. If you haven't already, we highly recommend updating your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 16.0.0.</li>
- <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
- Ant</a> 1.8 or later.</li>
-</ul>
-</dd>
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>Added Lint tools to detect common errors in Android projects.
- (<a href="http://tools.android.com/recent/lint">more info</a>)</li>
- <li>Added sensor emulation support, which allows the emulator to read sensor data from a
- physical Android device.
- (<a href="http://tools.android.com/recent/sensoremulation">more info</a>)</li>
- <li>Added support for using a webcam to emulate a camera on Mac OS X.</li>
- </ul>
-</dd>
-<dt>Bug fixes:</dt>
-<dd>
- <ul>
- <li>Snapshots now work for Android 4.0 system images.</li>
- <li>Fixed several small issues for the build file.
- (<a href="http://code.google.com/p/android/issues/detail?id=21023">Issue 21023</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=21267">Issue 21267</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=21465">Issue 21465</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=21525">Issue 21525</a>).</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 15</a> <em>(October 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p class="caution"><strong>Important:</strong> To download the new Android
- 4.0 system components from the Android SDK Manager, you must first update the
- SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
- the Android 4.0 system components will not be available for download.</p>
- <dl>
-<dt>Dependencies:</dt>
-<dd>
- <ul><li>Android SDK Platform-tools revision 9 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use
- with ADT 15.0.0 and later. If you haven't already, we highly recommend updating your <a
- href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 15.0.0.</li>
- <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
- Ant</a> 1.8 or later.</li>
-</ul>
-
-<dt>Bug fixes:</dt>
-<dd>
- <ul>
- <li>Fixed emulator crash on Linux due to improper webcam detection
- (<a href="http://code.google.com/p/android/issues/detail?id=20952">Issue 20952</a>).</li>
- <li>Fixed emulator issue when using the <code>-wipe-data</code> argument.</li>
- <li>Fixed build issue when using RenderScript in projects that target API levels 11-13
- (<a href="http://code.google.com/p/android/issues/detail?id=21006">Issue 21006</a>).</li>
- <li>Fixed issue when creating an AVD using the GoogleTV addon
- (<a href="http://code.google.com/p/android/issues/detail?id=20963">Issue 20963</a>).</li>
- <li>Fixed <code>ant test</code>
- (<a href="http://code.google.com/p/android/issues/detail?id=20979">Issue 20979</a>).</li>
- <li>Fixed <code>android update project</code>
- (<a href="http://code.google.com/p/android/issues/detail?id=20535">Issue 20535</a>).</li>
- <li>Fixed scrolling issue in the new Logcat panel of DDMS.</li>
- <li>Fixed issue with MonkeyRunner
- (<a href="http://code.google.com/p/android/issues/detail?id=20964">Issue 20964</a>).</li>
- <li>Fixed issues in the SDK Manager
- (<a href="http://code.google.com/p/android/issues/detail?id=20939">Issue 20939</a>,
- <a href="http://code.google.com/p/android/issues/detail?id=20607">Issue 20607</a>).</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 14</a> <em>(October 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <p class="note"><strong>Important:</strong> To download the new Android
- 4.0 system components from the Android SDK Manager, you must first update the
- SDK tools to revision 14 and restart the Android SDK Manager. If you do not,
- the Android 4.0 system components will not be available for download.</p>
- <dl>
-<dt>Dependencies:</dt>
-<dd>
- <ul><li>Android SDK Platform-tools revision 8 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use
- with ADT 14.0.0 and later. If you haven't already, we highly recommend updating your <a
- href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 14.0.0.</li>
- <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
- Ant</a> 1.8 or later.</li>
-</ul>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>Added webcam support to Android 4.0 or later platforms to emulate rear-facing cameras when
- one webcam is present, and to emulate both rear-facing and front-facing cameras when two
- webcams are present. Webcam support is for Windows and Linux only.
- Mac support will come in a later release.</li>
- <li>Changed <code>default.properties</code> to <code>project.properties</code> and
- <code>build.properties</code> to <code>ant.properties</code>. Any existing
- projects that you build with Ant must be updated with the <code>android update project</code>
- command.</li>
- <li>Changed Ant <code>build.xml</code> file to support improvements to the
- build system and added and modified Ant commands to support these changes. For a list of Ant
-commands, see the
-<a href="{@docRoot}tools/building/building-cmdline.html#AntReference">Ant Command
-Reference</a>.</li>
- <li>Changed how library projects are built.</li>
- <li>Improved incremental builds, so that resource compilation runs less frequently. Builds no
- longer run when you edit strings or layouts (unless you add a new <code>id</code>) and no longer
- run once for each library project.</li>
- <li>Introduced a "PNG crunch cache" that only runs on modified PNG files, instead of
- crunching all existing PNG files, all the time.</li>
- <li>Revamped the SDK Manager UI (<a href="http://tools.android.com/recent/newsdkmanager">more
-info</a>).</li>
- </ul>
- <p>For a complete overview of the build system changes and what you need to do to support them,
-see the <a href="http://tools.android.com/recent/buildchangesinrevision14">Android Tools Project
-site</a>.</p>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 13</a> <em>(September 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use with
-ADT 12.0.0 and later. If you haven't already, we highly recommend updating your <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 12.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>Fix compilation issue in Ant (<code>dex</code> step) when paths have spaces.</li>
- <li>Fix issue in emulator installation when paths have spaces.</li>
- <li>Fix issue when AVD paths have spaces.</li>
- <li>Fix rendering issue when using emulator scaling (<a href="http://code.google.com/p/android/issues/detail?id=18299">see more</a>).</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 12</a> <em>(July 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use with
-ADT 12.0.0 and later. If you haven't already, we highly recommend updating your <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 12.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>The AVD manager and emulator can now use system images
- compiled for ARM v7 and x86 CPUs.</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 11</a> <em>(May 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use with
-ADT 10.0.1 and later. If you haven't already, we highly recommend updating your <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 10.0.1.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>Miscellaneous emulator changes to support Android 3.1.</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 10</a> <em>(February 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 10.0.0 and later. After installing SDK Tools r10, we
-highly recommend updating your ADT Plugin to 10.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>The tools now automatically generate Java Programming Language source files (in the
-<code>gen</code> directory) and
- bytecode (in the <code>res/raw</code> directory) from your native <code>.rs</code> files</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 9</a> <em>(January 2011)</em>
- </p>
-
- <div class="toggle-content-toggleme">
- <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 9.0.0 and later. After installing SDK Tools r9, we
-highly recommend updating your ADT Plugin to 9.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>Upgrading to SDK Tools r9:</dt>
-<dd>
-<p>If you are upgrading to SDK Tools r9 from SDK Tools r7 or earlier, the default installed location
-for the <code>adb</code> tool has changed from <code><<em>SDK</em>>/tools/adb</code> to
-<code><<em>SDK</em>>/platform-tools/adb</code>. This means that you should
-add the new location to your PATH and modify any custom build scripts to
-reference the new location. Copying the <code>adb</code> executable from the new
-location to the old is not recommended, since subsequent updates to the SDK
-Tools will delete the file.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
- <ul>
- <li>The default ProGuard configuration, <code>proguard.cfg</code>, now ignores the following classes:
- <ul>
- <li>classes that extend {@link android.preference.Preference}</li>
- <li>classes that extend {@link android.app.backup.BackupAgentHelper}</li>
- </ul>
- </li>
- <li>Ant lib rules now allow you to override <code>java.encoding</code>, <code>java.source</code>,
- and <code>java.target</code> properties.</li>
- <li>The default encoding for the <code>javac</code> Ant task is now UTF-8.</li>
- <li>The LogCat view in DDMS now properly displays UTF-8 characters.</li>
- <li>The SDK Manager is more reliable on Windows. For details on the improvements, see the
- <a href="http://tools.android.com/recent/sdkmanagerfixes">Android Tools Project Site</a>. </li>
- <li>Early look at the new snapshot feature: To improve startup time for the emulator, you can
-enable snapshots for the system state. The emulator will then restore to the state when it last
-closed almost instantly. <strong>Note:</strong> The snapshot feature is still under active
-development and might not always perform as expected.</li>
- <li>Fixed the missing JAR file error that prevented <code>draw9patch</code> from running.</li>
- <li>Fixed the Windows launch scripts <code>hierarchyviewer</code> and <code>ddms</code> to support
- the new location of <code>adb</code>.</li>
- <li>Known issues with emulator performance: Because the Android emulator must simulate the ARM
-instruction set architecture on your computer, emulator performance is slow. We're working hard to
-resolve the performance issues and it will improve in future releases.</li>
- </ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 8</a> <em>(December 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 8.0.0 and later. After installing SDK Tools r8, we
-highly recommend updating your ADT Plugin to 8.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<p>Also note that SDK Tools r8 requires a new SDK component called
-<em>Platform-tools</em>. The new Platform-tools component lets all SDK platforms
-(Android 2.1, Android 2.2, and so on) use the same (latest) version of build
-tools such as <code>adb</code>, <code>aapt</code>, <code>aidl</code>, and
-<code>dx</code>. To download the Platform-tools component, use the Android SDK
-Manager, as described in <a href="{@docRoot}sdk/exploring.html">Exploring the
-SDK</a></p>
-
-<dt>Upgrading from SDK Tools r7:</dt>
-<dd>
-<p>If you are upgrading to SDK Tools r8 from an earlier version, note that the
-the default installed location for the <code>adb</code> tool has changed from
-<code><<em>SDK</em>>/tools/adb</code> to
-<code><<em>SDK</em>>/platform-tools/adb</code>. This means that you should
-add the new location to your PATH and modify any custom build scripts to
-reference the new location. Copying the <code>adb</code> executable from the new
-location to the old is not recommended, since subsequent updates to the SDK
-Tools will delete the file.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>All SDK platforms now support Library Projects.</li>
-<li>Support for a true debug build. Developers no longer need to add the
-<code>android:debuggable</code> attribute to the
-<code><application></code> tag in the manifest — the build tools add
-the attribute automatically. In Eclipse/ADT, all incremental builds are assumed
-to be debug builds, so the tools insert <code>android:debuggable="true"</code>.
-When exporting a signed release build, the tools do not add the attribute. In
-Ant, a <code>ant debug</code> command automatically inserts the
-<code>android:debuggable="true"</code> attribute, while <code>ant release</code>
-does not. If <code>android:debuggable="true"</code> is manually set, then
-<code>ant release</code> will actually do a debug build, rather than a release
-build.</li>
-<li>Automatic ProGuard support in release builds. Developers generate a ProGuard
-configuration file using the <code>android</code> tool — the build tools
-then automatically run ProGuard against the project sources during the build.
-For more information, see the <a
-href="{@docRoot}tools/help/proguard.html">ProGuard</a>
-documentation. </li>
-<li>New overridable Ant javac properties: <code>java.encoding</code>,
-<code>java.source</code>, and <code>java.target</code> (default values are
-"ascii", "1.5", and "1.5", respectively).</li>
-<li>New UI for the HierarchyViewer tool.</li>
-</ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 7</a> <em>(September 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 0.9.8 and later. After installing SDK Tools r7, we
-highly recommend updating your ADT Plugin to 0.9.8.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Added support for library projects that depend on other library projects.</li>
-<li>Adds support for aidl files in library projects.</li>
-<li>Adds support for extension targets in Ant build to perform tasks between the
-normal tasks: <code>-pre-build</code>, <code>-pre-compile</code>, and
-<code>-post-compile</code>.</li>
-<li>Adds support for "headless" SDK update. See <code>android -h update sdk</code>
-for more information.</li>
-<li>Fixes location control in DDMS to work in any locale not using '.' as a
-decimal point.</li>
-</ul>
-</ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 6</a> <em>(May 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 0.9.7 and later. After installing SDK Tools r6, we
-highly recommend updating your ADT Plugin to 0.9.7.</p>
-</dd>
-
-<dt>Library projects:</dt>
-<dd>
-<p>The SDK Tools now support the use of <em>library projects</em> during
-development, a capability that lets you store shared Android application
-code and resources in a separate development project. You can then reference the
-library project from other Android projects and, at build time, the tools
-compile the shared code and resources as part of the dependent applications.
-More information about this feature is available in the <a
-href="{@docRoot}tools/projects/index.html#LibraryProjects">Creating and Managing Projects</a> document.</p>
-<p>If you are developing in Eclipse, <a href="eclipse-adt.html">ADT</a>
-provides the equivalent library project support.</p>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 5</a> <em>(March 2010)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd><ul>
-<li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 0.9.6 and later. After installing SDK Tools r5, we
-highly recommend updating your ADT Plugin to 0.9.6.</li>
-<li>For Mac OS platforms, OS X 10.4.x (Tiger) is no longer
-officially supported. </li>
-</ul>
-</dd>
-
-<dt>SDK and AVD Manager:</dt>
-<dd>
-<ul>
-<li>Fixes SSL download for the standalone version of the SDK Updater.</li>
-<li>Fixes issue with 64-bit JVM on Windows.</li>
-<li>Adds support for platform samples components.</li>
-<li>Improves support for dependency between components.</li>
-<li>AVDs now sorted by API level.</li>
-<li>The AVD creation dialog now enforces a minimum SD card size of 9MB.</li>
-<li>Prevents deletion of running AVDs.</li>
-<li>Settings are now automatically saved, no need to click "Apply".</li>
-</ul>
-</dd>
-
-<dt>Emulator:</dt>
-<dd>
-<ul>
-<li>Emulator now requires SD card to be 9MB or more.</li>
-</ul>
-</dd>
-
-<dt>Layoutopt:</dt>
-<dd>
-<ul>
-<li>Fixes <code>layoutopt.bat</code> to execute correctly on Windows.</li>
-</ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 4</a> <em>(December 2009)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd><p>This version of SDK Tools is compatible with ADT 0.9.5 and later, but not
-compatible with earlier versions. If you are developing in Eclipse with ADT, you
-<strong>must</strong> update your ADT plugin to version 0.9.5 or higher if you
-install SDK Tools r4 in your SDK. </p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Launcher script now forces GDK_NATIVE_WINDOW=true (linux only), to fix a
-compatibility issue between GTK and SWT.</li>
-</ul>
-</dd>
-
-<dt>Android SDK and AVD Manager:</dt>
-<dd>
-<ul>
-<li>AVD Launch dialog now shows scale value.</li>
-<li>Fixes potential NPE in SDK Manager on AVD launch, for older AVD with no
-skin name specified.</li>
-<li>Fixes XML validation issue in on older Java versions.</li>
-<li>No longer forces the use of Java 1.5 on Mac OS X.</li>
-</ul>
-</dd>
-
-<dt>Emulator:</dt>
-<dd>
-<ul>
-<li>No longer limits the size of the system partition.</li>
-</ul>
-</dd>
-
-<dt>Ant build tools:</dt>
-<dd>
-<ul>
-<li>.apk packaging now properly ignores vi swap files as well as hidden files.</li>
-</ul>
-</dd>
-</dl>
-</div>
-</div>
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 3</a> <em>(October 2009)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd><p>This version of SDK Tools is compatible with ADT 0.9.4 and later, but not
-compatible with earlier versions. If you are developing in Eclipse with ADT, you
-<strong>must</strong> update your ADT plugin to version 0.9.4 or higher if you
-install SDK Tools r3 in your SDK.</p>
-</dd>
-
-<dt>Android tool:</dt>
-<dd>
-<ul>
-<li>Adds new <code>android create test-project</code> and <code>android update
-test-project</code> commands to allow for greater flexibility in the location of the
-main and test projects.</li>
-</ul>
-</dd>
-
-<dt>DDMS:</dt>
-<dd>
-<ul>
-<li>Adds a button to dump HPROF file for running applications (app must be able
-to write to the sdcard).</li>
-<li>Button to start/stop profiling of a running application (app must be able to
-write to the sdcard). Upon stop, Traceview will automatically be launched to
-display the trace.</li>
-<li>Fixed DDMS, Traceview, and the AVD Mananger/SDK Updater to run on Mac OS X
-10.6.</li>
-<li>Fixed screenshot support for devices running 32-bit framebuffer.</li>
-</ul>
-</dd>
-
-<dt>Android SDK and AVD Manager:</dt>
-<dd>
-<ul>
-<li>Provides a new UI that lets you set options for controlling
-the emulator skin, screen size/density, and scale factor used when launching
-an AVD.</li>
-<li>Provides improved AVD creation UI, which lets you customize the hardware
-properties of your AVDs.</li>
-<li>Now enforces dependencies between platforms and tools components, and
-between SDK add-ons and platforms.</li>
-</ul>
-</dd>
-
-<dt>Layoutopt, a new tool for optimizing layouts:</dt>
-
-<dd><p>The SDK Tools r3 package includes <code>layoutopt</code>, a new command-line
-tool that helps you optimize your layout hierarchies. When run against your
-layout files, the tool analyzes their hierarchies and notifies you of
-inefficiencies and other potential issues. The tool also provides simple
-solutions for the issues it finds. For usage, see <a
-href="/tools/help/layoutopt.html">layoutopt</a>.</p>
-</dd>
-</dl>
-</div>
-</div>
diff --git a/docs/html/tools/studio/code-tools.jd b/docs/html/tools/studio/code-tools.jd
deleted file mode 100644
index aeae77d..0000000
--- a/docs/html/tools/studio/code-tools.jd
+++ /dev/null
@@ -1,30 +0,0 @@
-page.title=Android Studio Code Tools
-
-@jd:body
-
-<p>
- Android Studio provides a number of coding features to assist with writing and building your
- app. These tools help you write code faster and improve quality.
-</p>
-
-<dl>
- <dt><a href="{@docRoot}tools/debugging/improving-w-lint.html">Lint</a></dt>
- <dd>The Lint tool is a static code analysis tool that checks your Android
- project source files for potential bugs and optimization improvements.</dd>
-
- <dt><a href="{@docRoot}tools/debugging/annotations.html">Code Annotations</a></dt>
- <dd>Annotations help you improve code readability and improve code inspector output,
- by allowing you to more clearly define method parameter requirements.
- </dd>
-
- <dt><a href="{@docRoot}tools/help/app-link-indexing.html">URL and App Indexing
- Support</a></dt>
- <dd>Android Studio helps you add support for URLs, app indexing, and search
- functionality to your apps. These features can help to drive more traffic
- to your app, discover which app content is used most, make it easier for
- users to find content in an installed app, and attract new users.
- </dd>
-
-</dl>
-
-
diff --git a/docs/html/tools/studio/eclipse-transition-guide.jd b/docs/html/tools/studio/eclipse-transition-guide.jd
deleted file mode 100644
index aaacbe3..0000000
--- a/docs/html/tools/studio/eclipse-transition-guide.jd
+++ /dev/null
@@ -1,773 +0,0 @@
-page.title=Transition Guide for Eclipse ADT
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
- <ol>
- <li><a href="#project-structure">Project Structure</a></li>
- <li><a href="#manifest-settings">Manifest Settings</a></li>
- <li><a href="#dependencies">Dependencies</a></li>
- <li><a href="#build-process">Gradle-based Build Process</a></li>
- <li><a href="#debug-inspect">Debugging and Code Inspections</a></li>
- <li><a href="#resource-optimization">Resource Optimization</a></li>
- <li><a href="#signing">App Signing</a></li>
- <li><a href="#support-lib">Android Support Repository and Google Play services Repository</a></li>
- <li><a href="#app-package">App Packaging</a></li>
- <li><a href="#software-updates">Software Updates </a></li>
- <li><a href="#version-control">Version Control</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a class="external-link"
- href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA">
- IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
- <li><a class="external-link"
- href="https://confluence.jetbrains.com/display/IntelliJIDEA/IntelliJ+IDEA+for+Eclipse+Users">
- IntelliJ IntelliJ for Eclipse Users</a></li>
- <li><a href="{@docRoot}tools/studio/index.html">Android Studio Overview</a> </li>
- </ol>
-
-</div>
-</div>
-
-
-<p>This document describes the differences between Eclipse ADT and Android Studio, including project
- structure, build system, debugging, and application packaging. This guide is intended to help you
- transition to using Android Studio as your development environment.</p>
-
-<h2 id="project-structure">Project Structure </h2>
-<p>Eclipse provides workspaces as a common area for grouping related projects, configurations, and
-settings. In Android Studio, each instance of Android Studio contains a top-level project with one
-or more app modules. Each app module folder contains the equivalent to an Eclipse
-project, the complete source sets for that module, including {@code src/main} and
-{@code src/androidTest} directories, resources, build file, and the Android manifest. In general,
-to update and build your app you modify the files under each module's
-{@code src/main} directory for source code updates, the <code>gradle.build</code> file for
-build specification, and the files under {@code src/androidTest} directory for test case creation. </p>
-
-<p>You can also customize the view of the project files in Android Studio to focus on specific
-aspects of your app development: </p>
-
-<ul>
- <li><em>Packages</em> </li>
- <li><em>Project Files</em> </li>
- <li><em>Scratches</em> </li>
- <li><em>Problems</em> </li>
- <li><em>Production</em> </li>
- <li><em>Tests</em> </li>
-</ul>
-
-
-<p>The following table shows the general mapping of the Eclipse ADT project structure and file
-locations to Android Studio.</p>
-
-<p class="table-caption" id="table-project-structure-mapping">
- <strong>Table 1.</strong> Project structure mapping.</p>
-
-<table>
- <tr>
- <th scope="col">Eclipse ADT</th>
- <th scope="col">Android Studio</th>
- </tr>
-
- <tr>
- <td>Workspace </td>
- <td>Project </td>
- </tr>
-
- <tr>
- <td>Project </td>
- <td>Module </td>
- </tr>
-
- <tr>
- <td>Project-specific JRE </td>
- <td>Module JDK </td>
- </tr>
-
- <tr>
- <td>Classpath variable </td>
- <td>Path variable</td>
- </tr>
-
- <tr>
- <td>Project dependency</td>
- <td>Module dependency</td>
- </tr>
-
- <tr>
- <td>Library Module</td>
- <td>Library </td>
- </tr>
-
- <tr>
- <td><code>AndroidManifest.xml</code></td>
- <td><code>app/src/main/AndroidManifest.xml</code> </td>
- </tr>
- <tr>
- <td><code>assets/</code></td>
- <td><code>app/src/main/assets</code> </td>
- </tr>
- <tr>
- <td><code>res/</code></td>
- <td><code>app/src/main/res/</code> </td>
- </tr>
- <tr>
- <td><code>src/</code></td>
- <td><code>app/src/main/java/ </code> </td>
- </tr>
- <tr>
- <td><code>tests/src/</code></td>
- <td><code>app/src/androidTest/java/</code> </td>
- </tr>
-
- </table>
-
-
-
-<p>Table 2 shows Eclipse ADT and Android Studio project views. </p>
-
-<p class="table-caption" id="table2">
- <strong>Table 2.</strong> Comparing project views.</p>
-<table>
- <tbody><tr>
- <th>Eclipse ADT</th>
- <th>Android Studio Project View</th>
- <th>Android Studio Android View</th>
- </tr>
- <tr>
- <td><img src="{@docRoot}images/tools/eclipse-notepad-pre-import--structure.png"/> </td>
- <td><img src="{@docRoot}images/tools/studio-import-project-structure-project.png"/> </td>
- <td><img src="{@docRoot}images/tools/studio-import-project-structure-android.png"/> </td>
- </tr>
- </tbody>
-</table>
-
-
-<p class="note"><strong>Note:</strong> Multiple instances of Android Studio can be used to develop
-independent projects. </p>
-
-
-
-
-<h2 id="manifest-settings">Manifest Settings</h2>
-<p>Android Studio and <a href="http://www.gradle.org">Gradle</a>-based builds support
-<a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants"> build variants</a>,
-which are combinations of <code>productFlavor</code> and <code>buildTypes</code>, to customize
-your build outputs. To support these custom builds, several elements in the
-<code>AndroidManifest.xml</code> file are now properties in the <code>defaultConfig</code> and
-<code>productFlavors</code> blocks in the <code>build.gradle</code> file. The import process
-copies these manifest settings to the properties in the <code>build.gradle</code> file.
-These properties overwrite the settings in any other manifest files as shown in table 3. </p>
-
-<p class="table-caption" id="table-manifest-gradle-settings">
- <strong>Table 3.</strong> Manifest and Gradle property settings.</p>
-<table>
- <tr>
- <th scope="col">Manifest Setting</th>
- <th scope="col">build.gradle Setting</th>
- </tr>
- <tr>
- <td><code><uses-sdk</code> <br>
- <p><code>android:minSdkVersion</code></p>
- <p><code>android:targetSdkVersion /></code></p>
- </td>
- <td> <br>
- <p><code>minSdkVersion</code></p>
- <p><code>targetSdkVersion</code></p> </td>
- </tr>
- <tr>
- <td><code><manifest</code>
- <p>package (Required in the default manifest file.) </p>
- <p><code>android:versionCode</code></p>
- <p><code>android:versionName /></code></p>
- </td>
- <td> <br>
- <p><code>applicationId</code> (See
- <a href="{@docRoot}tools/studio/index.html#app-id"> Application ID
- for Package Identification</a>)</p>
- <p><code>versionCode</code></p>
- <p><code>versionName</code></p> </td>
- </tr>
-
- </table>
-
-
-<p>Although these settings may no longer appear in the default app manifest file, they are still
-valid manifest entries and may still appear in manifests from older projects, imported projects,
-dependencies, and libraries.</p>
-
-<p>The <code>package</code> element must still be specified in the manifest file. It is used in
-your source code to refer to your <code>R</code> class and to resolve any relative activity/service
-registrations. </p>
-
-<p class="note"><strong>Note:</strong> When multiple manifests are present in your app, for
-example a library manifest and a <code>src/main/</code> manifest, the build process combines
-the manifest settings into a single merged manifest based on the manifest priority and
-manifest merge settings. For more information about the manifest merge process and merge settings,
-see
-<a href="{@docRoot}tools/building/manifest-merger.html"> Manifest Merger</a>. </p>
-
-
-<h2>Application ID for package identification </h2>
-<p>With the Android build system, the <code>applicationId</code> attribute is used to
-uniquely identify application packages for publishing. The application ID is set in the
-<code>android</code> section of the <code>build.gradle</code> file. This field is populated in the
-build file as part of the migration process. </p>
-
-<pre>
-apply plugin: 'com.android.application'
-
-android {
- compileSdkVersion 19
- buildToolsVersion "19.1"
-
- defaultConfig {
- <strong>applicationId "com.example.my.app"</strong>
- minSdkVersion 15
- targetSdkVersion 19
- versionCode 1
- versionName "1.0"
- }
- ...
-</pre>
-
-<p class="note"><strong>Note:</strong> The <code>applicationId</code> is specified only in your
-<code>build.gradle</code> file, and not in the <code>AndroidManifest.xml</code> file.</p>
-
-<p><a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Build variants</a>
-enable you to uniquely identify different
-packages for each product flavor and build type. The application ID in the build type setting can
-be added as a suffix to the ID specified for the product flavors. The following example adds the
-<code>.debug</code> suffix to the application ID of the <code>pro</code> and <code>free</code>
-product flavors: </p>
-
-<pre>
-productFlavors {
- pro {
- applicationId = "com.example.my.pkg.pro"
- }
- free {
- applicationId = "com.example.my.pkg.free"
- }
-}
-
-buildTypes {
- debug {
- applicationIdSuffix ".debug"
- }
-}
-....
-</pre>
-
-
-
-<h2 id="dependencies">Dependencies</h2>
-<p>During the import process, Android Studio imports the current Eclipse ADT dependencies and
-downloads any project libraries as Android Studio modules. The dependency declarations are added to
-the <code>build.gradle</code> file. The declarations include a
-<a href="#scopes">dependency scope</a>, such as
-<code>compile</code>, to specify in which builds the dependency is included. </p>
-
-<p>The following example shows how to add an external library JAR dependency so it's included in
-each compile:</p>
-
-<pre>
-dependencies {
- compile files('libs/*.jar')
-}
-
-android {
- ...
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> Android Studio supports the Android ARchive (AAR) format
-for the distribution of Android library projects as dependencies. For more information, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>. </p>
-
-
-<p>The import process replaces any well-known source libraries, binary libraries, and JAR files
-that have known Maven coordinates with Maven dependencies, so you no longer need to
-maintain these dependencies manually. </p>
-
-<p>Android Studio enables access to Maven, JCenter, and Ivy repositories with the
-<code>repositories</code> block in the <code>build.gradle</code> as a shortcut to specifying
-the URL of the repository.
-
-<p>If there are required repositories not declared in the <code>build.gradle</code> file, first add
-the repository to the <code>repositories</code> block, and then declare the dependencies in a way
-that Maven, JCenter, or Ivy declare their artifacts. The following example shows how to add the
-Maven repository with the guava 11.0.2 dependency using the <code>mavenCentral()</code> property: </p>
-
-<pre>
-repositories {
- mavenCentral()
-}
-
-android {
- ...
-}
-
-dependencies {
- compile 'com.google.guava:guava:11.0.2'
- instrumentationtestCompile 'com.squareup.fast-android:1:0.4'
-}
-
-</pre>
-
-<p>The Android Studio project created during the import process can also re-use any
-dependencies on other components. These components can be external binary packages or other
-<a href="http://www.gradle.org">Gradle</a> projects. If a dependency has dependencies of its own,
-those dependencies are also included in the new Android Studio project. </p>
-
-
-<p class="note"><strong>Note:</strong> If there were references to Eclipse ADT workspace library
-files in the <code>project.properties</code> or <code>.classpath</code> files
-that were not imported from the Eclipse project, you can now add dependencies to these library files
-in the <code>build.gradle</code> file. For more information, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>. </p>
-
-
-<h3 id="scopes">Dependency and compilation scopes </h3>
-<p>Android Studio supports compilation scopes to customize which dependencies get
-included in each build, for example assigning different dependencies to different
-<a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants"> build variants</a>.</p>
-
-<p>This list shows the Android Studio scope names and definitions: </p>
-
-<ul>
- <li>compile - <code>compile</code> </li>
- <li>run time - <code>package</code></li>
- <li>testCompile - <code>AndroidTestCompile</code></li>
- <li>testRuntime - <code>AndroidTestRunPackage</code></li>
- <li>buildTypeCompile - <code>buildTypeCompile</code> </li>
- <li>productFlavorCompile - <code>productFlavorCompile</code> </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Dependencies for library projects must be added with the
-<code>compile</code> scope. </p>
-
-
-<p>With the <a href="http://www.gradle.org">Gradle</a>-based DSL, you can also add custom
-dependency scopes, such as <code>betaCompile file('libs/protobug.jar')</code> to define a beta
-build dependency. </p>
-
-<p>The scope and compilation configuration in the build file determine the
-components compiled into the app, added to the compilation classpath, and packaged in the final
-APK file. Based on the dependency and compilation scope, different compilation configurations
-can be specified to include the dependencies and classpaths, for example: </p>
-
-<ul>
-<li><code>compile</code> - for the main application. </li>
-<li><code>androidTestCompile</code> - for the test application. </li>
-<li><code>debugCompile</code> - for the debug buildType application.</li>
-<li><code>releaseCompile</code> - for the release buildType application. </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Because it’s not possible to build an APK that does not
-have an associated <code>buildType</code>, the APK built from your app is always configured with
-at least two dependency and compile configurations: <code>compile</code> and
-<code>debugCompile</code>. </p>
-
-<p>Unlike Eclipse ADT, by default Android Studio does not compile your code when there are changes.
-Use the <strong>File > Settings > Build, Execution, Deployment Compiler</strong> option
-to enable automatic compilation. </p>
-
-
-
-<h2 id="build-process">Gradle-based Build Process </h2>
-<p>Android Studio imports the Eclipse ADT Ant-based
-build tasks and converts the tasks to <a href="http://www.gradle.org">Gradle</a>-based build tasks.
-These new build tasks include the
-main <code>assemble</code> task and at least two outputs based on the default build types:
-a <code>debug</code> APK and a
-<code>release</code> APK. Each of these build tasks has its own Android build system anchor task
-to facilitate building them independently: </p>
-<ul>
- <li><code>assemble</code></li>
- <li><code>assembleDebug</code></li>
- <li><code>assembleRelease</code></li>
-</ul>
-
-<p>In Android Studio, you can view all the supported build tasks in the
-<em>Gradle</em> project tab. </p>
-
-<p>With the <a href="http://www.gradle.org">Gradle</a>-based build system, Android Studio uses a
-<a href="http://www.gradle.org">Gradle</a> wrapper to fully integrate the
-Android Plugin for Gradle. The Android Plugin for Gradle also
-runs independent of Android Studio. This means that with Android Studio build system your build
-output is always the same, whether you build your Android apps from Android Studio, from the
-command line on your machine, or on machines where Android Studio is not installed (such as
-continuous integration servers). </p>
-
-<p>Unlike Eclipse ADT with dependent plugin and build updates, the <code>build.gradle</code>
-files allow you to customize the build settings for each Android Studio module and build variant,
-so the build versions can be set independently, and are not dependent on the Android Studio
-or build tools versions. This makes it easy to maintain and build legacy apps along with your
-current app, using build variants to generate different APKs from the same app modules, but
-built with different build versions and build chains. </p>
-
-<p>For more details about the Android Studio build system, see
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a>.</p>
-
-<h3>Using the Android Studio build system's declarative logic </h3>
-<p>In contrast with the XML statements in Ant build files, the Android build system and
-<a href="http://www.gradle.org">Gradle</a> DSL provide a declarative build language so you can
-easily extend the Gradle-based build process beyond the typical XML build tasks. For example,
-this build file shows how to define a custom function to inject a dynamic <code>versionCode</code>
-in build outputs: </p>
-
-<pre>
-def getVersionCode) {
- def code = …
- return code
-}
-
-android {
- defaultConfig {
- versionCode getVersionCode()
- …
- }
-}
-</pre>
-
-<p>This example shows how to append <em>debug</em> to your package and version names used in the
-<code>debug</code> build variant of your app: </p>
-
-<pre>
-android {
- buildTypes {
- debug {
- packageNameSuffix ‘.debug’
- versionNameSuffix ‘-DEBUG’
- }
- beta {
- …
- }
- }
-}
-</pre>
-
-
-<p>You can also use the declarative DSL in the Android build system to generate custom build
-versions, for example a debuggable version of your release APK. This examples adds the
-<code>debuggable true</code> property to the <code>release</code> build type in the
-<code>build.gradle</code> file to build an identical debuggable version of the release package. </p>
-
-<pre>
-android {
- buildTypes {
- debugRelease.initWith(buildTypes.release)
- debugRelease {
- debuggable true
- packageNameSuffix '.debugrelease'
- signingConfig signingConfigs.debug
- }
-
- }
- sourceSets.debugRelease.setRoot('src/release')
-}
-</pre>
-
-
-
-
-
-
-<h2 id="debug-inspect">Debugging and Code Inspections</h2>
-<p>Using code inspection tools such as <a href="{@docRoot}tools/help/lint.html">lint</a> is a
-standard part of Android development. Android Studio extends
-<a href="{@docRoot}tools/help/lint.html">lint</a> support with additional
-<a href="{@docRoot}tools/help/lint.html">lint</a> checks and supports Android
-<a href="{@docRoot}tools/debugging/annotations.html">annotations</a> that
-allow you to help detect more subtle code problems, such as null pointer exceptions and resource
-type conflicts. Annotations are added as metadata tags that you attach to variables, parameters,
-and return values to inspect method return values, passed parameters, and local variables and
-fields. </p>
-
-<p>For more information on enabling <a href="{@docRoot}tools/help/lint.html">lint</a> inspections
-and running <a href="{@docRoot}tools/help/lint.html">lint</a>,
-see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.
-For more information about using annotations, see
-<a href="{@docRoot}tools/debugging/annotations.html#annotations">Improving your Code with
-Annotations</a>. </p>
-
-<p>In addition to code inspection, Android Studio provides an integrated
-<a href="{@docRoot}tools/studio/index.html#mem-cpu">memory and CPU monitor</a> view so you
-can more easily monitor your app's performance and memory usage to track CPU usage, find
-deallocated objects, locate memory leaks, and track the amount of memory the connected device is
-using. </p>
-
-
-
-<h2 id="resource-optimization">Resource Optimization </h2>
-<p>After importing and building your app, Android Studio supports several
-<a href="http://www.gradle.org">Gradle</a>-based properties to help you minimize your app's
-resource utilization. </p>
-
-
-<h3>Resource shrinking</h3>
-<p>In Android Studio, resource shrinking enables the automatic removal of unused resources from
-your packaged app and also removes resources from library dependencies if the resources are not
-actually used by your app.</p>
-
-<p>Use the <code>shrinkResources</code> attribute in the <code>buildType</code> block in your
-<code>build.gradle</code> file to enable resource shrinking. For example, if your application is
-using <a href="{@docRoot}google/play-services/index.html">Google Play services</a>
-to access Google Drive functionality, and you are not currently using
-<a href="{@docRoot}google/play-services/plus.html">Google+ Sign In</a>, then
-this setting removes the various drawable assets for the <code>SignInButton</code> buttons. </p>
-
-<p class="note"><strong>Note:</strong> Resource shrinking works in conjunction with code shrinking
-tools, such as <a href="{@docRoot}tools/help/proguard.html">ProGuard</a>. </p>
-
-<p>To enable resource shrinking, update the <code>buildTypes</code> block in the
-<code>build.gradle</code> file to include <code>minifyEnabled true</code>,
-<code>shrinkResources true</code>, and <code>proguardFiles</code> settings as shown in the
-following example <a href="http://www.gradle.org">Gradle</a> build file.</p>
-
-<pre>
-android {
- ...
-
- buildTypes {
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile('proguard-android.txt'),
- 'proguard-rules.pro'
- }
- }
-}
-</pre>
-
-
-
-<h3>Filtering language resources</h3>
-<p>Use the <code>resConfig</code> attribute in your <code>build.gradle</code> file
-to filter the locale resources included in your packaged app. This filtering can be especially
-useful when library dependencies such as <code>appcompat-v7</code> and other libraries such as
-<code>google-play-services_lib</code> are included in your app. </p>
-
-<p>The following example limits the locale resources to three language settings: <code>en</code>,
-<code>de</code>, and <code>es</code>:</p>
-
-<pre>
-apply plugin: 'android'
-
-android {
- compileSdkVersion 22
- buildToolsVersion "22.0.1"
-
- defaultConfig {
- minSdkVersion 8
- targetSdkVersion 22
- versionCode 1
- versionName "1.0"
- resConfigs "en", "de", "es" //Define the included language resources.
- }
-...
-
-</pre>
-
-
-
-<h4>Filtering bundled resources</h4>
-<p>You can also use the <code>resConfig</code> build setting to limit the bundled resources
-in any resource folder. For example, you could also add <code>resConfigs</code>
-settings for density folders, such as <code>mdpi</code> or <code>hdpi</code> to limit the drawable
-resources that are packaged in your <code>APK</code> file. This example limits the app's
-bundled resources to medium-density (MDPI) and high-density (HDPI) resources. </p>
-
-<pre>
-android {
- defaultConfig {
- ...
- resConfigs "mdpi", "hdpi"
- }
-}
-</pre>
-
-For more information about screen and resource densities, see
-<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>
-and <a href="{@docRoot}training/multiscreen/screendensities.html">Supporting Different Densities</a>.
-
-
-<h3>Resource merging </h3>
-<p>With Android Studio, identical resources, such as copies of launcher and menu icons, may end up
-in different resource folders throughout your app. To reduce resource duplication and improve
-the performance of your app, Android Studio merges resources with an identical resource name, type,
-and qualifier into a single resource and passes the single, merged resource to the Android Asset
-Packaging Tool (AAPT) for distribution in the APK file. </p>
-
-<p>The resource merging process looks for identical resources in the following <code>/res/</code>
-folders: </p>
-<ul>
- <li>AAR bundles of library project dependencies</li>
- <li><code>src/main/</code> </li>
- <li><code>src/<em>productFlavor</em>/</code> </li>
- <li><code>src/<em>buildType</em>/</code> </li>
-</ul>
-
-<p>Identical resources are merged in the following low to high priority order: </p>
-<pre>
-dependencies --> src/main/ --> src/productFlavor/ --> src/buildType/
-</pre>
-
-<p>For example, if the <code>res/ic_menu.png</code> file is included in both the
-<code>src/main/res/</code> and <code>src/productFlavor/res/</code> folders, the resources are merged
-so only the file with the higher priority, in this case the <code>src/productFlavor/res/</code>
-file, is included in the APK file. </p>
-
-<p class="note"><strong>Note:</strong> Identical resources in the same source set are not merged
-and instead generate a resource merge error. This can happen if the <code>sourceSet</code> property
-in the <code>build.gradle</code> file is used to define multiple source sets, for example
-<code>src/main/res/</code> and <code>src/main/res2/</code>, and these folders contain identical
-resources. </p>
-
-
-
-
-<h2 id="signing">App Signing and ProGuard </h2>
-<p>Based on the imported Eclipse ADT app settings, Android Studio automatically sets up your app
-signing and maintains any ProGuard settings. </p>
-
-<h3>App Signing</h3>
-<p>If your app used a debug certificate in Eclipse ADT, Android Studio continues to reference that
-certificate. Otherwise, the <code>debug</code> configuration uses the Android Studio generated
-debug keystore, with a known password and a default key with a known password located in
-<code>$HOME/.android/debug.keystore</code>. The <code>debug</code> build type is set to use this
-debug <code>SigningConfig</code> automatically when you run or debug your project
-from Android Studio. </p>
-
-<p>In release mode, Android Studio applies the release certificate used in Eclipse ADT. If no
-release certificate was located during the import process, add the release signing configuration to
-the <code>build.gradle</code> file or use the <strong> Build > Generate Signed APK</strong> menu
-option to open the Generate Signed APK Wizard. For more information about signing your app, see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>. </p>
-
-
-<h3>ProGuard</h3>
-<p>If the <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> option is specified in the
-<code>project.properties</code> file in the Eclipse ADT project, Android Studio imports the
-<a href="{@docRoot}tools/help/proguard.html">ProGuard</a> files and adds the
-<a href="{@docRoot}tools/help/proguard.html">ProGuard</a> settings to the
-<code>build.gradle</code> file. <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> is
-supported through the <code>minifyEnabled</code> property as shown in this example. </p>
-
-<pre>
-android {
- buildTypes {
- release {
- minifyEnabled true
- proguardFile getDefaultProguardFile('proguard-android.txt')
- }
- }
-
- productFlavors {
- flavor1 {
- }
- flavor2 {
- proguardFile 'some-other-rules.txt'
- }
- }
-}
-
-</pre></p>
-
-
-
-
-<h2 id="support-lib">Android Support Repository and Google Play services Repository</h2>
-<p>While Eclipse ADT uses the Android <a href="{@docRoot}tools/support-library/index.html">Support
-Library</a> and Google Play services Library, Android Studio replaces these libraries during the
-import process with the Android Support Repository and Google Repository to maintain
-compatible functionality and support new Android features. Android Studio adds these dependencies
-as Maven dependencies using the known Maven coordinates, so these dependencies do not require
-manual updates. </p>
-
-<p>In Eclipse, in order to use a
-<a href="{@docRoot}tools/support-library/index.html">Support Library</a>, you must modify your
-project's classpath dependencies within your development environment for each
-<a href="{@docRoot}tools/support-library/index.html">Support Library</a> you want to use. In
-Android Studio, you no longer need to copy library sources into your
-own projects, you can simply declare a dependency and the library is automatically downloaded and
-merged into your project. This includes automatically merging in resources, manifest entries,
-<a href="{@docRoot}tools/help/proguard.html">ProGuard</a> exclusion rules, and custom lint rules
-at build time. </p>
-
-<p>Android Studio also supports binary library Android ARchives (AARs). AARs are a library project's
-main output as a combination of compiled code (as a jar file and/or native .so files) and
-resources (manifest, res, assets). <p/>
-
-
-<h2 id="app-package">App Packaging</h2>
-<p>The Android build system introduces the use of the <code>applicationId</code> attribute to
-uniquely identify application packages for publishing. The application ID is set in the
-<code>android</code> section of the <code>build.gradle</code> file. </p>
-
-<p>The <code>applicationId</code> is specified only in your <code>build.gradle</code> file, and
-not in the
-<code>AndroidManifest.xml</code> file. The Gradle-based build system enables you
-to uniquely identify different packages for each build variant based on product flavors and build
-types. You can also add the <code>applicationIdSuffix</code> property to the build type in the
-<code>build.gradle</code> file to append an identifier, such as '.debug', to the application ID
-generated for each product flavor. </p>
-
-
-
-<h2 id="software-updates">Software Updates</h2>
-<p>Android Studio provides several levels of update and maintenance to help you keep Android Studio
-up-to-date based on your code-level preference: </p>
-
-<ul>
- <li><strong>Canary channel</strong>: Canary builds provide bleeding edge releases and are updated
- about weekly. These builds do get tested, but are still subject to bugs, as these are
- early releases. This is not recommended for production.</li>
- <li><strong>Dev channel</strong>: Dev builds are canary builds that passed initial testing and
- usage. They are updated roughly bi-weekly or monthly.</li>
- <li><strong>Beta channel</strong>: Beta builds provide beta-quality releases for final testing
- and feedback before a production release.</li>
- <li><strong>Stable channel</strong>: Stable builds provide stable, production-ready release
- versions.</li>
-</ul>
-
-
-
-<h2 id="version-control">Version Control </h2>
-<p>Eclipse ADT supports version control through the use of plugins, such as the EGit and Subversive
-plug-ins. </p>
-
-<p>Android Studio supports a variety of version control systems (Git, GitHub, CVS, Mercurial,
-Subversion, and Google Cloud) so version control operations can continue from within Android
-Studio. </p>
-
-<p>After importing your Eclipse ADT app into Android Studio, use the
-Android Studio <em>VCS</em> menu options to enable VCS support for the desired version control
-system, create a repository, import the new files into version control, and perform other version
-control operations. </p>
-
-<p class="note"><strong>Note:</strong> You can also use the
-<strong>File > Setting > Version Control</strong> menu option to setup and modify the version
-control settings. </p>
-
-<h3>Files to ignore </h3>
-<p>A number of Android Studio files are typically not added to version control as these are
-temporary files or files that get overwritten with each build. These files are listed in
-an exclusion file, such as <code>.gitignore</code>, for the project and each app module.
-Typically, the following files are excluded from version control: </p>
-
-<ul>
- <li>.gradle </li>
- <li>/local.properties </li>
- <li>/.idea/workspace.xml </li>
- <li>/.idea/libraries </li>
- <li>.DS_Store</li>
- <li>/build </li>
- <li>/captures </li>
-</ul>
diff --git a/docs/html/tools/studio/index.jd b/docs/html/tools/studio/index.jd
deleted file mode 100644
index b3ed82d..0000000
--- a/docs/html/tools/studio/index.jd
+++ /dev/null
@@ -1,396 +0,0 @@
-page.title=Android Studio Overview
-page.image=images/cards/card-android-studio-overview_16x9_2x.jpg
-page.metaDescription=The basics of working with Android Studio, from projects to build and performance.
-page.tags=studio,sdk,tools,firstapp
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#project-structure">Project Structure</a></li>
- <li><a href="#build-system">Gradle Build System</a></li>
- <li><a href="#debug-perf">Debug and Profile Tools</a></li>
- </ol>
-
-
-<a class="button" href="{@docRoot}sdk/index.html" style="margin:15px">
- Get Android Studio
-</a>
-
-</div>
-</div>
-
-
-<p>Android Studio is the official IDE for Android app development, based on
-<a class="external-link" href="https://www.jetbrains.com/idea/" target=
-"_blank">IntelliJ IDEA</a>. On top of IntelliJ's powerful code editor and
-developer tools, Android Studio offers even more features that enhance your
-productivity when building Android apps, such as:</p>
-
-
-<ul>
- <li>A flexible Gradle-based build system</li>
- <li>Build variants and multiple APK file generation</li>
- <li>Code templates to help you build common app features</li>
- <li>A rich layout editor with support for drag and drop theme editing</li>
- <li>Lint tools to catch performance, usability, version compatibility, and other problems</li>
- <li>Code shrinking with ProGuard and resource shrinking with Gradle</li>
- <li>Built-in support for
- <a href="http://developers.google.com/cloud/devtools/android_studio_templates/">Google Cloud Platform</a>,
- making it easy to integrate Google Cloud Messaging and App Engine</li>
-</ul>
-
-<p>This page provides an introduction to basic Android Studio features. For
-more detailed guides to using Android Studio, start by browsing pages in the
-<a href="{@docRoot}tools/workflow/index.html">Workflow</a> section.</p>
-
-<p>For a summary of the latest changes, see the <a href=
-"{@docRoot}tools/revisions/studio.html">Android Studio Release Notes</a>.</p>
-
-
-
-<h2 id="project-structure">Project Structure</h2>
-
-<div class="figure" style="width:230px">
-<img src="{@docRoot}images/tools/studio/studio-project-files.png" width="230" />
-<p class="img-caption"><strong>Figure 1.</strong> The project files in Android
-view.</p>
-</div>
-
-<p>Each project in Android Studio contains one or more modules with source code
-files and resource files. Different types of modules include:</p>
-
-<ul>
-<li>Android app modules</li>
-<li>Test modules</li>
-<li>Library modules</li>
-<li>App Engine modules</li>
-</ul>
-
-<p>By default, Android Studio displays your project files in the
-<em>Android</em> project view, as shown in figure 1.
-This view is organized by modules to
-provide quick access to the key source files of your
-project.</p>
-
-<p>All the build files are visible at the top level
-under <strong>Gradle Scripts</strong> and each app module
-contains the following three elements:</p></p>
-<ul>
- <li><b>manifests</b>: Manifest files.</li>
- <li><b>java</b>: Source code files.</li>
- <li><b>res</b>: Resource files.</li>
-</ul>
-
-<p>The Android project structure on disk differs
-from this flattened representation. To see the actual file structure of the
-project, select <strong>Project</strong> from the <strong>Project</strong>
-drop-down (in figure 1, it's showing as <strong>Android</strong>).</p>
-
-<p>You can also customize the view of the project files to focus on specific
-aspects of your app development. For example, selecting the
-<strong>Problems</strong> view of your project displays links to the source
-files containing any recognized coding and syntax errors, such as missing an
-XML element closing tag in a layout file.</p>
-
-<p>For more information, see
-<a class="external-link" href="http://confluence.jetbrains.com/display/IntelliJIDEA/Project+Organization">IntelliJ project organization</a>
-and <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.</p>
-
-
-<h2 id="build-system">Gradle Build System</h2>
-
-<p>Android Studio uses Gradle as the foundation of the build system, with
-more Android-specific capabilities provided by the <a
-href="{@docRoot}tools/revisions/gradle-plugin.html">Android Plugin for
-Gradle</a>. This build system
-runs as an integrated tool from the Android Studio menu and independently from
-the command line. You can use the features of the build system to:</p>
-
-<ul>
- <li>Customize, configure, and extend the build process.</li>
- <li>Create multiple APKs for your app with different features using the same project and
- modules.</li>
- <li>Reuse code and resources across source sets.</li>
-</ul>
-
-<p>The flexibility of Gradle enables you to achieve all of this without
-modifying your app's core source files. To build an Android Studio project, see
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running
-from Android Studio</a>. To configure custom build settings in an Android
-Studio project, see <a href=
-"{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
-Builds</a>.</p>
-
-
-
-
-<h2 id="debug-perf">Debug and Profile Tools</h2>
-
-<p>Android Studio assists you in debugging and improving the
-performance of your code, including inline debugging and
-performance analysis tools.</p>
-
-
-<h3 id="inline-debug">Inline debugging</h3>
-
-<p>Use inline debugging to enhance your code walk-throughs in the debugger view
-with inline verification of references, expressions, and variable values.
-Inline debug information includes:</p>
-
-<ul>
- <li>Inline variable values</li>
- <li>Referring objects that reference a selected object </li>
- <li>Method return values</li>
- <li>Lambda and operator expressions</li>
- <li>Tool tip values</li>
-</ul>
-
-<p>To enable inline debugging, in the <em>Debug</em> window click the Settings icon
-<img src="{@docRoot}images/tools/studio-debug-settings-icon.png"/> and select the
-check box for <strong>Show Values In Editor</strong>.</p>
-
-<h3 id="mem-cpu">Memory and CPU monitor</h3>
-<p>Android Studio provides a memory and CPU monitor view so you can more easily monitor your
-app's performance and memory usage to track CPU usage, find deallocated objects, locate memory
-leaks, and track the amount of memory the connected device is using. With your app running on a
-device or emulator, click the <strong>Android</strong> tab in the lower left corner of the
-runtime window to launch the Android runtime window. Click the <strong>Memory</strong> or
-<strong>CPU</strong> tab. </p>
-
-<img src="{@docRoot}images/tools/studio-memory-monitor.png"
-srcset="{@docRoot}images/tools/studio-memory-monitor2x.png 2x" width"635" height="171" alt="" />
- <p class="img-caption"><strong>Figure 2.</strong> Monitor memory and CPU usage.</p>
-
-<h4 id="heap-dump">Heap dump </h4>
-<p>When you're monitoring memory usage in Android Studio you can, at the same time, initiate
-garbage collection and dump the Java heap to a heap snapshot in an Android-specific HPROF binary
-format file. The HPROF viewer displays classes, instances of each class, and a reference tree to
-help you track memory usage and find memory leaks. </p>
-
-<img src="{@docRoot}images/tools/studio-hprof-viewer.png" alt="" />
- <p class="img-caption"><strong>Figure 3.</strong> HPROF viewer with heap dump.</p>
-
-<p>To create a snapshot of the Android app heap memory, click the
-Dump Java Heap icon (<img src="{@docRoot}images/tools/studio-dump-heap-icon.png" style="vertical-align:bottom;margin:0;height:17px"/>)
-in the Memory Monitor. Android Studio creates the heap snapshot file with the filename
-<code>Snapshot-yyyy.mm.dd-hh.mm.ss.hprof</code>
-in the <em>Captures</em> tab. Double-click the heap snapshot file to open the HPROF viewer.</p>
-
-<p>To convert a heap dump to standard HPROF format in Android Studio, right-click a heap
-snapshot in the <em>Captures</em> view and select <strong>Export to standard .hprof</strong>. </p>
-
-
-
-<h4 id="alloc-tracker">Allocation tracker </h4>
-<p>Android Studio allows you to track memory allocation as it monitors memory use. Tracking memory
-allocation allows you to monitor where objects are being allocated when you perform certain actions.
-Knowing these allocations enables you to adjust the method
-calls related to those actions to optimize your app's performance and memory use. </p>
-
-<img src="{@docRoot}images/tools/studio-allocation-tracker.png" alt="" />
- <p class="img-caption"><strong>Figure 4.</strong> Allocation tracker.</p>
-
-<p>For information about tracking and analyzing allocations, see
- <a href="{@docRoot}/tools/help/am-memory.html#tracking">Memory Monitor</a>.
-</p>
-
-
-<h3>Data file access</h3>
-<p>The Android SDK tools, such as <a href="{@docRoot}tools/help/systrace.html">Systrace</a>,
-<a href="{@docRoot}tools/help/logcat.html">logcat</a>, and
-<a href="{@docRoot}tools/help/traceview.html">Traceview</a>, generate performance and debugging
-data for detailed app analysis.</p>
-
-<p>To view the available generated data files, click <strong>Captures</strong> in the left
-corner of the runtime window. In the list of the generated files, double-click a file to view
-the data. Right-click any <code>.hprof</code> files to convert them to a standard
-<a href="{@docRoot}tools/help/hprof-conv.html"><code>.hprof</code> </a> file format.</p>
-
-
-<h3>Code inspections</h3>
-<p>In Android Studio, the configured <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a>
-and other IDE inspections run automatically whenever you compile your program. In addition to the
-configured {@code lint} checks, additional
-<a class="external-link" href="https://www.jetbrains.com/idea/help/inspection-basics.html?search=inspection"
-target="_blank">IntelliJ code inspections</a> and annotation validation run to streamline code
-review.</p>
-
-
-<p>Android Studio enables several <code>lint</code> checks
-to ensure:
-<ul>
- <li><code> Cipher.getInstance()</code> is used with safe values</li>
- <li>In custom Views, the associated declare-styleable for the custom view uses the same
- base name as the class name</li>
- <li>Security check for fragment injection</li>
- <li>Where ever property assignment no longer works as expected</li>
- <li>Gradle plugin version is compatible with the SDK</li>
- <li>Right to left validation </li>
- <li>Required API version</li>
- <li>many others</li>
-</ul>
-
-
-<p>Hovering over an inspection error displays the full issue explanation inline for easy error
-resolution. There is also a helpful hyperlink at the end of the error message for additional
-error information.</p>
-
-<p>With Android Studio, you can also run {@code lint} inspections for a specific build variant, or
-for all build variants. You can configure the {@code lint} inspections that run by adding a
-<code>lintOptions</code> property to the Android settings in the <code>build.gradle</code>
-file. </p>
-
-<pre>
-android {
- lintOptions {
- // set to true to turn off analysis progress reporting by lint
- quiet true
- // if true, stop the gradle build if errors are found
- abortOnError false
- // if true, only report errors
- ignoreWarnings true
- }
-</pre>
-
-
-<p>You can also manage inspection profiles and configure inspections within Android Studio.
-Choose <strong>File > Settings ></strong>, expand the <strong>Editor</strong> options,
-and select <strong>Inspections</strong>.
-The <em>Inspection Configuration</em> page appears with the supported inspections.</p>
-<p><img src="{@docRoot}images/tools/studio-inspections-config.png" alt="" /> </p>
-<p class="img-caption"><strong>Figure 5.</strong> Configure inspections.</p>
-
-<p class="note"><strong>Note:</strong> To change the behavior of specific
-inspection notifications, change the inspection severity, for example from <em>warning</em>
-to <em>error</em>. </p>
-
-
-<p>To manually run inspections in Android Studio, choose <strong>Analyze > Inspect Code</strong>.
-The <em>Inspections Scope</em> dialog appears so you can specify the desired inspection profile and scope.</p>
-
-
-<p>For more information, see
-<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with {@code lint}</a>
-and <a href="{@docRoot}tools/help/lint.html">lint tool</a>.</p>
-
-
-
-<h3 id="annotations">Annotations in Android Studio</h3>
-<p>Android Studio supports annotations for variables, parameters, and return values to help you
-catch bugs, such as null pointer exceptions and resource type conflicts. The
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a> packages
-the {@link android.support.annotation Support-Annotations} library
-in the Android Support Repository for use with Android
-Studio. Android Studio validates the configured annotations during code inspection. </p>
-
-<p>To add annotations to your code in Android Studio, first add a dependency for the
-{@link android.support.annotation Support-Annotations} library:</p>
-<ol>
- <li>Select <strong>File > Project Structure</strong>.</li>
- <li>In the <em>Project Structure</em> dialog, select the desired module, click the
- <strong>Dependencies</strong> tab. </li>
- <li>Click the <img src="{@docRoot}images/tools/studio-add-icon.png"/> icon to include a
- <strong>Library dependency</strong>.</li>
- <li>In the <em>Choose Library Dependency</em> dialog, select <code>support-annotations</code> and
- click <strong>Ok</strong>. </li>
-</ol>
-
-<p>The <code>build.gradle</code> file is updated with the <code>support-annotations</code>
-dependency.</p>
-
-<p>You can also manually add this dependency to your <code>build.gradle</code> file, as shown in
-the following example. </p>
-
-<pre>
-dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:22.0.0'
- <strong>compile 'com.android.support:support-annotations:22.0.0'</strong>
-}
-</pre>
-
-
-
-<h4>Inferring nullability</h4>
-<p>A nullability analysis scans the contracts throughout the method hierarchies in your code to
-detect:</p>
-<ul>
- <li>Calling methods that can return null </li>
- <li>Methods that should not return null </li>
- <li>Variables, such as fields, local variables, and parameters, that can be null </li>
- <li>Variables, such as fields, local variables, and parameters, that cannot hold a null value </li>
-</ul>
-
-<p>The analysis then automatically inserts the appropriate null annotations in the detected
-locations. </p>
-
-<p>To run a nullability analysis in Android Studio,
-select the <strong>Analyze > Infer Nullity</strong>
-menu option. Android Studio inserts the Android
-{@link android.support.annotation.Nullable @Nullable} and
-{@link android.support.annotation.NonNull @NonNull} annotations in detected locations
-in your code. After running a null analysis, it's good practice to verify the injected
-annotations.</p>
-
-<p class="note"><strong>Note:</strong> The nullability analysis may insert the IntelliJ
-<a class="external-link" href="https://www.jetbrains.com/idea/help/-nullable-and-notnull-annotations.html?search=annotations">
-<code>@Nullable</code></a> and
-<a class="external-link" href="https://www.jetbrains.com/idea/help/-nullable-and-notnull-annotations.html?search=annotations">
-<code>@NotNull</code></a> annotations instead of the Android null annotations. When running
-a null analysis, manually search and replace any IntelliJ annotations or include
-<code>com.intellij:annotations:12.0</code> as a compile dependency in your
-<code>build.gradle</code> file. This example includes the IntelliJ annotations 12.0 library as a
-dependency in the <code>build.gradle</code> file:
-
-<pre>
-dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:22.0.0'
- compile 'com.android.support:support-annotations:22.0.0'
- <strong>compile 'com.intellij:annotations:12.0'</strong>
-}
-</pre>
-
-</p>
-
-
-<h4>Validating annotations</h4>
-<p>You can also manually add nullability, resource, and enumerated annotations throughout your code
-to perform validations for a variety of reference values, such as
-<a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a> resources,
-<a href="{@docRoot}guide/topics/resources/drawable-resource.htm"><code>Drawable</code></a>
-resources,
-<a href="{@docRoot}reference/android/graphics/Color.html"><code>Color</code></a> resources,
-and enumerated constants. </p>
-
-<p>Run <strong>Analyze > Inspect Code</strong> to validate the configured annotations. </p>
-
-<p>For a complete list of the supported annotations, either use the auto-complete feature to display
-the available options for the <code>import android.support.annotation</code> statement or
-view the contents of the
-{@link android.support.annotation Support-Annotations}
-library. </p>
-
-<p>For more details about Android annotations, see
-<a href="{@docRoot}tools/debugging/annotations.html">Improving Code Inspection with Annotations</a>.
-
-<h3>Log messages</h3>
-<p>When you build and run your app with Android Studio, you can view adb and device log messages
-(logcat) by clicking <strong>Android</strong> at the bottom of the window.</p>
-
-<p>If you want to debug your app with the
-<a href="{@docRoot}tools/help/monitor.html">Android Debug Monitor</a>, you can launch it by
-clicking <strong>Monitor</strong>
-<img src="{@docRoot}images/tools/monitor-studio.png" style="vertical-align:bottom;margin:0;height:19px"/>
-in the toolbar. The Debug Monitor is where you can find the complete set of
-<a href="{@docRoot}tools/debugging/ddms.html">DDMS</a> tools for profiling your app,
-controlling device behaviors, and more. It also includes the Hierarchy Viewer tools to help
-<a href="{@docRoot}tools/debugging/debugging-ui.html"> optimize your layouts</a>.</p>
-
-
-
-
-
diff --git a/docs/html/tools/studio/studio-config.jd b/docs/html/tools/studio/studio-config.jd
deleted file mode 100644
index 88835d0..0000000
--- a/docs/html/tools/studio/studio-config.jd
+++ /dev/null
@@ -1,189 +0,0 @@
-page.title=Configuration
-page.metaDescription=Learn about the Android Studio configuration.
-page.tags=studio, configuration
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#sdk-mgr">SDK Manager</a></li>
- <li><a href="#update-channel">Update Channels</a></li>
- <li><a href="#proxy">Proxy Settings</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}sdk/installing/index.html?pkg=studio">Installing Android Studio</a></li>
- <li><a href="{@docRoot}tools/workflow/index.html">Workflow</a></li>
- <li><a href="{@docRoot}sdk/installing/studio-features.html">Build System</a></li>
- </ol>
-
-</div>
-</div>
-
-
-<p>Android Studio provides wizards and templates that verify your system
-requirements, such as the Java Development Kit (JDK) and available RAM, and configure default
-settings, such as an optimized default Android Virtual Device (AVD) emulation and updated system
-images. This document describes additional configuration settings you may want to use to
-customize your use of Android Studio. </p>
-
-<p>For specific documentation about emulator and device setup and use, see
-<a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>,
-<a href="{@docRoot}tools/device.html">Using Hardware Devices</a>, and
-<a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a>. </p>
-
-
-<h2 id="sdk-mgr">SDK Manager</h2>
-<p>After the initial Android Studio installation and setup, use the
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to verify and update the tools,
-platforms, packages, and other components used by your apps. You can also use the
-<strong>File</strong> > <strong>Settings</strong> >
-<strong>Appearance & Behavior</strong> > <strong>System Settings</strong> >
-<strong>Updates</strong> to configure the SDK Manager to automatically prompt whenever updates are
-available. </p>
-
-<p class="note"><strong>Note:</strong> You can also customize the <code>build.gradle</code> file
-so each app uses a specific build chain and compilation options. For more information see,
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>. </p>
-
-
-
-<h2 id="update-channel">Update channels</h2>
-<p>Android Studio provides four update channels to keep Android Studio up-to-date based on your
-code-level preference:
-<ul>
- <li><strong>Canary channel</strong>: Canary builds provide bleeding edge releases, updated
- about weekly. While these builds do get tested, they are still subject to bugs, as we want
- people to see what's new as soon as possible. This is not recommended for production.</li>
- <li><strong>Dev channel</strong>: Dev builds are hand-picked older canary builds that survived
- the test of time. They are updated roughly bi-weekly or monthly.</li>
- <li><strong>Beta channel</strong>: Beta builds are used for beta-quality releases before a
- production release.</li>
- <li><strong>Stable channel</strong>: Used for stable, production-ready versions.</li>
-</ul>
-</p>
-
-<p>By default, Android Studio uses the <em>Stable</em> channel. Use
-<strong>File > Settings > Appearance & Behavior System Settings > Updates</strong> to change your
-channel setting. </p>
-
-
-
-<h2 id="proxy">Proxy Settings</h2>
-<p>Proxies serve as intermediary connection points between HTTP clients and web servers that add
-security and privacy to internet connections.</p>
-
-<p>To support running Android Studio behind a firewall, set the proxy settings for the
-Android Studio IDE and the SDK Manager. Use the Android Studio IDE HTTP Proxy settings page to set
-the HTTP proxy settings for Android Studio. The SDK Manager has a separate HTTP Proxy settings
-page.</p>
-
-<p>When running the Android Plugin for Gradle from the command line or on machines where
-Android Studio is not installed, such as continuous integration servers, set the proxy settings
-in the Gradle build file.</p>
-
-<p class="note"><strong>Note:</strong> After the initial installation of the Android Studio bundle,
-Android Studio can run with internet access or off-line. However, Android Studio requires an
-internet connection for Setup Wizard synchronization, 3rd-party library access, access to remote
-repositories, Gradle initialization and synchronization, and Android Studio version updates.</p>
-
-
-<h3>Setting up the Android Studio Proxy</h3>
-<p>Android Studio supports HTTP proxy settings so you can run Android Studio behind a firewall or
-secure network. To set the HTTP proxy settings in Android Studio:</p>
-<ol>
- <li>From the main menu choose <strong>File > Settings > Appearance & Behavior -- System
- Settings -- HTTP Proxy</strong>.
-
-<li>In Android Studio, open the IDE Settings dialog.
- <ul>
- <li>On Windows and Linux, choose
- <strong>File > Settings > IDE Setting -- HTTP Proxy</strong>. </li>
- <li>On Mac, choose
- <strong>Android Studio > Preferences > IDE Setting -- HTTP Proxy</strong>. </li>
- </ul>
- The HTTP Proxy page appears.</li>
- <li>Select <strong>auto-detection</strong> to use an auto-configuration URL to configure the
- proxy settings or <strong>manual</strong> to enter each of the settings. For a detailed explanation
- of these settings, see
- <a href="https://www.jetbrains.com/idea/help/http-proxy.html">HTTP Proxy</a>. </li>
- <li>Click <strong>Apply</strong> to enable the proxy settings. </li>
-</ol>
-
-<h3>Android Plugin for Gradle HTTP proxy settings</h3>
-When running the Android Plugin from the command line or on machines where Android Studio is not
-installed, set the Android Plugin for Gradle proxy settings in the Gradle build file.</p>
-
-<p>For application-specific HTTP proxy settings, set the proxy settings in the
-{@code build.gradle} file as required for each application module.</p>
-<pre>
-apply plugin: 'com.android.application'
-
-android {
- ...
-
- defaultConfig {
- ...
- systemProp.http.proxyHost=proxy.company.com
- systemProp.http.proxyPort=443
- systemProp.http.proxyUser=userid
- systemProp.http.proxyPassword=password
- systemProp.http.auth.ntlm.domain=domain
- }
- ...
-}
-</pre>
-
-
-
-<p>For project-wide HTTP proxy settings, set the proxy settings in the
-<code>gradle/gradle.properties</code> file. </p>
-
-<pre>
-# Project-wide Gradle settings.
-...
-
-systemProp.http.proxyHost=proxy.company.com
-systemProp.http.proxyPort=443
-systemProp.http.proxyUser=username
-systemProp.http.proxyPassword=password
-systemProp.http.auth.ntlm.domain=domain
-
-systemProp.https.proxyHost=proxy.company.com
-systemProp.https.proxyPort=443
-systemProp.https.proxyUser=username
-systemProp.https.proxyPassword=password
-systemProp.https.auth.ntlm.domain=domain
-
-...
-</pre>
-
-
-<p>For information about using Gradle properties for proxy settings, see the
- <a href="http://www.gradle.org/docs/current/userguide/build_environment.html">Gradle User Guide</a>.</p>
-
-<p class="note"><strong>Note:</strong> When using Android Studio, the settings in the Android
-Studio IDE HTTP proxy settings page override the HTTP proxy settings in the
-<strong>gradle.properties</strong> file.</p>
-
-
-
-<h3>SDK Manager HTTP Proxy Settings </h3>
-<p>SDK Manager proxy settings enable proxy internet access for Android package and library
-updates from SDK Manager packages. </p>
-
-<p>To set the SDK Manager settings for proxy internet access, start the SDK Manager and open the
-SDK Manager page. </p>
-
-<ul>
- <li>On Windows, select <strong>Tools > Options</strong> from the menu bar. </li>
- <li>On Mac and Linux, choose <strong>Tools > Options</strong> from the system menu bar. </li>
- </ul>
-
-<p>The Android SDK Manager page appears. Enter the settings and click <strong>Apply</strong>. </p>
-
-
-
diff --git a/docs/html/tools/studio/studio-features.jd b/docs/html/tools/studio/studio-features.jd
deleted file mode 100644
index 080a124..0000000
--- a/docs/html/tools/studio/studio-features.jd
+++ /dev/null
@@ -1,340 +0,0 @@
-page.title=Android Studio Features
-page.image=images/cards/card-studio-modules_crop_2x.png
-page.metaDescription=A quick look at Android Studio features that make your work faster.
-page.tags=studio, tools, sdk
-meta.tags="studio"
-
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#trans-editor">Translations Editor</a></li>
- <li><a href="#git-samples">Android Code Samples on GitHub</a></li>
- <li><a href="#template-support">Expanded Template and Form Factor Support</a></li>
- <li><a href="#project-settings">Android Studio and Project Settings</a></li>
- <li><a href="#finger-print">Fingerprint Support</a></li>
- <li><a href="#dev-services">Developer Services</a></li>
- <li><a href="#private-res">Public and Private Resources</a></li>
- <li><a href="#support-apis">Editor Support for the Latest Android APIs</a></li>
- <li><a href="#test-module">Test APK Module</a></li>
- </ol>
-
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}tools/workflow/index.html">Workflow</a></li>
- <li><a href="{@docRoot}sdk/installing/studio-build.html">Build System</a></li>
- <li><a href="{@docRoot}sdk/installing/studio-tips.html">Android Studio Tip & Tricks</a></li>
- </ol>
-
-</div>
-</div>
-
-
-<p>If you're new to Android Studio or exploring recent updates, this
-page provides an introduction to some key Android Studio features.</p>
-
-<p>For specific Android Studio how-to documentation, see the pages in the <a href=
-"{@docRoot}tools/workflow/index.html">Workflow</a> section, such as
-<a href="{@docRoot}sdk/installing/create-project.html">Managing Projects from Android Studio</a>
-and
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>. </p>
-
-
-
-<h2 id="trans-editor">Translations Editor</h2>
-<p>If your application supports multiple languages, you need to properly manage your
-translated string resources. The Translations Editor lets you view and update all your string
-resources in one convenient place.</p>
-
-<p>
-Use the Translations Editor to view all your translated resources, modify translations, and add
-new locales. You can provide default values for your resources and mark resources as
-untranslatable. The Translations Editor also marks resources with missing translations in red,
-and provides a link to a page where you can upload resource files and order translation services.
-</p>
-
-<p>For more details on the Translations Editor, see
-<a href="{@docRoot}tools/help/translations-editor.html">Translations Editor</a>.</p>
-
- <img src="{@docRoot}images/tools/studio-translations-editor.png" />
- <p class="img-caption"><strong>Figure 1.</strong> Manage locales and strings in the
- Translations Editor.</p>
-
-<h2 id="git-samples">Android Code Samples on GitHub</h2>
-<p>Clicking <strong>Import Samples</strong> from the <strong>File</strong> menu or <em>Welcome</em>
-page provides seamless access to Google code samples on GitHub.</p>
- <p><img src="{@docRoot}images/tools/studio-samples-githubaccess.png" /></p>
- <p class="img-caption"><strong>Figure 2.</strong> Get code samples from GitHub.</p>
-
-
- <p><img src="{@docRoot}images/tools/studio-sample-in-editor.png" /></p>
- <p class="img-caption"><strong>Figure 3.</strong> Imported code sample.</p>
-
-
-
-<h2 id="template-support">Expanded Template and Form Factor Support</h2>
-<p>Android Studio supports templates for Google Services and expands the available device
-types. </p>
-
- <h4> Android Wear and TV support</h4>
- <p>For easy cross-platform development, the Project Wizard provides templates for
- creating your apps for Android Wear and TV. </p>
- <p><img src="{@docRoot}images/tools/studio-tvwearsupport.png" />
-
- <p class="img-caption"><strong>Figure 4.</strong> Supported form factors.</p>
- <p>During app creation, the Project Wizard also displays an API Level dialog to help you choose
- the best <em>minSdkVersion</em> for your project.</p>
-
-
- <h4> Google App Engine integration (Google Cloud Platform/Messaging)</h4>
- <p>Quick cloud integration. Using Google App Engine to connect to the Google cloud
- and create a cloud end-point is as easy as selecting <em>File > New Module > App Engine Java
- Servlet Module</em> and specifying the module, package, and client names. </p>
- <p><img src="{@docRoot}images/tools/studio-cloudmodule.png" /></p>
- <p class="img-caption"><strong>Figure 5</strong> Google App Engine integration.</p>
-
-
-<h2 id="project-settings">Android Studio and Project Settings</h2>
-<p>Android Studio provides setting dialogs so you can manage the most important Android Studio and
-project settings from the <strong>File > Project Structure</strong> and
-<strong>File > Settings</strong> menus. For example, you can use the
-<strong>File > Project Structure</strong> menu or
-the <code>build.gradle</code> file to update your <code>productFlavor</code> settings.
-Additional settings from the <strong>File > Project Structure</strong> menus include:
-<ul>
- <li>SDK and JDK location </li>
- <li>SDK version </li>
- <li>Gradle and Android Plugin for Gradle versions </li>
- <li>Build tools version </li>
- <li>Multidex setting</li>
- <li><code>buildTypes</code> </li>
- <li>Dependencies </li>
-</ul>
-</p>
-
-<p>Use the <strong>File > Settings</strong> menu to modify the Android Studio or project
-behavior, such a UI themes, system settings, and version control. </p>
-
-
-
-<h2 id="finger-print">Fingerprint Support</h2>
-<p>Android Studio provides the {@code finger} command, allowing you to simulate, and thus validate,
-fingerprint authentication for your app. After you set up your app to accept
-<a href="https://developer.android.com/preview/api-overview.html#authentication">fingerprint
-authentication</a>, your emulator or device should display the fingerprint authentication screen,
-as shown below. </p>
-
- <p><img src="{@docRoot}images/tools/studio-fingerprint.png" /></p>
- <p class="img-caption"><strong>Figure 6</strong> Fingerprint authentication.</p>
-
-<p>Open a terminal session, and telnet to the emulator. For example:</p>
-<pre>
-{@code telnet localhost 5554}
-</pre>
-
-<p>Enter the <code>finger</code> command to simulate finger touch and removal: </p>
-
-<ul>
- <li><code>finger touch <fingerprint-id></code> to simulate a finger touching the sensor</li>
- <li><code>finger remove</code> to simulate finger removal </li>
-</ul>
-
-<p>Your app should respond as if a user touched, and then removed their finger from, the
-fingerprint sensor. </p>
-
-
-<h2 id="dev-services">Developer Services</h2>
-<p>Android Studio supports enabling these developer services in your app: </p>
-<ul>
- <li>Ads using <a href="https://developers.google.com/admob/">AdMob</a></li>
- <li>Analytics <a href="https://developers.google.com/analytics/">Google Analytics</a></li>
- <li>Authentication using <a href="https://developers.google.com/identity/sign-in/android/">Google
- Sign-in</a> </li>
- <li>Notifications using <a href="https://developers.google.com/cloud-messaging/">Google
- Cloud Messaging</a> </li>
-</ul>
-
-<p>Enabling a developer service adds the required dependencies and, when applicable, also modifies
-the related configuration files. To activate the service, you must perform
-service-specific updates, such as loading an ad in the <code>MainActivity</code> class for ad
-display.</p>
-
-<p>To enable an Android developer service, select the <code>File > Project Structure</code>
-menu option and click a service under the <em>Developer Services</em> sub-menu. The service
-configuration page appears. In the service configuration page, click the service check box to
-enable the service and click <strong>OK</strong>. Android Studio updates your library dependencies
-for the selected service and, for Analytics, updates the <code>AndroidManifest.xml</code> and
-other tracker configuration files. You can enable multiple services within the same app. For more
-detail about starting the services, refer to each service's specific activation instructions. </p>
-
-
-
-<h2 id="private-res">Public and Private Resources</h2>
-<p>By default, Android Studio treats all library resources as public: A public library resource is
-available to library clients for use outside the library, and appears in code completion suggestions
-and other resource references. Android Studio also, however, supports the use of private library
-resources. A private library resource can only be used within the source library, and does not
-appear in code completion lists and other resource references. </p>
-
-<p>You cannot explicitly declare a library resource as private. Instead, if you declare any library
-resources as public, Android Studio assumes all the other library resources are private. </p>
-
-<p>An app treats all Android library resources as public unless you explicitly declare at least one
-resource in the library as public. Declaring one public resource causes your app to treat all other,
-undeclared resources in the library as private. </p>
-
-<p class="note"><strong>Note:</strong> Declaring public and private resources requires the
-<a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a> version
-1.3 or higher. </p>
-
-
-<p>To declare a resource as public and set other undeclared resources as private, add a
-<code><public></code> declaration with the resource name and type in the resource file.
-This example shows the public declaration for the <code>mylib_app_name</code> string resource. </p>
-
-<pre>
-<resources>
- <public name="mylib_app_name" type="string"/>
-</resources>
-</pre>
-
-<p>For large numbers of declarations, we recommended that you place the public marker declarations
-in a separate file named <code>public.xml</code>. </p>
-
-<p>To help enforce private resource access, a <a href="{@docRoot}tools/help/lint.html">lint</a>
-warning appears when a client of a library references a private resource. Many Android libraries,
-such as the
-<a href="{@docRoot}tools/support-library/features.html#design">Design Support Library</a> and the
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat Library</a>,
-declare public resources to display only resources that developers can directly reference.
-</p>
-
-<p class="note"><strong>Note:</strong> If your app requires a private resource, copy the
-private resource from the library to the location in your app where it is needed. </p>
-
-<p>When the build system builds an Android Archive (AAR) file, it extracts the
-<code><public></code> resource declarations into a <code>public.txt</code> file, which is
-packaged inside the AAR file next to the <code>R.txt</code> file. The <code>public.txt</code> file
-contains a simple list of the declared public resources, describing their names and types. </p>
-
-<p>For a complete list of the available Android resource types, see
-<a href="http://developer.android.com/guide/topics/resources/available-resources.html">Resource
-Types</a></li> and
-<a href="http://developer.android.com/guide/topics/resources/more-resources.html">More Resource
-Types</a></li>. </p>
-
-
-
-<h2 id="support-apis">Editor Support for the Latest Android APIs</h2>
-<p>Android Studio supports the
-<a href="{@docRoot}design/material/index.html">Material Design</a></li> themes, widgets, and
-graphics, such as shadow layers and API version rendering (showing the layout across different
-UI versions). Also, the drawable XML tags and attributes, such as <code><ripple></code>
-and <code><animated-selector></code>, are supported.</p>
-
-
-
-<h2 id="test-module">Test APK Module</h2>
-<p>Android Studio supports adding a separate <code>test</code> module to your app so you can
-generate a test APK. This <code>test</code> module resides at the same level as your app and
-contains: the tests and instrumentation used to run the test APK on an Android device; an
-<code>Android Manifest.xml</code> file for test APK configuration settings; and, a
-<code>build.gradle</code> file for build settings.</p>
-
-<p>The <code>test</code> module cannot contain a <code>src/androidTest/</code> folder and does
-not support build variants. If you have different product flavors in your main application APK,
-create a different test module for each build variant.</p>
-
-
-<p>To create a test APK module:
-
-<ul>
- <li>Use the <strong>File > New > Module</strong> menu option to create a
- <code>test</code> module consisting of the following directories and files:
- <ul>
- <li><code>./test/</code> </li>
- <li><code>./test/build.gradle</code> </li>
- <li><code>./test/src/main/java/com/android/tests/basic/MainTest.java</code> </li>
- <li><code>./test/src/main/AndroidManifest.xml</code> </li>
- </ul>
- </li>
- <li>In the <code>build.gradle</code> file, add the required properties to the
- <code>android</code> block.
- <ul>
- <li><code>targetProjectPath ':<app name>'</code> specifies the main application APK
- to test. </li>
- <li><code>targetVariant ':<buildType>'</code> specifies the target build type.</li>
- </ul>
- <p>Here is an example of <code>build.gradle</code> file property settings: </p>
-
-<pre>
-android {
- compileSdkVersion 19
- buildToolsVersion = ‘21.1.3’
-
- targetProjectPath ':app'
- targetVariant 'debug'
-}
-</pre>
- </li>
- <li>Define the instrumentation entries in the manifest file.
- <p>Here is an example of <code><instrumentation></code> settings in the manifest file: </p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.tests.basic.test">
-
- <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16" />
-
- <application>
- >uses-library android:name="android.test.runner" />
- </application>
-
- <instrumentation android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.android.tests.basic"
- android:handleProfiling="false"
- android:functionalTest="false"
- android:label="Tests for com.android.tests.basic"/>
-</manifest<
-</pre>
-
-<p class="note"><strong>Note:</strong> The <code>targetPackage</code> in the instrumentation
-settings specifies the package of the test variant. </p>
-
- </li>
- <li>In the <code>build.gradle</code> file for the tested app, include additional artifacts
- that the test APK requires, such as the <code> classes.jar</code> file, by adding the
- {@code publishNonDefault} property to the {@code Android} block, and assigning that property
- a value of {@code true}.
- <p>Here is an example of the <code>build.gradle</code> file that includes additional
- artifacts: </p></li>
-<pre>
-android {
- compileSdkVersion 19
- buildToolsVersion = ‘21.1.3’
-
- publishNonDefault true
-}
-</pre>
- </li>
-</ul>
-
-
-<p>In the {@code test} module in this example, the {@code build.gradle} file specifies the
-properties for the project path and target build type variant. </p>
-
- <p><img src="{@docRoot}images/tools/studio-test-module.png" /></p>
- <p class="img-caption"><strong>Figure 3.</strong> Test module for APK testing.</p>
-
-
-<p class="note"><strong>Note:</strong> By default, the test module's build variant uses the
-<code>debug</code> build type. You can configure additional build types using the
-<code>testBuildType</code> property in the <code>defaultConfig</code> block in the main
-app's <code>build.gradle</code> file. </p>
-
-
diff --git a/docs/html/tools/studio/ui-tools.jd b/docs/html/tools/studio/ui-tools.jd
deleted file mode 100644
index 2d25de6..0000000
--- a/docs/html/tools/studio/ui-tools.jd
+++ /dev/null
@@ -1,32 +0,0 @@
-page.title=Android Studio User Interface Tools
-
-@jd:body
-
-<p>
- Android Studio provides a number of user interface tools to assist you with creating layouts,
- implementing style themes, and building graphic or text resources for your app.
-</p>
-
-<dl>
-
- <dt><a href="{@docRoot}sdk/installing/studio-layout.html">Layout Editor</a></dt>
- <dd>Drag and drop user interface elements to build layouts for your app.
- </dd>
-
- <dt><a href="{@docRoot}tools/help/theme-editor.html">Theme Editor</a></dt>
- <dd>Build re-usable user interface styles for layouts and widgets in your app.
- </dd>
-
- <dt><a href="{@docRoot}tools/help/translations-editor.html">Translations Editor</a></dt>
- <dd>View and update all your string resource translations in one convenient place.
- </dd>
-
- <dt><a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a></dt>
- <dd>Add material icons and import Scalable Vector Graphic (SVG) files into your
- Android Studio project as a drawable resource.</dd>
-
- <dt><a href="{@docRoot}tools/help/image-asset-studio.html">Image Asset Studio</a></dt>
- <dd>Generate custom icons for your Android applications from existing images,
- clipart, or text.</dd>
-
-</dl>
diff --git a/docs/html/tools/testing/index.jd b/docs/html/tools/testing/index.jd
deleted file mode 100644
index a454891..0000000
--- a/docs/html/tools/testing/index.jd
+++ /dev/null
@@ -1,19 +0,0 @@
-page.title=Testing
-@jd:body
-
-<p>Android provides an integrated testing framework that helps you test all aspects
-of your app. The Android <a href="{@docRoot}sdk/installing/index.html">SDK</a> and
-<a href="{@docRoot}tools/testing-support-library/index.html">Testing Support Library</a> include
-tools and APIs for setting up and running test apps within an emulator or on the device you are
-targeting. You can build and execute tests whether you are working in Android Studio or working
-from the command line.</p>
-
-<p>To familiarize yourself with mobile app testing in Android, start by reading these resources:</p>
-<ul>
- <li><a href="{@docRoot}tools/testing/testing_android.html">Testing Concepts</a>: Learn key
- concepts related to Android app testing and get an overview of the testing tools and APIs
- that Google provides.</li>
- <li><a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a>: Learn
- how to build and run your tests, step-by-step, using the testing APIs and tools that
- Google provides.</li>
-</ul>
diff --git a/docs/html/tools/testing/testing-tools.jd b/docs/html/tools/testing/testing-tools.jd
deleted file mode 100644
index c60199f7..0000000
--- a/docs/html/tools/testing/testing-tools.jd
+++ /dev/null
@@ -1,56 +0,0 @@
-page.title=Android Testing Tools
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/testing/index.html">Best Practices for Testing</a></li>
- </ol>
-</div>
-</div>
-
- <p>
- Testing is a critical software development activity because it helps you
- improve the quality of your apps, ensure better user satisfaction, and
- reduce overall development time spent on fixing defects.
- </p>
-
- <p>The following sections describe tools that help
- you test your mobile apps for the Android platform.</a>
-
-<dl>
- <dt><strong><a href="{@docRoot}tools/testing-support-library/index.html">Android
- Testing Support Library</a></strong></dt>
- <dd>This library provides a set of APIs that allow
- you to quickly build and run test code for your apps, including JUnit 4 and functional user
- interface (UI) tests. The Android Testing Support Library includes the following test automation
- tools:
-
- <ul>
- <li><a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">AndroidJUnitRunner</a>:
- JUnit 4-compatible test runner for Android
- </li>
-
- <li><a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a>:
- UI testing framework; suitable for functional UI testing within an app
- </li>
-
- <li><a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI Automator</a>:
- UI testing framework; suitable for cross-app functional UI testing across system and installed apps
- </li>
- </ul>
- </dd>
-
- <dt><strong><a href="{@docRoot}tools/help/monkey.html">Monkey</a></strong></dt>
- <dd>This tool runs on your emulator or device and generates pseudo-random streams of user
-events such as clicks, touches, or gestures, as well as a number of system-level events. You can
-use the Monkey tool to stress-test applications that you are developing, in a random yet
-repeatable manner.
- </dd>
-
- <dt><strong><a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a></strong></dt>
- <dd>This testing system provides an API for writing programs that control an Android device or
-emulator from outside of Android code.</dd>
-
-</dl>
\ No newline at end of file
diff --git a/docs/html/tools/testing/testing_android.jd b/docs/html/tools/testing/testing_android.jd
deleted file mode 100755
index 5adb7e9..0000000
--- a/docs/html/tools/testing/testing_android.jd
+++ /dev/null
@@ -1,292 +0,0 @@
-page.title=Testing Concepts
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li><a href="#TestStructure">Test Structure</a></li>
- <li><a href="#TestAPI">Testing APIs</a>
- <ol>
- <li>
- <a href="#JUnit">JUnit</a>
- </li>
- <li>
- <a href="#Instrumentation">Instrumentation</a>
- </li>
- <li>
- <a href="#TestingSupportLibraryClasses">Android Testing Support Library APIs</a>
- </li>
- <li>
- <a href="#AssertionClasses">Assertion classes</a>
- </li>
- </ol>
- </li>
- <li>
- <a href="#Monkeys">Monkey and Monkeyrunner</a>
- </li>
- </ol>
- <h2>See also</h2>
- <ol>
- <li><a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a></li>
- </ol>
- </div>
-</div>
-
-<p>
-This document describes key concepts related to Android app testing. It assumes you have a basic
-knowledge of the <a href="http://junit.org/" class="external-link">JUnit</a> testing framework.</p>
-
-<h2 id="TestStructure">Test Structure</h2>
-<p>Android testing is based on JUnit. In general, a JUnit test is a method whose statements test a
-part of the application. You organize test methods into classes called
-<em>test cases</em>. You can further organize these classes into <em>test suites</em>.</p>
-<p>In JUnit, you build one or more test classes and use a test runner to
-execute them. In Android, you use <a href="{@docRoot}tools/studio/index.html">
-Android Studio </a>(or the <a href="{@docRoot}tools/building/plugin-for-gradle.html">
-Android Plugin for Gradle</a>) to build one or more test source files into an
-<em>Android test app</em>.</p>
-
-<p>From your testing environment, you can run your test in one of the following ways:</p>
-<ul>
- <li><strong>On your local machine:</strong> Compile the test classes and
- execute them locally on the Java Virtual Machine (JVM) using the JUnit test runner.</li>
- <li><strong>On a device or emulator</strong>: Install the test app and the app
-under test to a physical device or emulator, and then execute your tests using an Android-specific
-test runner (such as <a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">
-{@code AndroidJUnitRunner}</a>).</li>
-</ul>
-
-<p>The structure of your test code and the way you build and run the tests in Android Studio depend
-on the type of testing you are performing. The following table summarizes the common testing types
-for Android:</p>
-
-<table>
-<tr><th>Type</th>
- <th>Subtype</th>
- <th>Description</th></tr>
-
-<tr><td rowspan="3">Unit tests</td>
- <tr><td>Local Unit Tests</td>
- <td>Unit tests that run on your local machine only. These tests are compiled to run locally
-on the JVM to minimize execution time. Use this approach to run unit tests
-that have no dependencies on the Android framework or have dependencies that mock objects can
-satisfy.</td></tr>
- <tr><td>Instrumented unit tests</td>
- <td>Unit tests that run on an Android device or emulator. These tests have access to
-{@link android.app.Instrumentation} information, such as the {@link android.content.Context} of the
-app under test. Use this approach to run unit tests that have Android dependencies which mock
-objects cannot easily satisfy.</td></tr>
-
-<tr><td rowspan="3">Integration Tests</td>
- <tr><td>Components within your app only</td>
- <td>This type of test verifies that the target app behaves as expected when a user performs
-a specific action or enters a specific input in its activities. For example, it allows you to check
-that the target app returns the correct UI output in response to user interactions in the app’s
-activities. UI testing frameworks like
-<a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a> allow you to
-programmatically simulate user actions and test complex intra-app user interactions.</td></tr>
- <tr><td>Cross-app Components</td>
- <td>This type of test verifies the correct behavior of interactions between different user
-apps or between user apps and system apps. For example, you might want to test that your app behaves
-correctly when the user performs an action in the Android Settings menu. UI testing frameworks
-that support cross-app interactions, such as UI Automator, allow you to create tests for such
-scenarios.</td></tr>
-</table>
-
-<p>Based on the type of test you want to create, you need to configure the test code source
-location and the project dependencies in Android Studio as described in
-<a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a>.</p>
-
-<h2 id="TestAPI">Testing APIs</h2>
-<p>The following list summarizes the common APIs related to app testing for Android.</p>
-
-<h3 id="JUnit">JUnit</h3>
-
-<p>You should write your unit or integration test class as a JUnit 4 test class.
-<a href="http://junit.org/" class="external-link">JUnit</a> is the most popular
-and widely-used unit testing framework for Java. The framework offers a convenient way to perform
-common setup, teardown, and assertion operations in your test.</p>
-
-<p>JUnit 4 allows you to write tests in a cleaner and more
-flexible way than its predecessor versions. Unlike the previous approach to Android unit testing
-based on JUnit 3, with JUnit 4, you do not need to extend the {@code junit.framework.TestCase}
-class. You also do not need to prepend the {@code test} keyword to your test method name, or
-use any classes in the {@code junit.framework} or {@code junit.extensions} package.</p>
-
-<p>A basic JUnit 4 test class is a Java class that contains one or more test methods.
-A test method begins with the {@code @Test} annotation and contains the code to exercise
-and verify a single functionality (that is, a logical <em>unit</em>) in the component that you want
-to test.</p>
-<p>The following snippet shows an example JUnit 4 integration test that uses the Espresso
-APIs to perform a click action on a UI element, then checks to see if an expected string is
-displayed.</p>
-<pre>
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class MainActivityInstrumentationTest {
-
- @Rule
- public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
- MainActivity.class);
-
- @Test
- public void sayHello(){
- onView(withText("Say hello!")).perform(click());
-
- onView(withId(R.id.textView)).check(matches(withText("Hello, World!")));
- }
-}
-</pre>
-<p>In your JUnit 4 test class, you can call out sections in your test code for
-special processing by using the following annotations:</p>
-<ul>
-<li>
-{@code @Before}: Use this annotation to specify a block of code that contains test setup
-operations. The test class invokes this code block before each test. You can have multiple
-{@code @Before} methods but the order in which the test class calls these methods
-is not guaranteed.
-</li>
-<li>
-{@code @After}: This annotation specifies a block of code that contains test
-tear-down operations. The test class calls this code block after every test method. You can define
-multiple {@code @After} operations in your test code. Use this annotation to release any
-resources from memory.
-</li>
-<li>
-{@code @Test}: Use this annotation to mark a test method. A single test class can contain
-multiple test methods, each prefixed with this annotation.
-</li>
-<li>
-{@code @Rule}: Rules allow you to flexibly add or redefine the behavior of each test
-method in a reusable way. In Android testing, use this annotation together with
-one of the test rule classes that the Android Testing Support Library provides, such as
-<a href="{@docRoot}reference/android/support/test/rule/ActivityTestRule.html">
-{@code ActivityTestRule}</a> or
-<a href="{@docRoot}reference/android/support/test/rule/ServiceTestRule.html">
-{@code ServiceTestRule}</a>.
-</li>
-<li>
-{@code @BeforeClass}: Use this annotation to specify static methods for each test class to
-invoke only once. This testing step is useful for expensive operations such as connecting to a
-database.
-</li>
-<li>
-{@code @AfterClass}: Use this annotation to specify static methods for the test class to invoke
-only after all tests in the class have run. This testing step is useful for releasing any
-resources allocated in the {@code @BeforeClass} block.
-</li>
-<li>
-{@code @Test(timeout=<milliseconds>)}: Some annotations support the ability to pass in
-elements for which you can set values. For example, you can specify a timeout period for the test.
-If the test starts but does not complete within the given timeout period, it automatically fails.
-You must specify the timeout period in milliseconds, for example: {@code @Test(timeout=5000)}.
-</li>
-</ul>
-<p>For more annotations, see the documentation for
-<a href="//junit.sourceforge.net/javadoc/org/junit/package-summary.html" class="external-link">
-JUnit annotations</a> and the
-<a href="{@docRoot}android/support/test/annotation/package-summary.html">
-Android-specific annotations</a>.
-<p>
- You use the JUnit {@link junit.framework.Assert} class to verify the correctness of an object's
- state. The assert methods compare values you expect from a test to the actual results and
- throw an exception if the comparison fails. <a href="#AssertionClasses">
- Assertion classes</a> describes these methods in more detail.
-</p>
-
-</p>
-<h3 id="Instrumentation">Instrumentation</h3>
-<p>
- Android instrumentation is a set of control methods or hooks in the Android system. These
- hooks control an Android component independently of its normal lifecycle. They also control how
- Android loads applications.
-</p>
-<p>
- The following diagram summarizes the testing framework:
-</p>
-<div style="width: 70%; margin-left:auto; margin-right:auto;">
-<a href="{@docRoot}images/testing/test_framework.png">
- <img src="{@docRoot}images/testing/test_framework.png"
- alt="The Android testing framework"/>
-</a>
-</div>
-<p>
-Normally, an Android component runs in a lifecycle that the system determines. For example, an
-{@link android.app.Activity} object's lifecycle starts when an {@link android.content.Intent}
-activates the {@link android.app.Activity}. The system calls the object's <code>onCreate()</code>
-method, on then the <code>onResume()</code> method. When the user starts another application, the
-system calls the <code>onPause()</code> method. If the {@link android.app.Activity} code calls
-the <code>finish()</code> method, the system calls the <code>onDestroy()</code> method. The Android
-framework API does not provide a way for your code to invoke these callback methods directly, but
-you can do so using instrumentation.
-</p>
-<p>
-The system runs all the components of an application in the same process. You can allow some
-components, such as content providers, to run in a separate process,
-but you can't force an application to run in the same process as another application that is
-already running.
-</p>
-<p>
-Instrumentation can load both a test package and the app under test into the
-same process. Since the application components and their tests are in the same process, your
-tests can invoke methods in the components, and modify and examine fields in the components.
-</p>
-<h3 id="TestingSupportLibraryClasses">Android Testing Support Library APIs</h3>
-<p>
-The <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>
-provides a set of APIs that allow you to quickly build and run test code for your apps, including
-JUnit 4 and functional user interface (UI) tests. The library includes the following
-instrumentation-based APIs that are useful when you want to automate your tests:</p>
-<ul>
- <li><a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">
- {@code AndroidJUnitRunner}</a>:
- JUnit 4-compatible test runner for Android
- </li>
-
- <li><a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a>:
- UI testing framework; suitable for functional UI testing within an app
- </li>
-
- <li><a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI Automator</a>:
- UI testing framework; suitable for cross-app functional UI testing across system and installed
- apps</li>
- </ul>
-
-<h3 id="AssertionClasses">Assertion classes</h3>
-<p>Because Android Testing Support Library APIs extend JUnit, you can use assertion methods to
-display the results of tests. An assertion method compares an actual value returned by a test to an
-expected value, and throws an AssertionException if the comparison test fails. Using assertions
-is more convenient than logging, and provides better test performance.
-</p>
-<p>To simplify your test development, we recommend that you use the
-<a href="https://github.com/hamcrest"
-class="external-link">Hamcrest</a> library, which lets you create more flexible tests using the
-Hamcrest matcher APIs.</p>
-
-<h2 id="Monkeys">Monkey and Monkeyrunner</h2>
-<p>
- The SDK provides two tools for functional-level application testing:
-</p>
- <ul>
- <li>
-The <a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>,
- usually called "monkey", is a command-line tool that sends pseudo-random streams of
- keystrokes, touches, and gestures to a device. You run it with the
- <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) tool.
- You use it to stress-test your application and report back errors that are encountered.
- You can repeat a stream of events by running the tool each time with the same random
- number seed.
- </li>
- <li>
- The <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a> tool
- is an API and execution environment for test programs written in Python. The API
- includes functions for connecting to a device, installing and uninstalling packages,
- taking screenshots, comparing two images, and running a test package against an
- application. Using the API, you can write a wide range of large, powerful, and complex
- tests. You run programs that use the API with the <code>monkeyrunner</code> command-line
- tool.
- </li>
- </ul>
\ No newline at end of file
diff --git a/docs/html/tools/testing/testing_otheride.jd b/docs/html/tools/testing/testing_otheride.jd
deleted file mode 100755
index 4b2a6b1..0000000
--- a/docs/html/tools/testing/testing_otheride.jd
+++ /dev/null
@@ -1,461 +0,0 @@
-page.title=Testing from the Command-Line
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol>
- <li>
- <a href="#RunTestsCommand">Running Tests</a>
- <ol>
- <li>
- <a href="#RunTestsGradle">Running unit tests with Gradle</a>
- </li>
- <li>
- <a href="#RunTestsDevice">Running tests with adb</a>
- </li>
- </ol>
- </li>
- <li>
- <a href="#AMSyntax">Using the Instrument Command</a>
- <ol>
- <li>
- <a href="#AMOptionsSyntax">Instrument options</a>
- </li>
- <li>
- <a href="#RunTestExamples">Instrument examples</a>
- </li>
- </ol>
- </li>
- </ol>
- <h2>See Also</h2>
- <ol>
- <li>
- <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
- </li>
- </ol>
- </div>
-</div>
-<p>
- This document describes how to create and run tests directly from the command line. This
- document assumes that you already know how to create a Android application in your programming
- environment.
-</p>
-
-<h2 id="RunTestsCommand">Running Tests</h2>
-<p>
- You can run tests from the command-line, either with Gradle or with an
- <a href="{@docRoot}tools/help/adb.html">
- Android Debug Bridge (adb)</a> shell.
-</p>
-<h3 id="RunTestsGradle">Running unit tests with Gradle</h3>
-
-<p>The <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a>
-lets you run unit tests from your Gradle project via the command-line. For more information on
-how to build unit tests for your app, see
-<a href="{@docRoot}training/testing/unit-testing/index.html">Building Effective Unit Tests</a>.</p>
-
-<p>The table below summarizes how to run your unit tests with Gradle:</p>
-<table>
- <tr>
- <th>Unit Test Type</th>
- <th>Command To Run</th>
- <th>Test Result Location</th>
- </tr>
- <tr>
- <td>Local unit test</td>
- <td>Call the {@code test} task:
-<pre>
-./gradlew test
-</pre></td>
- <td>
-HTML test result files:
-{@code <path_to_your_project>/app/build/reports/tests/} directory.
-<p>XML test result files:
-{@code <path_to_your_project>/app/build/test-results/} directory.
-</p></td>
- </tr>
- <tr>
- <td>Instrumented unit test</td>
- <td>Call the {@code connectedAndroidTest} (or {@code cAT}) task:
-<pre>
-./gradlew cAT
-</pre>
- </td>
- <td>
-HTML test result files:
-{@code <path_to_your_project>/app/build/outputs/reports/androidTests/connected/} directory.
-<p>XML test result files:
-{@code <path_to_your_project>/app/build/outputs/androidTest-results/connected/} directory.
-</p></td>
- </tr>
-</table>
-
-<h3 id="RunTestsDevice">Running tests with ADB</h3>
-<p>
- When you run tests from the command-line with
- <a href="{@docRoot}tools/help/adb.html">
- Android Debug Bridge (adb)</a>, you get more options for choosing the tests
- to run than with any other method. You can select individual test methods, filter tests
- according to their annotation, or specify testing options. Since the test run is controlled
- entirely from a command-line, you can customize your testing with shell scripts in various ways.
-</p>
-<p>
- To run a test from the command-line, you run <code>adb shell</code> to start a command-line
- shell on your device or emulator, and then in the shell run the <code>am instrument</code>
- command. You control <code>am</code> and your tests with command-line flags.
-</p>
-<p>
- As a shortcut, you can start an <code>adb</code> shell, call <code>am instrument</code>, and
- specify command-line flags all on one input line. The shell opens on the device or emulator,
- runs your tests, produces output, and then returns to the command-line on your computer.
-</p>
-<p>
- To run a test with <code>am instrument</code>:
-</p>
-<ol>
- <li>
- If necessary, rebuild your main application and test package.
- </li>
- <li>
- Install your test package and main application Android package files
- (<code>.apk</code> files) to your current Android device or emulator</li>
- <li>
- At the command-line, enter:
-<pre>
-$ adb shell am instrument -w <test_package_name>/<runner_class>
-</pre>
- <p>
- where <code><test_package_name></code> is the Android package name of your test
- application, and <code><runner_class></code> is the name of the Android test
- runner class you are using. The Android package name is the value of the
- <code>package</code> attribute of the <code>manifest</code> element in the manifest file
- (<code>AndroidManifest.xml</code>) of your test package. The Android test runner
- class is usually
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a>.
- </p>
- <p>
- Your test results appear in <code>STDOUT</code>.
- </p>
- </li>
-</ol>
-<p>
- This operation starts an <code>adb</code> shell, then runs <code>am instrument</code>
- with the specified parameters. This particular form of the command will run all of the tests
- in your test package. You can control this behavior with flags that you pass to
- <code>am instrument</code>. These flags are described in the next section.
-</p>
-<h2 id="AMSyntax">Using the am instrument Command</h2>
-<p>
- The general syntax of the <code>am instrument</code> command is:
-</p>
-<pre>
-am instrument [flags] <test_package>/<runner_class>
-</pre>
-<p>
- The main input parameters to <code>am instrument</code> are described in the following table:
-</p>
-<table>
- <tr>
- <th>
- Parameter
- </th>
- <th>
- Value
- </th>
- <th>
- Description
- </th>
- </tr>
- <tr>
- <td>
- <code><test_package></code>
- </td>
- <td>
- The Android package name of the test package.
- </td>
- <td>
- The value of the <code>package</code> attribute of the <code>manifest</code>
- element in the test package's manifest file.
- </td>
- </tr>
- <tr>
- <td>
- <code><runner_class></code>
- </td>
- <td>
- The class name of the instrumented test runner you are using.
- </td>
- <td>
- This is usually
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a>.
- </td>
- </tr>
-</table>
-
-<p>
- The flags for <code>am instrument</code> are described in the following table:
-</p>
-<table>
- <tr>
- <th>
- Flag
- </th>
- <th>
- Value
- </th>
- <th>
- Description
- </th>
- </tr>
- <tr>
- <td>
- <code>-w</code>
- </td>
- <td>
- (none)
- </td>
- <td>
- Forces <code>am instrument</code> to wait until the instrumentation terminates
- before terminating itself. The net effect is to keep the shell open until the tests
- have finished. This flag is not required, but if you do not use it, you will not
- see the results of your tests.
- </td>
- </tr>
- <tr>
- <td>
- <code>-r</code>
- </td>
- <td>
- (none)
- </td>
- <td>
- Outputs results in raw format. Use this flag when you want to collect
- performance measurements, so that they are not formatted as test results. This flag is
- designed for use with the flag <code>-e perf true</code> (documented in the section
- <a href="#AMOptionsSyntax">Instrument options</a>).
- </td>
- </tr>
- <tr>
- <td>
- <code>-e</code>
- </td>
- <td>
- <test_options>
- </td>
- <td>
- Provides testing options as key-value pairs. The
- <code>am instrument</code> tool passes these to the specified instrumentation class
- via its <code>onCreate()</code> method. You can specify multiple occurrences of
- <code>-e <test_options></code>. The keys and values are described in the
- section <a href="#AMOptionsSyntax">am instrument options</a>. You can only use these
- key-value pairs with
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> or with {@link android.test.InstrumentationTestRunner} and its
-subclasses. Using them with any other class has no effect.
- </td>
- </tr>
-</table>
-
-<h3 id="AMOptionsSyntax">am instrument options</h3>
-<p>
- The <code>am instrument</code> tool passes testing options to
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> or {@link android.test.InstrumentationTestRunner} in the form of
-key-value pairs, using the <code>-e</code> flag, with this syntax:
-</p>
-<pre>
--e <key> <value>
-</pre>
-<p>
- Some keys accept multiple values. You specify multiple values in a comma-separated list.
- For example, this invocation of
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> provides multiple values for the <code>package</code> key:
-</p>
-<pre>
-$ adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
-> com.android.test/android.support.test.runner.AndroidJUnitRunner
-</pre>
-<p>The following table lists the key-value pairs you can use with your test runner.</p>
-<table>
- <tr>
- <th>Key</th>
- <th>Value</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>
- <code>package</code>
- </td>
- <td>
- <Java_package_name>
- </td>
- <td>
- The fully-qualified <em>Java</em> package name for one of the packages in the test
- application. Any test case class that uses this package name is executed. Notice that
- this is not an <em>Android</em> package name; a test package has a single
- Android package name but may have several Java packages within it.
- </td>
- </tr>
- <tr>
- <td rowspan="2"><code>class</code></td>
- <td><class_name></td>
- <td>
- The fully-qualified Java class name for one of the test case classes. Only this test
- case class is executed.
- </td>
- </tr>
- <tr>
- <td><class_name><strong>#</strong>method name</td>
- <td>
- A fully-qualified test case class name, and one of its methods. Only this method is
- executed. Note the hash mark (#) between the class name and the method name.
- </td>
- </tr>
- <tr>
- <td><code>func</code></td>
- <td><code>true</code></td>
- <td>
- Runs all test classes that extend {@link android.test.InstrumentationTestCase}.
- </td>
- </tr>
- <tr>
- <td><code>unit</code></td>
- <td><code>true</code></td>
- <td>
- Runs all test classes that do <em>not</em> extend either
- {@link android.test.InstrumentationTestCase} or
- {@link android.test.PerformanceTestCase}.
- </td>
- </tr>
- <tr>
- <td><code>size</code></td>
- <td>
- [<code>small</code> | <code>medium</code> | <code>large</code>]
- </td>
- <td>
- Runs a test method annotated by size. The annotations are <code>@SmallTest</code>,
- <code>@MediumTest</code>, and <code>@LargeTest</code>.
- </td>
- </tr>
- <tr>
- <td><code>perf</code></td>
- <td><code>true</code></td>
- <td>
- Runs all test classes that implement {@link android.test.PerformanceTestCase}.
- When you use this option, also specify the <code>-r</code> flag for
- <code>am instrument</code>, so that the output is kept in raw format and not
- re-formatted as test results.
- </td>
- </tr>
- <tr>
- <td><code>debug</code></td>
- <td><code>true</code></td>
- <td>
- Runs tests in debug mode.
- </td>
- </tr>
- <tr>
- <td><code>log</code></td>
- <td><code>true</code></td>
- <td>
- Loads and logs all specified tests, but does not run them. The test
- information appears in <code>STDOUT</code>. Use this to verify combinations of other
- filters and test specifications.
- </td>
- </tr>
- <tr>
- <td><code>emma</code></td>
- <td><code>true</code></td>
- <td>
- Runs an EMMA code coverage analysis and writes the output to
- <code>/data/<app_package>/coverage.ec</code> on the device. To override the
- file location, use the <code>coverageFile</code> key that is described in the
- following entry.
- <p class="note">
- <strong>Note:</strong> This option requires an EMMA-instrumented build of the test
- application, which you can generate with the <code>coverage</code> target.
- </p>
- </td>
- </tr>
- <tr>
- <td><code>coverageFile</code></td>
- <td><code><filename></code></td>
- <td>
- Overrides the default location of the EMMA coverage file on the device. Specify this
- value as a path and filename in UNIX format. The default filename is described in the
- entry for the <code>emma</code> key.
- </td>
- </tr>
-</table>
-<strong><code>-e</code> Flag Usage Notes</strong>
-<ul>
- <li>
- <code>am instrument</code> invokes
- {@link android.test.InstrumentationTestRunner#onCreate(Bundle)}
- with a {@link android.os.Bundle} containing the key-value pairs.
- </li>
- <li>
- The <code>package</code> key takes precedence over the <code>class</code> key. If you
- specifiy a package, and then separately specify a class within that package, Android
- will run all the tests in the package and ignore the <code>class</code> key.
- </li>
- <li>
- The <code>func</code> key and <code>unit</code> key are mutually exclusive.
- </li>
-</ul>
-<h3 id="RunTestExamples">Usage examples</h3>
-<p>
-The following sections provide examples of using <code>am instrument</code> to run tests.
-They are based on the following structure:</p>
-<ul>
- <li>
- The test package has the Android package name <code>com.android.demo.app.tests</code>
- </li>
- <li>
- Two instrumented test classes:
- <ul>
- <li>{@code Foo1} which contains the test method {@code bar1}, and</li>
- <li>{@code Foo2} which contains test methods {@code bar2} and {@code bar3}</li>
- </ul>
- </li>
- <li>
- The test runner is
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a>.
- </li>
-</ul>
-<h4>Running the entire test package</h4>
-<p>
- To run all of the test classes in the test package, enter:
-</p>
-<pre>
-$ adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
-</pre>
-<h4>Running all tests in a test case class</h4>
-<p>
- To run all of the tests in the class <code>UnitTests</code>, enter:
-</p>
-<pre>
-$ adb shell am instrument -w \
-> -e class com.android.demo.app.tests.Foo \
-> com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
-</pre>
-<p>
- <code>am instrument</code> gets the value of the <code>-e</code> flag, detects the
- <code>class</code> keyword, and runs all the methods in the <code>UnitTests</code> class.
-</p>
-<h4>Selecting a subset of tests</h4>
-<p>
- To run all of the tests in <code>Foo1</code>, and the <code>bar3</code> method in
- <code>Foo2</code>, enter:
-</p>
-<pre>
-$ adb shell am instrument -w \
-> -e class com.android.demo.app.tests.Foo1,com.android.demo.app.tests.Foo2#bar3 \
-> com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
-</pre>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
deleted file mode 100644
index 73d4ff3..0000000
--- a/docs/html/tools/tools_toc.cs
+++ /dev/null
@@ -1,473 +0,0 @@
-<ul id="nav">
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot
-?>sdk/index.html"><span class="en">Download</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>sdk/installing/index.html">
- <span class="en">Install Android Studio</span></a></li>
- </ul>
- </li>
-
-
-<!-- Workflow menu-->
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/workflow/index.html"><span class="en">Workflow</span></a>
- </div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/projects/index.html">
- <span class="en">Projects</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/building/index.html">
- <span class="en">Build and Run</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/devices/index.html">
- <span class="en">Virtual Devices</span></a></li>
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/device.html">
- <span class="en">Hardware Devices</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/extras/oem-usb.html">
- <span class="en">USB Drivers</span></a></li>
- </ul>
- </li>
-
- <li><a href="<?cs var:toroot?>tools/testing/index.html">
- <span class="en">Testing</span></a>
- </li>
-
- <li><a href="<?cs var:toroot ?>tools/debugging/index.html">
- <span class="en">Debugging</span></a></li>
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/publishing/publishing_overview.html"
- zh-cn-lang="发布概述"><span class="en">Publishing</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/publishing/preparing.html" zh-cn-lang="准备发布"><span class="en">Preparing for Release</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/publishing/versioning.html"><span class="en">Versioning Your Apps</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/publishing/app-signing.html"><span class="en">Signing Your Apps</span></a></li>
- </ul>
- </li>
-
- </ul>
- </li> <!-- end of Workflow -->
-
-
-<!-- Android Studio menu-->
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot?>tools/studio/index.html"><span class="en">Android Studio</span></a>
- </div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/studio/studio-features.html">
- Features</a></li>
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/studio-config.html">
- Configuration</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/help/sdk-manager.html">SDK Manager</a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>sdk/installing/create-project.html">
- Project Tools</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/help/project-mgmt.html">
- <span class="en">Project Structure Management</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/projects/templates.html">
- <span class="en">Using Code Templates</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/building/building-studio.html">
- <span class="en">Building and Running</span></a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/code-tools.html">
- Code Tools</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/debugging/improving-w-lint.html">
- <span class="en">Improving Your Code with lint</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/debugging/annotations.html">
- <span class="en">Improving Code Inspection with Annotations</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/help/proguard.html">
- <span class="en">Shrink Your Code and Resources</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/help/app-link-indexing.html">
- <span class="en">Supporting URLs and App Indexing in Android Studio</span></a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/ui-tools.html">
- UI Tools</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>sdk/installing/studio-layout.html">
- <span class="en">Layout Editor</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/help/theme-editor.html">
- <span class="en">Theme Editor</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/help/translations-editor.html">
- <span class="en">Translations Editor</span></a>
- <li><a href="<?cs var:toroot ?>tools/help/vector-asset-studio.html">
- <span class="en">Vector Asset Studio</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/help/image-asset-studio.html">
- <span class="en">Image Asset Studio</span></a></li>
- </ul>
- </li>
-
- <li><a href="<?cs var:toroot ?>tools/devices/managing-avds.html">
- <span class="en">AVD Manager</span></a></li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/devices/emulator.html">
- <span class="en">Android Emulator</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/help/emulator.html">Android Emulator
- Command-Line Features</a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/debugging/debugging-studio.html">
- <span class="en">Debugging Tools</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/debugging/ddms.html">
- <span class="en">DDMS</span></a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/help/android-monitor.html">Android Monitor</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/help/am-basics.html"><span
- class="en">Android Monitor Basics</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-logcat.html"><span
- class="en">logcat Monitor</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-memory.html"><span
- class="en">Memory Monitor</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-cpu.html"><span
- class="en">CPU Monitor</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-gpu.html"><span
- class="en">GPU Monitor</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-network.html"><span
- class="en">Network Monitor</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-hprof.html"><span
- class="en">HPROF Viewer and Analyzer</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-allocation.html"><span
- class="en">Allocation Tracker</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-methodtrace.html"><span
- class="en">Method Trace</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-sysinfo.html"><span
- class="en">System Information</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-screenshot.html"><span
- class="en">Screen Capture</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/am-video.html"><span
- class="en">Video Capture</span></a>
- </li>
- </li>
- </ul>
- </li>
-
- <li><a href="<?cs var:toroot ?>sdk/installing/studio-tips.html">
- Tips and Tricks</a></li>
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>sdk/installing/migrate.html">
- <span class="en">
- Migrating from Eclipse ADT</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/studio/eclipse-transition-guide.html">
- <span class="en">Transition Guide</span></a></li>
- </ul>
- </li>
- </ul>
-
- </li><!-- End of Android Studio menu -->
-
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/help/index.html"><span
-class="en">Tools Help</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/help/adb.html">adb</a></li>
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/help/android.html">android</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/devices/managing-avds-cmdline.html"><span class="en">
- Managing AVDs</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/projects/projects-cmdline.html"><span class="en">
- Managing Projects</span></a></li>
- </ul>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/avd-manager.html">AVD Manager</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/bmgr.html">bmgr</a>
- <li><a href="<?cs var:toroot ?>tools/help/desktop-head-unit.html">Desktop Head Unit</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/monitor.html">Device Monitor</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/dmtracedump.html">dmtracedump</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/draw9patch.html">Draw 9-Patch</a></li>
-
- <li><a href="<?cs var:toroot ?>tools/help/etc1tool.html">etc1tool</a></li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/help/hierarchy-viewer.html">
- <span class="en">Hierarchy Viewer</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/debugging/debugging-ui.html">
- <span class="en">Optimizing your UI</span></a></li>
- </ul>
- </li>
-
- <li><a href="<?cs var:toroot ?>tools/help/hprof-conv.html">hprof-conv</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/image-asset-studio.html">Image Asset Studio</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/jobb.html">jobb</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/lint.html">lint</span></a></li>
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/help/logcat.html">logcat</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/debugging/debugging-log.html">
- <span class="en">Reading and Writing Logs</span></a></li>
- </ul>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/mksdcard.html">mksdcard</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/gltracer.html">Tracer for OpenGL ES</a></li>
-
-
- <li><a href="<?cs var:toroot ?>tools/help/zipalign.html">zipalign</a></li>
-
- </ul>
- </li>
-
- </li><!-- end of tools help -->
-
-
-<!-- Build System menu-->
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>sdk/installing/studio-build.html">Build System</a>
- </div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/building/building-cmdline.html">
- <span class="en">Running Gradle Builds</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/building/configuring-gradle.html">
- <span class="en">Configuring Gradle Builds</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/building/plugin-for-gradle.html">
- <span class="en">Android Plugin for Gradle</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/building/manifest-merge.html">
- <span class="en">Manifest Merging</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/building/multidex.html">
- <span class="en">Apps Over 64K Methods</span></a></li>
- </ul>
- </li><!-- end of build system -->
-
-
-<!-- Performance Tools menu-->
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/performance/index.html">Performance Tools</a>
- </div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/performance/debug-gpu-overdraw/index.html">
- Overdraw Debugger</a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/performance/profile-gpu-rendering/index.html">
- Rendering Profiler</a>
- </li>
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/index.html">
- Hierarchy Viewer</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/setup.html"><span
- class="en">Setup</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/profiling.html"><span
- class="en">Profiling</span></a>
- </li>
- </ul>
- </li>
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/performance/comparison.html">
- Memory Profilers</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/performance/memory-monitor/index.html"><span
- class="en">Memory Monitor</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/performance/heap-viewer/index.html"><span
- class="en">Heap Viewer</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/performance/allocation-tracker/index.html"><span
- class="en">Allocation Tracker</span></a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/debugging/debugging-memory.html">
- <span class="en">Investigating Your RAM Usage</span></a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/debugging/debugging-tracing.html">
- <span class="en">Traceview</span></a>
- </div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/performance/traceview/index.html">
- Walkthrough</a>
- </li>
- <li><a href="<?cs var:toroot ?>tools/help/traceview.html">
- Command Reference</a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/debugging/systrace.html">
- <span class="en">Systrace</span></a>
- </div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/performance/systrace/index.html">
- Walkthrough</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/systrace.html">
- Command Reference</a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/performance/batterystats-battery-historian/index.html">
- Battery Profilers</a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/performance/batterystats-battery-historian/charts.html"><span
- class="en">Historian Charts</span></a>
- </li>
- </ul>
- </li>
- </ul>
- </li><!-- End Performance Tools menu-->
-
-
- <!-- Testing Tools menu-->
-
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/testing/testing-tools.html">
- <span class="en">Testing Tools</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/testing/testing_android.html">Testing Concepts</a></li>
- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/testing-support-library/index.html"><span
-class="en">Testing Support Library</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>reference/android/support/test/package-summary.html">
- API Reference</a></li>
- </ul>
- </li>
- <li><a href="<?cs var:toroot ?>training/testing/start/index.html">
- Testing with Android Studio</a></li>
- <li><a href="<?cs var:toroot ?>tools/testing/testing_otheride.html">
- Testing from the Command-Line</a></li>
- <li><a href="<?cs var:toroot ?>tools/help/monkey.html">monkey</a></li>
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot
-?>tools/help/monkeyrunner_concepts.html"><span class="en">monkeyrunner</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/help/MonkeyDevice.html"><span
-class="en">MonkeyDevice</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/help/MonkeyImage.html"><span
-class="en">MonkeyImage</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/help/MonkeyRunner.html"><span
-class="en">MonkeyRunner</span></a></li>
- </ul>
- </li>
- </ul>
- </li><!-- end of testing support library -->
-
-
-<!-- Support Library menu-->
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/support-library/index.html"><span
-class="en">Support Library</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/support-library/features.html">Features</a></li>
- <li><a href="<?cs var:toroot ?>tools/support-library/setup.html">Setup</a></li>
- </ul>
- </li><!-- end of support library -->
-
- <li class="nav-section">
- <div class="nav-section-header empty"><a href="<?cs var:toroot ?>tools/data-binding/guide.html"><span
-class="en">Data Binding Library</span></a></div>
- </li><!-- end of support library -->
-
-
-<!-- Revision menu-->
-
- <li class="nav-section">
- <div class="nav-section-header"><a href="<?cs var:toroot
-?>tools/revisions/index.html"><span class="en">Revisions</span></a></div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/revisions/studio.html">
- <span class="en">Android Studio</span>
- </a></li>
- <li><a href="<?cs var:toroot ?>tools/sdk/tools-notes.html">
- <span class="en">SDK Tools</span>
- </a></li>
- <li><a href="<?cs var:toroot ?>tools/revisions/build-tools.html">
- <span class="en">SDK Build Tools</span>
- </a></li>
- <li><a href="<?cs var:toroot ?>tools/revisions/gradle-plugin.html">
- <span class="en">Android Plugin for Gradle</span>
- </a></li>
- <li><a href="<?cs var:toroot ?>tools/revisions/platforms.html">
- <span class="en">SDK Platforms</span></a></li>
- <li><a href="<?cs var:toroot ?>tools/sdk/eclipse-adt.html">
- <span class="en">ADT Plugin</span></a></li>
- </ul>
- </li>
-
- <li class="nav-section">
- <div class="nav-section-header empty">
- <a href="<?cs var:toroot ?>tools/sdk/ndk/index.html">NDK</a>
- </div>
- </li>
-
-<!-- <li class="nav-section">
- <div class="nav-section-header">
- <a href="<?cs var:toroot ?>tools/adk/index.html">
- <span class="en">ADK</span></a>
- </div>
- <ul>
- <li><a href="<?cs var:toroot ?>tools/adk/adk2.html">ADK 2012 Guide</a></li>
- <li><a href="<?cs var:toroot ?>tools/adk/adk.html">ADK 2011 Guide</a></li>
- </ul>
- </li> -->
-
-<script type="text/javascript">
-<!--
- buildToggleLists();
- changeNavLang(getLangPref());
-//-->
-</script>
diff --git a/docs/html/tools/workflow.jd b/docs/html/tools/workflow.jd
deleted file mode 100755
index edf7400..0000000
--- a/docs/html/tools/workflow.jd
+++ /dev/null
@@ -1,149 +0,0 @@
-page.title=Introduction
-@jd:body
-
-<p>Developing applications for Android devices is facilitated by a group of tools that are
- provided with the SDK. You can access these tools through Android Studio or from the command line. Developing with Android Studio is the preferred method because
- it can directly invoke the tools that you need while developing applications.</p>
-
- <p>However, you may choose to develop with another IDE or a simple text editor and invoke the
- tools on the command line or with scripts. This is a less streamlined way to develop because you
- will sometimes have to call command line tools manually, but you will have access to the same
- number of features that you would have in Android Studio.</p>
-
-<div class="figure" style="width:461px">
- <img src="{@docRoot}images/developing/developing_overview.png"
- alt="Development process for Android applications"
- height="738" />
- <p class="img-caption">
- <strong>Figure 1.</strong> The development process for Android applications.
- </p>
-</div>
-
-<p>The basic steps for developing applications (with or without Android Studio) are shown in figure 1. The
-development steps encompass four development phases, which include:</p>
-
-<ul>
- <li><strong>Setup</strong>
- <p>During this phase you install and set up your development environment. You also create
- Android Virtual Devices (AVDs) and connect hardware devices on which you can install your
- applications.</p>
- <p>See <a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>
- and <a href="{@docRoot}tools/device.html">Using Hardware Devices</a> for more
- information.
- </li>
- <li><strong>Development</strong>
- <p>During this phase you set up and develop your Android project, which contains all of the
- source code and resource files for your application. For more informations, see
- <a href="{@docRoot}tools/projects/index.html">Create an Android project</a>.</p>
- </li>
- <li><strong>Debugging and Testing</strong>
- <p>During this phase you build your project into a debuggable <code>.apk</code> package that you
- can install and run on the emulator or an Android-powered device. Android Studio uses
- a build system based on <a href="http://www.gradle.org/" target="_android">Gradle</a>
- that provides flexibility, customized build variants, dependency resolution, and much more.
- If you're using another IDE, you can build your project using Gradle and install it on a device
- using <a href="{@docRoot}tools/help/adb.html">adb</a>. For more information, see
- <a href="{@docRoot}tools/building/index.html">Build and run your application</a>.</p>
- <p>Next, you debug your application using a JDWP-compliant debugger along with the debugging
- and logging tools that are provided with the Android SDK. Android Studio already comes packaged with
- a compatible debugger. For more information see,
- <a href="{@docRoot}tools/debugging/index.html">Debug your application with the
- SDK debugging and logging tools</a>.</p>
- <p>Last, you test your application using various Android SDK testing tools. For more
- information, see <a href="{@docRoot}tools/testing/index.html">Test your application
- with the Testing and Instrumentation framework</a>.</p>
- </li>
- <li><strong>Publishing</strong>
- <p>During this phase you configure and build your application for release and distribute your
- application to users. For more information, see
- <a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing Overview</a>.</p>
- </li>
-</ul>
-
-<h2 id="EssentialTools">Essential command line tools</h2>
-
- <p>When developing in IDEs or editors other than Android Studio, be familiar with
- all of the tools below, because you will have to run them from the command line.</p>
-
- <dl>
- <dt><a href="{@docRoot}tools/help/android.html">android</a></dt>
-
- <dd>Create and update Android projects and create, move, and delete AVDs.</dd>
-
- <dt><a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a></dt>
-
- <dd>Run your Android applications on an emulated Android platform.</dd>
-
- <dt><a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a></dt>
-
- <dd>Interface with your emulator or connected device (install apps, shell the device, issue
- commands, etc.).</dd>
- </dl>
-
- <p>In addition to the above tools that are included with the SDK, you need the following open
- source and third-party tools:</p>
-
- <dl>
- <a href="http://www.gradle.org/">Gradle</a>
-
- <dd>To compile and build your Android project into an installable .apk file.</dd>
-
- <dt>Keytool</dt>
-
- <dd>To generate a keystore and private key, used to sign your .apk file. Keytool is part of the
- JDK.</dd>
-
- <dt>Jarsigner (or similar signing tool)</dt>
-
- <dd>To sign your .apk file with a private key generated by Keytool. Jarsigner is part of the
- JDK.</dd>
- </dl>
-
- <p>If you are using Android Studio, tools such as <code>adb</code> and <code>android</code>
- are automatically called by Android Studio, so you don't have to manually invoke these tools.
- You need to be familiar with <code>adb</code>, however, because certain functions are not
-accessible from
- Android Studio, such as the <code>adb</code> shell commands. You might also need to call Keytool and
-Jarsigner to
- sign your applications, but you can set up Android Studio to do this automatically as well.</p>
-
-<p>For more information on the tools provided with the Android SDK, see the
- <a href="{@docRoot}tools/index.html">Tools</a> section of the documentation.</p>
-
-<h2 id="ThirdParty">Other Third-Party Development Tools</h2>
-<p>
- The tools described in this section are not developed by the Android SDK team. The Android Dev Guide
- does not provide documentation for these tools. Please refer to the linked documents in each
- section for documentation.
-</p>
-<h3 id="IntelliJ">Developing in IntelliJ IDEA</h3>
-<div style="float: right">
-<img alt="The IntelliJ graphical user interface" height="500px"
-src="{@docRoot}images/developing/intellijidea_android_ide.png"/>
-</div>
-<p>
- IntelliJ IDEA is a powerful Java IDE from JetBrains that provides
- full-cycle Android development support in both the free Community
- Edition and the Ultimate edition.
-</p>
-<p>
- The IDE ensures compatibility with the latest Android SDK and offers a
- smart code editor with completion, quick navigation between code and
- resources, a graphical debugger, unit testing support using Android
- Testing Framework, and the ability to run applications in either the
- emulator or a USB-connected device.
-</p>
-<p>
- <strong>Links:</strong>
-</p>
-<ul>
- <li>
- <a href="http://www.jetbrains.com/idea">IntelliJ IDEA official website</a>
-</li>
- <li>
- <a href="http://www.jetbrains.com/idea/features/google_android.html">Android support in IntelliJ IDEA</a>
-</li>
- <li>
- <a href="http://wiki.jetbrains.net/intellij/Android">IntelliJ IDEA Android Tutorials</a>
- </li>
-</ul>
diff --git a/docs/html/tools/workflow/index.jd b/docs/html/tools/workflow/index.jd
deleted file mode 100644
index b32fa26..0000000
--- a/docs/html/tools/workflow/index.jd
+++ /dev/null
@@ -1,121 +0,0 @@
-page.title=Developer Workflow
-@jd:body
-
-<p>To develop apps for Android, you use a set of tools that are included in Android Studio.
-In addition to using the tools from Android Studio,
-you can also access most of the SDK tools from the command line. Developing with Android Studio is the
-preferred method because it can directly invoke the tools that you need while developing applications.</p>
-
-<p>However, you may choose to develop with another IDE or a simple text editor and invoke the
-tools on the command line or with scripts. This is a less streamlined way to develop because you
-will sometimes have to call command line tools manually, but you will have access to the same
-number of features that you would have in Android Studio.</p>
-
-<div class="figure" style="width:461px">
- <img src="{@docRoot}images/developing/developing_overview.png"
- alt="Development process for Android applications"
- height="738" />
- <p class="img-caption">
- <strong>Figure 1.</strong> The development process for Android applications.
- </p>
-</div>
-
-<h2>App Workflow</h2>
-
-<p>The basic steps for developing applications (with or without Android Studio) are shown in
-figure 1. The development steps encompass four development phases, which include:</p>
-
-<ul>
- <li><strong>Environment Setup</strong>
- <p>During this phase you install and set up your development environment. You also create
- Android Virtual Devices (AVDs) and connect hardware devices on which you can install your
- applications.</p>
- <p>See <a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>
- and <a href="{@docRoot}tools/device.html">Using Hardware Devices</a> for more
- information.
- </li>
- <li><strong>Project Setup and Development</strong>
- <p>During this phase you set up and develop your Android Studio project and application modules,
- which contain all of the source code and resource files for your application. For more
- information, see
- <a href="{@docRoot}tools/projects/index.html">Create an Android project</a>.</p>
- </li>
- <li><strong>Building, Debugging and Testing</strong>
- <p>During this phase you build your project into a debuggable <code>.apk</code> package(s)
- that you can install and run on the emulator or an Android-powered device. Android Studio uses
- a build system based on <a href="http://www.gradle.org/" target="_android">Gradle</a>
- that provides flexibility, customized build variants, dependency resolution, and much more.
- If you're using another IDE, you can build your project using Gradle and install it on a device
- using <a href="{@docRoot}tools/help/adb.html">adb</a>. For more information, see
- <a href="{@docRoot}tools/building/index.html">Build and run your application</a>.</p>
- <p>Next, with Android Studio you debug your application using the
- <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> and device log messages
- (<a href="{@docRoot}tools/help/logcat.html">logcat</a>) along with the IntelliJ IDEA intelligent
- coding features. You can also use a JDWP-compliant debugger along with the debugging and logging
- tools that are provided with the Android SDK. For more information see
- <a href="{@docRoot}tools/debugging/index.html">Debug your application with the SDK debugging and logging tools</a>.</p>
- <p>Last, you test your application using various Android SDK testing tools. For more
- information, see <a href="{@docRoot}tools/testing/index.html">Test your application
- with the Testing and Instrumentation framework</a>.</p>
- </li>
- <li><strong>Publishing</strong>
- <p>During this phase you configure and build your application for release and distribute your
- application to users. For more information, see
- <a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing
- Overview</a>.</p>
- </li>
-</ul>
-
-
-
-<h2 id="EssentialTools">Essential command line tools</h2>
-
- <p>When developing in IDEs or editors other than Android Studio, be familiar with
- all of the tools below, because you will have to run them from the command line or script.</p>
-
- <dl>
- <dt><a href="{@docRoot}tools/help/android.html">android</a></dt>
-
- <dd>Create and update Android projects and create, move, and delete AVDs.</dd>
-
- <dt><a href="{@docRoot}tools/help/emulator.html">Android Emulator</a></dt>
-
- <dd>Run your Android applications on an emulated Android platform.</dd>
-
- <dt><a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a></dt>
-
- <dd>Interface with your emulator or connected device (install apps, shell the device, issue
- commands, etc.).</dd>
- </dl>
-
- <p>In addition to the above tools that are included with the SDK, you need the following open
- source and third-party tools:</p>
-
- <dl>
- <dt><a href="http://www.gradle.org/">Gradle</a> </dt>
-
- <dd>To compile and build your Android project into an installable .apk file(s).</dd>
-
- <dt>Keytool</dt>
-
- <dd>To generate a keystore and private key, used to sign your .apk file. Keytool is part of the
- JDK.</dd>
-
- <dt>Jarsigner (or similar signing tool)</dt>
-
- <dd>To sign your .apk file with a private key generated by Keytool. Jarsigner is part of the
- JDK.</dd>
- </dl>
-
- <p>If you are using Android Studio, tools such as <code>adb</code> and <code>android</code>
- are automatically called by Android Studio so you don't have to manually invoke these tools.
- You need to be familiar with <code>adb</code>, however, because certain functions are not
- accessible from Android Studio, such as the <code>adb</code> shell commands. You might also
- need to call Keytool and Jarsigner to sign your applications, but you can set up Android Studio
- to do this automatically as well.</p>
-
-<p>For more information on the tools provided with the Android SDK, see the
- <a href="{@docRoot}tools/help/index.html">Tools</a> section of the documentation.</p>
-
-
-
diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java
index 0e45780..ef66971 100644
--- a/graphics/java/android/graphics/drawable/VectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/VectorDrawable.java
@@ -52,6 +52,8 @@
import java.util.HashMap;
import java.util.Stack;
+import dalvik.system.VMRuntime;
+
/**
* This lets you create a drawable based on an XML vector graphic.
* <p/>
@@ -299,9 +301,33 @@
final long colorFilterNativeInstance = colorFilter == null ? 0 :
colorFilter.native_instance;
boolean canReuseCache = mVectorState.canReuseCache();
- nDraw(mVectorState.getNativeRenderer(), canvas.getNativeCanvasWrapper(),
+ int pixelCount = nDraw(mVectorState.getNativeRenderer(), canvas.getNativeCanvasWrapper(),
colorFilterNativeInstance, mTmpBounds, needMirroring(),
canReuseCache);
+ if (pixelCount == 0) {
+ // Invalid canvas matrix or drawable bounds. This would not affect existing bitmap
+ // cache, if any.
+ return;
+ }
+
+ int deltaInBytes;
+ // Track different bitmap cache based whether the canvas is hw accelerated. By doing so,
+ // we don't over count bitmap cache allocation: if the input canvas is always of the same
+ // type, only one bitmap cache is allocated.
+ if (canvas.isHardwareAccelerated()) {
+ // Each pixel takes 4 bytes.
+ deltaInBytes = (pixelCount - mVectorState.mLastHWCachePixelCount) * 4;
+ mVectorState.mLastHWCachePixelCount = pixelCount;
+ } else {
+ // Each pixel takes 4 bytes.
+ deltaInBytes = (pixelCount - mVectorState.mLastSWCachePixelCount) * 4;
+ mVectorState.mLastSWCachePixelCount = pixelCount;
+ }
+ if (deltaInBytes > 0) {
+ VMRuntime.getRuntime().registerNativeAllocation(deltaInBytes);
+ } else if (deltaInBytes < 0) {
+ VMRuntime.getRuntime().registerNativeFree(-deltaInBytes);
+ }
}
@@ -537,11 +563,16 @@
if (mVectorState.mRootGroup != null || mVectorState.mNativeTree != null) {
// This VD has been used to display other VD resource content, clean up.
if (mVectorState.mRootGroup != null) {
+ // Subtract the native allocation for all the nodes.
+ VMRuntime.getRuntime().registerNativeFree(mVectorState.mRootGroup.getNativeSize());
// Remove child nodes' reference to tree
mVectorState.mRootGroup.setTree(null);
}
mVectorState.mRootGroup = new VGroup();
if (mVectorState.mNativeTree != null) {
+ // Subtract the native allocation for the tree wrapper, which contains root node
+ // as well as rendering related data.
+ VMRuntime.getRuntime().registerNativeFree(mVectorState.NATIVE_ALLOCATION_SIZE);
mVectorState.mNativeTree.release();
}
mVectorState.createNativeTree(mVectorState.mRootGroup);
@@ -558,6 +589,7 @@
state.mCacheDirty = true;
inflateChildElements(r, parser, attrs, theme);
+ state.onTreeConstructionFinished();
// Update local properties.
updateLocalState(r);
}
@@ -750,6 +782,16 @@
boolean mCachedAutoMirrored;
boolean mCacheDirty;
+ // Since sw canvas and hw canvas uses different bitmap caches, we track the allocation of
+ // these bitmaps separately.
+ int mLastSWCachePixelCount = 0;
+ int mLastHWCachePixelCount = 0;
+
+ // This tracks the total native allocation for all the nodes.
+ private int mAllocationOfAllNodes = 0;
+
+ private static final int NATIVE_ALLOCATION_SIZE = 316;
+
// Deep copy for mutate() or implicitly mutate.
public VectorDrawableState(VectorDrawableState copy) {
if (copy != null) {
@@ -771,12 +813,20 @@
if (copy.mRootName != null) {
mVGTargetsMap.put(copy.mRootName, this);
}
+ onTreeConstructionFinished();
}
}
private void createNativeTree(VGroup rootGroup) {
mNativeTree = new VirtualRefBasePtr(nCreateTree(rootGroup.mNativePtr));
+ // Register tree size
+ VMRuntime.getRuntime().registerNativeAllocation(NATIVE_ALLOCATION_SIZE);
+ }
+
+ void onTreeConstructionFinished() {
mRootGroup.setTree(mNativeTree);
+ mAllocationOfAllNodes = mRootGroup.getNativeSize();
+ VMRuntime.getRuntime().registerNativeAllocation(mAllocationOfAllNodes);
}
long getNativeRenderer() {
@@ -881,6 +931,14 @@
return mRootGroup.onStateChange(stateSet);
}
+ @Override
+ public void finalize() throws Throwable {
+ super.finalize();
+ int bitmapCacheSize = mLastHWCachePixelCount * 4 + mLastSWCachePixelCount * 4;
+ VMRuntime.getRuntime().registerNativeFree(NATIVE_ALLOCATION_SIZE
+ + mAllocationOfAllNodes + bitmapCacheSize);
+ }
+
/**
* setAlpha() and getAlpha() are used mostly for animation purpose. Return true if alpha
* has changed.
@@ -905,6 +963,8 @@
private static final int TRANSLATE_Y_INDEX = 6;
private static final int TRANSFORM_PROPERTY_COUNT = 7;
+ private static final int NATIVE_ALLOCATION_SIZE = 100;
+
private static final HashMap<String, Integer> sPropertyMap =
new HashMap<String, Integer>() {
{
@@ -1073,6 +1133,16 @@
}
@Override
+ int getNativeSize() {
+ // Return the native allocation needed for the subtree.
+ int size = NATIVE_ALLOCATION_SIZE;
+ for (int i = 0; i < mChildren.size(); i++) {
+ size += mChildren.get(i).getNativeSize();
+ }
+ return size;
+ }
+
+ @Override
public boolean canApplyTheme() {
if (mThemeAttrs != null) {
return true;
@@ -1240,6 +1310,7 @@
*/
private static class VClipPath extends VPath {
private final long mNativePtr;
+ private static final int NATIVE_ALLOCATION_SIZE = 120;
public VClipPath() {
mNativePtr = nCreateClipPath();
@@ -1283,6 +1354,11 @@
return false;
}
+ @Override
+ int getNativeSize() {
+ return NATIVE_ALLOCATION_SIZE;
+ }
+
private void updateStateFromTypedArray(TypedArray a) {
// Account for any configuration changes.
mChangingConfigurations |= a.getChangingConfigurations();
@@ -1319,6 +1395,7 @@
private static final int FILL_TYPE_INDEX = 11;
private static final int TOTAL_PROPERTY_COUNT = 12;
+ private static final int NATIVE_ALLOCATION_SIZE = 264;
// Property map for animatable attributes.
private final static HashMap<String, Integer> sPropertyMap
= new HashMap<String, Integer> () {
@@ -1396,6 +1473,11 @@
}
@Override
+ int getNativeSize() {
+ return NATIVE_ALLOCATION_SIZE;
+ }
+
+ @Override
public long getNativePtr() {
return mNativePtr;
}
@@ -1688,6 +1770,7 @@
abstract void applyTheme(Theme t);
abstract boolean onStateChange(int[] state);
abstract boolean isStateful();
+ abstract int getNativeSize();
}
private static native long nCreateTree(long rootGroupPtr);
@@ -1697,7 +1780,7 @@
private static native float nGetRootAlpha(long rendererPtr);
private static native void nSetAllowCaching(long rendererPtr, boolean allowCaching);
- private static native void nDraw(long rendererPtr, long canvasWrapperPtr,
+ private static native int nDraw(long rendererPtr, long canvasWrapperPtr,
long colorFilterPtr, Rect bounds, boolean needsMirroring, boolean canReuseCache);
private static native long nCreateFullPath();
private static native long nCreateFullPath(long nativeFullPathPtr);
diff --git a/libs/hwui/VectorDrawable.cpp b/libs/hwui/VectorDrawable.cpp
index ac17ed2..f0348e4 100644
--- a/libs/hwui/VectorDrawable.cpp
+++ b/libs/hwui/VectorDrawable.cpp
@@ -456,7 +456,7 @@
return propertyId >= 0 && propertyId < static_cast<int>(Property::count);
}
-void Tree::draw(Canvas* outCanvas, SkColorFilter* colorFilter,
+int Tree::draw(Canvas* outCanvas, SkColorFilter* colorFilter,
const SkRect& bounds, bool needsMirroring, bool canReuseCache) {
// The imageView can scale the canvas in different ways, in order to
// avoid blurry scaling, we have to draw into a bitmap with exact pixel
@@ -478,7 +478,7 @@
scaledHeight = std::min(Tree::MAX_CACHED_BITMAP_SIZE, scaledHeight);
if (scaledWidth <= 0 || scaledHeight <= 0) {
- return;
+ return 0;
}
mStagingProperties.setScaledSize(scaledWidth, scaledHeight);
@@ -500,6 +500,7 @@
mStagingProperties.setBounds(tmpBounds);
outCanvas->drawVectorDrawable(this);
outCanvas->restoreToCount(saveCount);
+ return scaledWidth * scaledHeight;
}
void Tree::drawStaging(Canvas* outCanvas) {
diff --git a/libs/hwui/VectorDrawable.h b/libs/hwui/VectorDrawable.h
index 1c6f48e..b33f26c 100644
--- a/libs/hwui/VectorDrawable.h
+++ b/libs/hwui/VectorDrawable.h
@@ -542,7 +542,9 @@
Tree(Group* rootNode) : mRootNode(rootNode) {
mRootNode->setPropertyChangedListener(&mPropertyChangedListener);
}
- void draw(Canvas* outCanvas, SkColorFilter* colorFilter,
+ // Draws the VD onto a bitmap cache, then the bitmap cache will be rendered onto the input
+ // canvas. Returns the number of pixels needed for the bitmap cache.
+ int draw(Canvas* outCanvas, SkColorFilter* colorFilter,
const SkRect& bounds, bool needsMirroring, bool canReuseCache);
void drawStaging(Canvas* canvas);
diff --git a/libs/hwui/thread/Task.h b/libs/hwui/thread/Task.h
index 30b6ff2..7fcf593 100644
--- a/libs/hwui/thread/Task.h
+++ b/libs/hwui/thread/Task.h
@@ -38,7 +38,6 @@
virtual ~Task() { }
T getResult() const {
- ScopedTrace tracer(ATRACE_TAG_VIEW, "waitForTask");
return mFuture->get();
}
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 2fa3a72..12e88a2 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -233,9 +233,9 @@
*/
private final Object mPlayStateLock = new Object();
/**
- * Sizes of the native audio buffer.
+ * Sizes of the audio buffer.
* These values are set during construction and can be stale.
- * To obtain the current native audio buffer frame count use {@link #getBufferSizeInFrames()}.
+ * To obtain the current audio buffer frame count use {@link #getBufferSizeInFrames()}.
*/
private int mNativeBufferSizeInBytes = 0;
private int mNativeBufferSizeInFrames = 0;
@@ -342,20 +342,22 @@
* {@link AudioFormat#ENCODING_PCM_8BIT},
* and {@link AudioFormat#ENCODING_PCM_FLOAT}.
* @param bufferSizeInBytes the total size (in bytes) of the internal buffer where audio data is
- * read from for playback. This should be a multiple of the frame size in bytes.
+ * read from for playback. This should be a nonzero multiple of the frame size in bytes.
* <p> If the track's creation mode is {@link #MODE_STATIC},
* this is the maximum length sample, or audio clip, that can be played by this instance.
* <p> If the track's creation mode is {@link #MODE_STREAM},
* this should be the desired buffer size
* for the <code>AudioTrack</code> to satisfy the application's
- * natural latency requirements.
+ * latency requirements.
* If <code>bufferSizeInBytes</code> is less than the
- * minimum buffer size for the output sink, it is automatically increased to the minimum
+ * minimum buffer size for the output sink, it is increased to the minimum
* buffer size.
* The method {@link #getBufferSizeInFrames()} returns the
- * actual size in frames of the native buffer created, which
- * determines the frequency to write
+ * actual size in frames of the buffer created, which
+ * determines the minimum frequency to write
* to the streaming <code>AudioTrack</code> to avoid underrun.
+ * See {@link #getMinBufferSize(int, int, int)} to determine the estimated minimum buffer size
+ * for an AudioTrack instance in streaming mode.
* @param mode streaming or static buffer. See {@link #MODE_STATIC} and {@link #MODE_STREAM}
* @throws java.lang.IllegalArgumentException
*/
@@ -392,13 +394,24 @@
* See {@link AudioFormat#ENCODING_PCM_16BIT} and
* {@link AudioFormat#ENCODING_PCM_8BIT},
* and {@link AudioFormat#ENCODING_PCM_FLOAT}.
- * @param bufferSizeInBytes the total size (in bytes) of the buffer where audio data is read
- * from for playback. If using the AudioTrack in streaming mode, you can write data into
- * this buffer in smaller chunks than this size. If using the AudioTrack in static mode,
- * this is the maximum size of the sound that will be played for this instance.
- * See {@link #getMinBufferSize(int, int, int)} to determine the minimum required buffer size
- * for the successful creation of an AudioTrack instance in streaming mode. Using values
- * smaller than getMinBufferSize() will result in an initialization failure.
+ * @param bufferSizeInBytes the total size (in bytes) of the internal buffer where audio data is
+ * read from for playback. This should be a nonzero multiple of the frame size in bytes.
+ * <p> If the track's creation mode is {@link #MODE_STATIC},
+ * this is the maximum length sample, or audio clip, that can be played by this instance.
+ * <p> If the track's creation mode is {@link #MODE_STREAM},
+ * this should be the desired buffer size
+ * for the <code>AudioTrack</code> to satisfy the application's
+ * latency requirements.
+ * If <code>bufferSizeInBytes</code> is less than the
+ * minimum buffer size for the output sink, it is increased to the minimum
+ * buffer size.
+ * The method {@link #getBufferSizeInFrames()} returns the
+ * actual size in frames of the buffer created, which
+ * determines the minimum frequency to write
+ * to the streaming <code>AudioTrack</code> to avoid underrun.
+ * You can write data into this buffer in smaller chunks than this size.
+ * See {@link #getMinBufferSize(int, int, int)} to determine the estimated minimum buffer size
+ * for an AudioTrack instance in streaming mode.
* @param mode streaming or static buffer. See {@link #MODE_STATIC} and {@link #MODE_STREAM}
* @param sessionId Id of audio session the AudioTrack must be attached to
* @throws java.lang.IllegalArgumentException
@@ -425,13 +438,23 @@
* @param format a non-null {@link AudioFormat} instance describing the format of the data
* that will be played through this AudioTrack. See {@link AudioFormat.Builder} for
* configuring the audio format parameters such as encoding, channel mask and sample rate.
- * @param bufferSizeInBytes the total size (in bytes) of the buffer where audio data is read
- * from for playback. If using the AudioTrack in streaming mode, you can write data into
- * this buffer in smaller chunks than this size. If using the AudioTrack in static mode,
- * this is the maximum size of the sound that will be played for this instance.
- * See {@link #getMinBufferSize(int, int, int)} to determine the minimum required buffer size
- * for the successful creation of an AudioTrack instance in streaming mode. Using values
- * smaller than getMinBufferSize() will result in an initialization failure.
+ * @param bufferSizeInBytes the total size (in bytes) of the internal buffer where audio data is
+ * read from for playback. This should be a nonzero multiple of the frame size in bytes.
+ * <p> If the track's creation mode is {@link #MODE_STATIC},
+ * this is the maximum length sample, or audio clip, that can be played by this instance.
+ * <p> If the track's creation mode is {@link #MODE_STREAM},
+ * this should be the desired buffer size
+ * for the <code>AudioTrack</code> to satisfy the application's
+ * latency requirements.
+ * If <code>bufferSizeInBytes</code> is less than the
+ * minimum buffer size for the output sink, it is increased to the minimum
+ * buffer size.
+ * The method {@link #getBufferSizeInFrames()} returns the
+ * actual size in frames of the buffer created, which
+ * determines the minimum frequency to write
+ * to the streaming <code>AudioTrack</code> to avoid underrun.
+ * See {@link #getMinBufferSize(int, int, int)} to determine the estimated minimum buffer size
+ * for an AudioTrack instance in streaming mode.
* @param mode streaming or static buffer. See {@link #MODE_STATIC} and {@link #MODE_STREAM}.
* @param sessionId ID of audio session the AudioTrack must be attached to, or
* {@link AudioManager#AUDIO_SESSION_ID_GENERATE} if the session isn't known at construction
@@ -662,9 +685,8 @@
* If using the {@link AudioTrack} in streaming mode
* (see {@link AudioTrack#MODE_STREAM}, you can write data into this buffer in smaller
* chunks than this size. See {@link #getMinBufferSize(int, int, int)} to determine
- * the minimum required buffer size for the successful creation of an AudioTrack instance
- * in streaming mode. Using values smaller than <code>getMinBufferSize()</code> will result
- * in an exception when trying to build the <code>AudioTrack</code>.
+ * the estimated minimum buffer size for the creation of an AudioTrack instance
+ * in streaming mode.
* <br>If using the <code>AudioTrack</code> in static mode (see
* {@link AudioTrack#MODE_STATIC}), this is the maximum size of the sound that will be
* played by this instance.
@@ -1106,7 +1128,7 @@
* size and capacity may enlarge to accommodate.
* <p> If the <code>AudioTrack</code> encoding indicates compressed data,
* e.g. {@link AudioFormat#ENCODING_AC3}, then the frame count returned is
- * the size of the native <code>AudioTrack</code> buffer in bytes.
+ * the size of the <code>AudioTrack</code> buffer in bytes.
* <p> See also {@link AudioManager#getProperty(String)} for key
* {@link AudioManager#PROPERTY_OUTPUT_FRAMES_PER_BUFFER}.
* @return current size in frames of the <code>AudioTrack</code> buffer.
@@ -1120,7 +1142,7 @@
* Limits the effective size of the <code>AudioTrack</code> buffer
* that the application writes to.
* <p> A write to this AudioTrack will not fill the buffer beyond this limit.
- * If a blocking write is used then the write will block until the the data
+ * If a blocking write is used then the write will block until the data
* can fit within this limit.
* <p>Changing this limit modifies the latency associated with
* the buffer for this track. A smaller size will give lower latency
@@ -1134,7 +1156,7 @@
* <p>This method is only supported for PCM audio.
* It is not supported for compressed audio tracks.
*
- * @param bufferSizeInFrames requested buffer size
+ * @param bufferSizeInFrames requested buffer size in frames
* @return the actual buffer size in frames or an error code,
* {@link #ERROR_BAD_VALUE}, {@link #ERROR_INVALID_OPERATION}
* @throws IllegalStateException if track is not initialized.
@@ -1150,19 +1172,19 @@
}
/**
- * Returns the maximum size of the native <code>AudioTrack</code> buffer.
+ * Returns the maximum size of the <code>AudioTrack</code> buffer in frames.
* <p> If the track's creation mode is {@link #MODE_STATIC},
* it is equal to the specified bufferSizeInBytes on construction, converted to frame units.
- * A static track's native frame count will not change.
+ * A static track's frame count will not change.
* <p> If the track's creation mode is {@link #MODE_STREAM},
* it is greater than or equal to the specified bufferSizeInBytes converted to frame units.
* For streaming tracks, this value may be rounded up to a larger value if needed by
* the target output sink, and
- * if the track is subsequently routed to a different output sink, the native
+ * if the track is subsequently routed to a different output sink, the
* frame count may enlarge to accommodate.
* <p> If the <code>AudioTrack</code> encoding indicates compressed data,
* e.g. {@link AudioFormat#ENCODING_AC3}, then the frame count returned is
- * the size of the native <code>AudioTrack</code> buffer in bytes.
+ * the size of the <code>AudioTrack</code> buffer in bytes.
* <p> See also {@link AudioManager#getProperty(String)} for key
* {@link AudioManager#PROPERTY_OUTPUT_FRAMES_PER_BUFFER}.
* @return maximum size in frames of the <code>AudioTrack</code> buffer.
@@ -1252,8 +1274,10 @@
}
/**
- * Returns the minimum buffer size required for the successful creation of an AudioTrack
- * object to be created in the {@link #MODE_STREAM} mode. Note that this size doesn't
+ * Returns the estimated minimum buffer size required for an AudioTrack
+ * object to be created in the {@link #MODE_STREAM} mode.
+ * The size is an estimate because it does not consider either the route or the sink,
+ * since neither is known yet. Note that this size doesn't
* guarantee a smooth playback under load, and higher values should be chosen according to
* the expected frequency at which the buffer will be refilled with additional data to play.
* For example, if you intend to dynamically set the source sample rate of an AudioTrack
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index 81cc035..ec2d4bc 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -157,8 +157,11 @@
// Estimate the native buffer allocation size and register it so it gets accounted for
// during GC. Note that this doesn't include the buffers required by the buffer queue
// itself and the buffers requested by the producer.
- mEstimatedNativeAllocBytes = ImageUtils.getEstimatedNativeAllocBytes(width, height, format,
- maxImages);
+ // Only include memory for 1 buffer, since actually accounting for the memory used is
+ // complex, and 1 buffer is enough for the VM to treat the ImageReader as being of some
+ // size.
+ mEstimatedNativeAllocBytes = ImageUtils.getEstimatedNativeAllocBytes(
+ width, height, format, /*buffer count*/ 1);
VMRuntime.getRuntime().registerNativeAllocation(mEstimatedNativeAllocBytes);
}
diff --git a/media/java/android/media/ImageWriter.java b/media/java/android/media/ImageWriter.java
index 83a4f17..b142ddd 100644
--- a/media/java/android/media/ImageWriter.java
+++ b/media/java/android/media/ImageWriter.java
@@ -138,11 +138,14 @@
// Estimate the native buffer allocation size and register it so it gets accounted for
// during GC. Note that this doesn't include the buffers required by the buffer queue
// itself and the buffers requested by the producer.
+ // Only include memory for 1 buffer, since actually accounting for the memory used is
+ // complex, and 1 buffer is enough for the VM to treat the ImageWriter as being of some
+ // size.
Size surfSize = SurfaceUtils.getSurfaceSize(surface);
int format = SurfaceUtils.getSurfaceFormat(surface);
mEstimatedNativeAllocBytes =
ImageUtils.getEstimatedNativeAllocBytes(surfSize.getWidth(),surfSize.getHeight(),
- format, maxImages);
+ format, /*buffer count*/ 1);
VMRuntime.getRuntime().registerNativeAllocation(mEstimatedNativeAllocBytes);
}
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index a8c2652..b9ed269 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -1247,7 +1247,8 @@
private Range<Double> estimateFrameRatesFor(int width, int height) {
Size size = findClosestSize(width, height);
Range<Long> range = mMeasuredFrameRates.get(size);
- Double ratio = (double)(size.getWidth() * size.getHeight()) / (width * height);
+ Double ratio = getBlockCount(size.getWidth(), size.getHeight())
+ / (double)Math.max(getBlockCount(width, height), 1);
return Range.create(range.getLower() * ratio, range.getUpper() * ratio);
}
@@ -2744,6 +2745,7 @@
public static final int DolbyVisionProfileDvheDtr = 0x10;
public static final int DolbyVisionProfileDvheStn = 0x20;
public static final int DolbyVisionProfileDvheDth = 0x40;
+ public static final int DolbyVisionProfileDvheDtb = 0x80;
// from OMX_VIDEO_DOLBYVISIONLEVELTYPE
public static final int DolbyVisionLevelHd24 = 0x1;
diff --git a/packages/CtsShim/Android.mk b/packages/CtsShim/Android.mk
index 537b171..b827bdf 100644
--- a/packages/CtsShim/Android.mk
+++ b/packages/CtsShim/Android.mk
@@ -20,23 +20,19 @@
# Variant: Privileged app
include $(CLEAR_VARS)
+
+LOCAL_MODULE := CtsShimPrivPrebuilt
+LOCAL_MODULE_TAGS := optional
# this needs to be a privileged application
LOCAL_PRIVILEGED_MODULE := true
+LOCAL_MODULE_CLASS := APPS
+LOCAL_BUILT_MODULE_STEM := package.apk
+# Make sure the build system doesn't try to resign the APK
+LOCAL_CERTIFICATE := PRESIGNED
-LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
+LOCAL_SRC_FILES := CtsShimPriv.apk
-LOCAL_PACKAGE_NAME := CtsShimPriv
-
-#TODO need to find the correct certificate
-#Change in conjunction with cts/hostsidetests/appsecurity/test-apps/IntentFilterApp
-LOCAL_CERTIFICATE := platform
-LOCAL_MANIFEST_FILE := priv_shim/AndroidManifest.xml
-
-include $(BUILD_PACKAGE)
-
+include $(BUILD_PREBUILT)
###########################################################
@@ -44,18 +40,14 @@
include $(CLEAR_VARS)
+LOCAL_MODULE := CtsShimPrebuilt
LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
+LOCAL_MODULE_CLASS := APPS
+LOCAL_BUILT_MODULE_STEM := package.apk
+# Make sure the build system doesn't try to resign the APK
+LOCAL_CERTIFICATE := PRESIGNED
-LOCAL_PACKAGE_NAME := CtsShim
+LOCAL_SRC_FILES := CtsShim.apk
-#TODO need to find the correct certificate
-#Change in conjunction with cts/hostsidetests/appsecurity/test-apps/IntentFilterApp
-LOCAL_CERTIFICATE := platform
-LOCAL_MANIFEST_FILE := shim/AndroidManifest.xml
-
-include $(BUILD_PACKAGE)
-
+include $(BUILD_PREBUILT)
diff --git a/packages/CtsShim/CtsShim.apk b/packages/CtsShim/CtsShim.apk
new file mode 100644
index 0000000..18e8e33
--- /dev/null
+++ b/packages/CtsShim/CtsShim.apk
Binary files differ
diff --git a/packages/CtsShim/CtsShimPriv.apk b/packages/CtsShim/CtsShimPriv.apk
new file mode 100644
index 0000000..48f35d3
--- /dev/null
+++ b/packages/CtsShim/CtsShimPriv.apk
Binary files differ
diff --git a/packages/CtsShim/build/.gitignore b/packages/CtsShim/build/.gitignore
new file mode 100644
index 0000000..e893c13
--- /dev/null
+++ b/packages/CtsShim/build/.gitignore
@@ -0,0 +1,3 @@
+*.pk8
+*.pem
+
diff --git a/packages/CtsShim/build/Android.mk b/packages/CtsShim/build/Android.mk
new file mode 100644
index 0000000..b550c1c
--- /dev/null
+++ b/packages/CtsShim/build/Android.mk
@@ -0,0 +1,72 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(my-dir)
+
+###########################################################
+# Variant: Privileged app
+
+include $(CLEAR_VARS)
+# this needs to be a privileged application
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := current
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+LOCAL_PACKAGE_NAME := CtsShimPriv
+
+LOCAL_MANIFEST_FILE := shim_priv/AndroidManifest.xml
+
+include $(BUILD_PACKAGE)
+
+
+###########################################################
+# Variant: Privileged app upgrade
+
+include $(CLEAR_VARS)
+# this needs to be a privileged application
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := current
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+LOCAL_PACKAGE_NAME := CtsShimPrivUpgrade
+
+LOCAL_MANIFEST_FILE := shim_priv_upgrade/AndroidManifest.xml
+
+include $(BUILD_PACKAGE)
+
+
+###########################################################
+# Variant: System app
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := current
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+LOCAL_PACKAGE_NAME := CtsShim
+
+LOCAL_MANIFEST_FILE := shim/AndroidManifest.xml
+
+include $(BUILD_PACKAGE)
+
diff --git a/packages/CtsShim/build/README b/packages/CtsShim/build/README
new file mode 100644
index 0000000..11e434f
--- /dev/null
+++ b/packages/CtsShim/build/README
@@ -0,0 +1,33 @@
+
+The CTS shim is a package that resides on a device's /system partition in order
+to verify certain upgrade scenarios. Not only must it not contain code, but, it
+must specify the singular APK that can be used to upgrade it.
+
+NOTE: The need to include a binary on the system image may be deprecated if a
+solution involving a temporarily writable /system partition is implemented.
+
+MAKING THE PREBUILTS
+In order to generate the upgrade key, the shim directory needs to be built multiple
+times. First to generate the upgrade APK [so its hash can be obtained] and again
+once the hash has been included as part of the pre-installed APK.
+
+build:
+ $ mmm frameworks/base/packages/CtsShim/build
+
+update the manifest:
+ $ sed -i -e "s/__HASH__/`sha512sum out/target/product/shamu/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk | cut -d' ' -f1`/" \
+ frameworks/base/packages/CtsShim/build/shim_priv/AndroidManifest.xml
+
+build:
+ $ mmm frameworks/base/packages/CtsShim/build
+
+update prebuilts:
+ $ cp out/target/product/shamu/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk \
+ cts/hostsidetests/appsecurity/test-apps/IntentFilterApp
+ $ cp out/target/product/shamu/system/priv-app/CtsShimPriv/CtsShimPriv.apk \
+ frameworks/base/packages/CtsShim
+
+revert manifest:
+ $ pushd frameworks/base && git checkout -- packages/CtsShim/build/shim_priv/AndroidManifest.xml && popd
+
+Finally, upload and submit both the cts/ and frameworks/base/ repos.
\ No newline at end of file
diff --git a/packages/CtsShim/shim/AndroidManifest.xml b/packages/CtsShim/build/shim/AndroidManifest.xml
similarity index 89%
rename from packages/CtsShim/shim/AndroidManifest.xml
rename to packages/CtsShim/build/shim/AndroidManifest.xml
index ee4b547..ac32d94 100644
--- a/packages/CtsShim/shim/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim/AndroidManifest.xml
@@ -16,8 +16,13 @@
<!-- Manifest for the system CTS shim -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.cts.system.ctsshim">
- <application android:label="CtsShim">
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.android.cts.ctsshim"
+ tools:ignore="MissingVersion" >
+
+ <application
+ android:hasCode="false"
+ tools:ignore="AllowBackup,MissingApplicationIcon" >
<!-- These activities don't actually exist; define them just to test the filters !-->
diff --git a/packages/CtsShim/priv_shim/AndroidManifest.xml b/packages/CtsShim/build/shim_priv/AndroidManifest.xml
similarity index 95%
rename from packages/CtsShim/priv_shim/AndroidManifest.xml
rename to packages/CtsShim/build/shim_priv/AndroidManifest.xml
index 0a3f823..68c6a74 100644
--- a/packages/CtsShim/priv_shim/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim_priv/AndroidManifest.xml
@@ -16,8 +16,16 @@
<!-- Manifest for the privileged CTS shim -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.cts.priv.ctsshim">
- <application android:label="CtsShim">
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.android.cts.priv.ctsshim"
+ tools:ignore="MissingVersion" >
+
+ <restrict-upgrade
+ android:hash="__HASH__" />
+
+ <application
+ android:hasCode="false"
+ tools:ignore="AllowBackup,MissingApplicationIcon" >
<!-- These activities don't actually exist; define them just to test the filters !-->
diff --git a/packages/CtsShim/priv_shim/AndroidManifest.xml b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
similarity index 79%
copy from packages/CtsShim/priv_shim/AndroidManifest.xml
copy to packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
index 0a3f823..af96dfd 100644
--- a/packages/CtsShim/priv_shim/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
@@ -14,10 +14,15 @@
limitations under the License.
-->
-<!-- Manifest for the privileged CTS shim -->
+<!-- Manifest for the privileged CTS shim upgrade -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.cts.priv.ctsshim">
- <application android:label="CtsShim">
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.android.cts.priv.ctsshim"
+ tools:ignore="MissingVersion" >
+
+ <application
+ android:hasCode="false"
+ tools:ignore="AllowBackup,MissingApplicationIcon" >
<!-- These activities don't actually exist; define them just to test the filters !-->
@@ -47,7 +52,7 @@
<!-- upgrade test; single, equivalent filter -->
<activity android:name=".UpgradeMatch">
- <intent-filter android:priority="100">
+ <intent-filter android:priority="500">
<action android:name="com.android.cts.action.MATCH" />
<category android:name="android.intent.category.INFO" />
</intent-filter>
@@ -55,103 +60,102 @@
<!-- upgrade test; multiple, equivalent filters -->
<activity android:name=".UpgradeMatchMultiple">
- <intent-filter android:priority="100">
+ <intent-filter android:priority="500">
<action android:name="com.android.cts.action.MATCH_MULTIPLE" />
- <category android:name="android.intent.category.INFO" />
- </intent-filter>
-
- <intent-filter android:priority="150">
- <action android:name="com.android.cts.action.MATCH_MULTIPLE" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="http" />
- <data android:scheme="https" />
- <data android:host="www.google.com" android:port="80" />
- <data android:host="www.google.com" android:port="8080" />
- <data android:host="goo.gl" android:port="443" />
</intent-filter>
</activity>
- <!-- upgrade test; lower priority -->
+ <!-- upgrade test; lower priority is okay -->
<activity android:name=".UpgradeLowerPriority">
- <intent-filter android:priority="100">
+ <intent-filter android:priority="75">
<action android:name="com.android.cts.action.LOWER_PRIORITY" />
<category android:name="android.intent.category.INFO" />
</intent-filter>
</activity>
- <!-- upgrade test; action subset -->
+ <!-- upgrade test; action subset is "equivalent" -->
<activity android:name=".UpgradeActionSubset">
<intent-filter android:priority="100">
- <action android:name="com.android.cts.action.ACTION_SUB" />
<action android:name="com.android.cts.action.ACTION_SUB_2" />
- <action android:name="com.android.cts.action.ACTION_SUB_3" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <!-- upgrade test; category subset -->
+ <!-- upgrade test; category subset is "equivalent" -->
<activity android:name=".UpgradeCategorySubset">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.CATEGORY_SUB" />
<category android:name="android.intent.category.INFO" />
- <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <!-- upgrade test; scheme subset -->
+ <!-- upgrade test; scheme subset is "equivalent" -->
<activity android:name=".UpgradeSchemeSubset">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.SCHEME_SUB" />
- <data android:scheme="content" />
<data android:scheme="flubber" />
- <data android:scheme="zoodle" />
</intent-filter>
</activity>
- <!-- upgrade test; authority subset -->
+ <!-- upgrade test; authority subset is "equivalent" -->
<activity android:name=".UpgradeAuthoritySubset">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.AUTHORITY_SUB" />
- <data android:host="www.google.com" android:port="80" />
- <data android:host="www.google.com" android:port="8080" />
- <data android:host="mail.google.com" android:port="80" />
<data android:host="goo.gl" android:port="443" />
</intent-filter>
</activity>
+ <!-- upgrade test; new activity cannot get >0 priority -->
+ <activity android:name=".UpgradeNewActivity">
+ <intent-filter android:priority="100">
+ <action android:name="com.android.cts.action.NEW_ACTIVITY" />
+ <category android:name="android.intent.category.INFO" />
+ </intent-filter>
+ </activity>
- <!-- upgrade test; new action -->
+ <!-- upgrade test; new action cannot get >0 priority -->
<activity android:name=".UpgradeNewAction">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_ACTION" />
- <category android:name="android.intent.category.DEFAULT" />
+ <action android:name="com.android.cts.action.NEW_ACTION_2" />
</intent-filter>
</activity>
- <!-- upgrade test; new category -->
+ <!-- upgrade test; new category cannot get >0 priority -->
<activity android:name=".UpgradeNewCategory">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_CATEGORY" />
+ <category android:name="android.intent.category.INFO" />
<category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.DOODLE" />
</intent-filter>
</activity>
- <!-- upgrade test; new scheme -->
+ <!-- upgrade test; new scheme cannot get >0 priority -->
<activity android:name=".UpgradeNewScheme">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_SCHEME" />
<data android:scheme="content" />
+ <data android:scheme="flubber" />
+ <data android:scheme="zoodle" />
+ <data android:scheme="zowie" />
</intent-filter>
</activity>
- <!-- upgrade test; new authority -->
+ <!-- upgrade test; new authority cannot get >0 priority -->
<activity android:name=".UpgradeNewAuthority">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_AUTHORITY" />
<data android:host="www.google.com" android:port="80" />
+ <data android:host="www.google.com" android:port="8080" />
+ <data android:host="mail.google.com" android:port="80" />
+ <data android:host="goo.gl" android:port="443" />
+ <data android:host="www.google.com" android:port="443" />
</intent-filter>
</activity>
+ <uses-library android:name="android.test.runner" />
</application>
+
</manifest>
diff --git a/packages/DocumentsUI/res/values-uz-rUZ/strings.xml b/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
index 5282329..e885315 100644
--- a/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
+++ b/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
@@ -21,7 +21,7 @@
<string name="title_open" msgid="4353228937663917801">"Ochish"</string>
<string name="title_save" msgid="2433679664882857999">"Saqlash"</string>
<string name="menu_create_dir" msgid="2547620241173881754">"Yangi jild"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Katak ko‘rinishida"</string>
+ <string name="menu_grid" msgid="6878021334497835259">"To‘r ko‘rinishida"</string>
<string name="menu_list" msgid="7279285939892417279">"Ro‘yxat ko‘rinishida"</string>
<string name="menu_sort" msgid="7677740407158414452">"Saralash"</string>
<string name="menu_search" msgid="3816712084502856974">"Qidirish"</string>
diff --git a/packages/ExtServices/src/android/ext/services/notification/Ranker.java b/packages/ExtServices/src/android/ext/services/notification/Ranker.java
index 3ef2aea..fefedf8 100644
--- a/packages/ExtServices/src/android/ext/services/notification/Ranker.java
+++ b/packages/ExtServices/src/android/ext/services/notification/Ranker.java
@@ -68,9 +68,7 @@
if (notificationsForPackage == null) {
notificationsForPackage = new LinkedHashSet<>();
}
- if (notificationsForPackage.contains(sbn.getKey())) {
- return;
- }
+
notificationsForPackage.add(sbn.getKey());
mUnbundledNotifications.put(sbn.getPackageName(), notificationsForPackage);
diff --git a/packages/MtpDocumentsProvider/jni/com_android_mtp_AppFuse.cpp b/packages/MtpDocumentsProvider/jni/com_android_mtp_AppFuse.cpp
index 7c8806e..7a96430 100644
--- a/packages/MtpDocumentsProvider/jni/com_android_mtp_AppFuse.cpp
+++ b/packages/MtpDocumentsProvider/jni/com_android_mtp_AppFuse.cpp
@@ -120,44 +120,45 @@
AppFuse(JNIEnv* env, jobject self) :
env_(env), self_(self), handle_counter_(0) {}
- bool handle_fuse_request(int fd, FuseRequest* req) {
+ void handle_fuse_request(int fd, FuseRequest* req) {
ALOGV("Request op=%d", req->header().opcode);
switch (req->header().opcode) {
// TODO: Handle more operations that are enough to provide seekable
// FD.
case FUSE_LOOKUP:
invoke_handler(fd, req, &AppFuse::handle_fuse_lookup);
- return true;
+ return;
+ case FUSE_FORGET:
+ // Return without replying.
+ return;
case FUSE_INIT:
invoke_handler(fd, req, &AppFuse::handle_fuse_init);
- return true;
+ return;
case FUSE_GETATTR:
invoke_handler(fd, req, &AppFuse::handle_fuse_getattr);
- return true;
- case FUSE_FORGET:
- return false;
+ return;
case FUSE_OPEN:
invoke_handler(fd, req, &AppFuse::handle_fuse_open);
- return true;
+ return;
case FUSE_READ:
invoke_handler(fd, req, &AppFuse::handle_fuse_read);
- return true;
+ return;
case FUSE_WRITE:
invoke_handler(fd, req, &AppFuse::handle_fuse_write);
- return true;
+ return;
case FUSE_RELEASE:
invoke_handler(fd, req, &AppFuse::handle_fuse_release);
- return true;
+ return;
case FUSE_FLUSH:
invoke_handler(fd, req, &AppFuse::handle_fuse_flush);
- return true;
+ return;
default: {
ALOGV("NOTIMPL op=%d uniq=%" PRIx64 " nid=%" PRIx64 "\n",
req->header().opcode,
req->header().unique,
req->header().nodeid);
fuse_reply(fd, req->header().unique, -ENOSYS, NULL, 0);
- return true;
+ return;
}
}
}
@@ -445,8 +446,7 @@
}
};
-jboolean com_android_mtp_AppFuse_start_app_fuse_loop(
- JNIEnv* env, jobject self, jint jfd) {
+void com_android_mtp_AppFuse_start_app_fuse_loop(JNIEnv* env, jobject self, jint jfd) {
ScopedFd fd(static_cast<int>(jfd));
AppFuse appfuse(env, self);
@@ -458,8 +458,8 @@
read(fd, request.buffer, sizeof(request.buffer)));
if (result < 0) {
if (errno == ENODEV) {
- ALOGE("Someone stole our marbles!\n");
- return JNI_FALSE;
+ ALOGV("AppFuse was unmounted.\n");
+ return;
}
ALOGE("Failed to read bytes from FD: errno=%d\n", errno);
continue;
@@ -477,16 +477,14 @@
continue;
}
- if (!appfuse.handle_fuse_request(fd, &request)) {
- return JNI_TRUE;
- }
+ appfuse.handle_fuse_request(fd, &request);
}
}
static const JNINativeMethod gMethods[] = {
{
"native_start_app_fuse_loop",
- "(I)Z",
+ "(I)V",
(void *) com_android_mtp_AppFuse_start_app_fuse_loop
}
};
diff --git a/packages/MtpDocumentsProvider/res/values/strings.xml b/packages/MtpDocumentsProvider/res/values/strings.xml
index 0c1ec50..b94aba0 100644
--- a/packages/MtpDocumentsProvider/res/values/strings.xml
+++ b/packages/MtpDocumentsProvider/res/values/strings.xml
@@ -25,8 +25,6 @@
<string name="root_name"><xliff:g id="device_model" example="Nexus 9">%1$s</xliff:g> <xliff:g id="storage_name" example="Internal Storage">%2$s</xliff:g></string>
<!-- Title of notification showing Files app is accessing files in a MTP device. [CHAR LIMIT=60]-->
<string name="accessing_notification_title">Accessing files from <xliff:g id="device_model" example="Nexus 9">%1$s</xliff:g></string>
- <!-- Description of notification showing Files app is accessing files in a MTP device. [CHAR LIMIT=60]-->
- <string name="accessing_notification_description">Don\'t disconnect the device</string>
<!-- Error message shown in Files app when the connected MTP device is busy. [CHAR LIMIT=150]-->
<string name="error_busy_device">The other device is busy. You can\'t transfer files until it\'s available.</string>
<!-- Error message shown in Files app when the connected MTP device may be locked. [CHAR LIMIT=150]-->
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/AppFuse.java b/packages/MtpDocumentsProvider/src/com/android/mtp/AppFuse.java
index 88858a8..cd78e61 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/AppFuse.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/AppFuse.java
@@ -75,7 +75,7 @@
void close() {
try {
// Remote side of ParcelFileDescriptor is tracking the close of mDeviceFd, and unmount
- // the corresponding fuse file system. The mMessageThread will receive FUSE_FORGET, and
+ // the corresponding fuse file system. The mMessageThread will receive ENODEV, and
// then terminate itself.
mDeviceFd.close();
mMessageThread.join();
@@ -236,7 +236,7 @@
}
}
- private native boolean native_start_app_fuse_loop(int fd);
+ private native void native_start_app_fuse_loop(int fd);
private class AppFuseMessageThread extends Thread {
/**
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsService.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsService.java
index 9b42b78..c8846ce 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsService.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsService.java
@@ -74,13 +74,10 @@
final String title = getResources().getString(
R.string.accessing_notification_title,
record.name);
- final String description = getResources().getString(
- R.string.accessing_notification_description);
notificationId = record.deviceId;
notification = new Notification.Builder(this)
.setLocalOnly(true)
.setContentTitle(title)
- .setContentText(description)
.setSmallIcon(com.android.internal.R.drawable.stat_sys_data_usb)
.setCategory(Notification.CATEGORY_SYSTEM)
.setPriority(Notification.PRIORITY_LOW)
diff --git a/packages/PrintSpooler/AndroidManifest.xml b/packages/PrintSpooler/AndroidManifest.xml
index ed6fdb7..2da4d6a 100644
--- a/packages/PrintSpooler/AndroidManifest.xml
+++ b/packages/PrintSpooler/AndroidManifest.xml
@@ -57,7 +57,7 @@
<activity
android:name=".ui.PrintActivity"
- android:configChanges="screenSize|smallestScreenSize|orientation|locale|keyboard|keyboardHidden|fontScale|uiMode|layoutDirection"
+ android:configChanges="mnc|mnc|touchscreen|navigation|screenLayout|screenSize|smallestScreenSize|orientation|locale|keyboard|keyboardHidden|fontScale|uiMode|layoutDirection|density"
android:permission="android.permission.BIND_PRINT_SPOOLER_SERVICE"
android:theme="@style/Theme.PrintActivity">
<intent-filter>
diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java
index bb35917..999d82d 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java
@@ -510,7 +510,12 @@
public void destroy() {
if (mBoundToService) {
mBoundToService = false;
- mContext.unbindService(AsyncRenderer.this);
+ try {
+ mContext.unbindService(AsyncRenderer.this);
+ } catch (IllegalArgumentException e) {
+ // Service might have been forcefully unbound in onDestroy()
+ Log.e(LOG_TAG, "Cannot unbind service", e);
+ }
}
mPageContentCache.invalidate();
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index c411186..cc0b4ca 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -268,7 +268,7 @@
new Runnable() {
@Override
public void run() {
- if (isFinishing()) {
+ if (isFinishing() || isDestroyed()) {
// onPause might have not been able to cancel the job, see PrintActivity#onPause
// To be sure, cancel the job again. Double canceling does no harm.
mSpoolerProvider.getSpooler().setPrintJobState(mPrintJob.getId(),
@@ -288,12 +288,8 @@
// the first batch of results which will be delivered
// after reading historical data. This should be pretty
// fast, so just wait before showing the UI.
- mPrinterRegistry = new PrinterRegistry(PrintActivity.this,
- new Runnable() {
- @Override
- public void run() {
- onPrinterRegistryReady(documentAdapter);
- }
+ mPrinterRegistry = new PrinterRegistry(PrintActivity.this, () -> {
+ (new Handler(getMainLooper())).post(() -> onPrinterRegistryReady(documentAdapter));
}, LOADER_ID_PRINT_REGISTRY, LOADER_ID_PRINT_REGISTRY_INT);
}
@@ -324,7 +320,8 @@
// If we are finishing or we are in a state that we do not need any
// data from the printing app, then no need to finish.
- if (isFinishing() || (isFinalState(mState) && !mPrintedDocument.isUpdating())) {
+ if (isFinishing() || isDestroyed() ||
+ (isFinalState(mState) && !mPrintedDocument.isUpdating())) {
return;
}
setState(STATE_PRINT_CANCELED);
@@ -622,6 +619,17 @@
}
@Override
+ protected void onDestroy() {
+ if (mPrintedDocument != null) {
+ mPrintedDocument.cancel(true);
+ }
+
+ doFinish();
+
+ super.onDestroy();
+ }
+
+ @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ACTIVITY_REQUEST_CREATE_FILE: {
@@ -964,7 +972,7 @@
}
private void ensureProgressUiShown() {
- if (isFinishing()) {
+ if (isFinishing() || isDestroyed()) {
return;
}
if (mUiState != UI_STATE_PROGRESS) {
@@ -976,7 +984,7 @@
}
private void ensurePreviewUiShown() {
- if (isFinishing()) {
+ if (isFinishing() || isDestroyed()) {
return;
}
if (mUiState != UI_STATE_PREVIEW) {
@@ -987,7 +995,7 @@
}
private void ensureErrorUiShown(CharSequence message, int action) {
- if (isFinishing()) {
+ if (isFinishing() || isDestroyed()) {
return;
}
if (mUiState != UI_STATE_ERROR) {
@@ -1267,6 +1275,7 @@
mPageRangeTitle = (TextView) findViewById(R.id.page_range_title);
mPageRangeEditText = (EditText) findViewById(R.id.page_range_edittext);
mPageRangeEditText.setVisibility(View.INVISIBLE);
+ mPageRangeTitle.setVisibility(View.INVISIBLE);
mPageRangeEditText.setOnFocusChangeListener(mSelectAllOnFocusListener);
mPageRangeEditText.addTextChangedListener(new RangeTextWatcher());
@@ -1353,7 +1362,7 @@
@Override
public void onLoaderReset(Loader<List<PrintServiceInfo>> loader) {
- if (!isFinishing()) {
+ if (!(isFinishing() || isDestroyed())) {
onLoadFinished(loader, null);
}
}
@@ -2036,7 +2045,9 @@
mSpoolerProvider.destroy();
}
- setState(mProgressMessageController.cancel());
+ if (mProgressMessageController != null) {
+ setState(mProgressMessageController.cancel());
+ }
if (mState != STATE_INITIALIZING) {
mPrintedDocument.finish();
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 996c84c..43216af 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Aktiveer Wi-Fi-woordryke aanmelding"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressiewe Wi-Fi na selfoon-oordrag"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Laat altyd Wi-Fi-swerfskanderings toe"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Gebruik vorige DHCP-kliënt"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Sellulêre data altyd aktief"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Deaktiveer absolute volume"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Wys opsies vir draadlose skermsertifisering"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 8ea1d2a..2acad89 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"የWi‑Fi ተጨማሪ ቃላት ምዝግብ ማስታወሻ መያዝ"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"አስገዳጅ የWi‑Fi ወደ ተንቀሳቃሽ ርክክብ"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ሁልጊዜ የWi‑Fi ማንቀሳቀስ ቅኝቶችን ይፍቀዱ"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"የቆየ የDHCP ደንበኛ ይጠቀሙ"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"የተንቀስቃሽ ስልክ ውሂብ ሁልጊዜ ንቁ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ፍጹማዊ ድምፅን አሰናክል"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"የገመድ አልባ ማሳያ እውቅና ማረጋገጫ አማራጮችን አሳይ"</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 63f899c..a3e5b1c 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"تمكين تسجيل Wi‑Fi Verbose"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"تسليم Wi-Fi حاد إلى خلوي"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"السماح دائمًا بعمليات فحص Wi-Fi للتجوال"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"استخدام برنامج DHCP القديم"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"بيانات الجوّال نشطة دائمًا"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"تعطيل مستوى الصوت المطلق"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"عرض خيارات شهادة عرض شاشة لاسلكي"</string>
diff --git a/packages/SettingsLib/res/values-az-rAZ/strings.xml b/packages/SettingsLib/res/values-az-rAZ/strings.xml
index 43b8f59..214d33a 100644
--- a/packages/SettingsLib/res/values-az-rAZ/strings.xml
+++ b/packages/SettingsLib/res/values-az-rAZ/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi Çoxsözlü Girişə icazə verin"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aqressiv Wi‑Fi\'dan Şəbəkə ötürməsinə"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi axtarışlarına həmişə icazə verin"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Köhnə DHCP klient istifadə edin"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobil data həmişə aktivdir"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Mütləq səs həcmi deaktiv edin"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Simsiz displey sertifikatlaşması üçün seçimləri göstərir"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index a5c9e39..a9bc326 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Omogući detaljniju evidenciju za Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agresivan prelaz sa Wi‑Fi mreže na mobilnu"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Uvek dozvoli skeniranje Wi‑Fi-ja u romingu"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Koristi zastareli DHCP klijent"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Podaci za mobilne uređaje su uvek aktivni"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Onemogući glavno podešavanje jačine zvuka"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Prikaz opcija za sertifikaciju bežičnog ekrana"</string>
diff --git a/packages/SettingsLib/res/values-be-rBY/strings.xml b/packages/SettingsLib/res/values-be-rBY/strings.xml
index 1c15082..23ec3ca 100644
--- a/packages/SettingsLib/res/values-be-rBY/strings.xml
+++ b/packages/SettingsLib/res/values-be-rBY/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Уключыць падрабязны журнал Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Агрэсіўны пераход з Wi‑Fi на маб. сетку"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Заўсёды дазваляць роўмінгавае сканіраванне Wi‑Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Выкарыстоўваць кліент DHCP ранейшых версій"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Перадача даных мабільнай сувязі заўсёды актыўна"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Адключыць абсалютны гук"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Паказаць опцыі сертыфікацыі бесправаднога дысплея"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 2af1c49..768a34b 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"„Многословно“ регистр. на Wi‑Fi: Актив."</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi-Fi към моб. мрежи: Агресивно предав."</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Сканирането за роуминг на Wi-Fi да е разрешено винаги"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Наследена клиентска програма за DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Винаги активни клетъчни данни"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Деактивиране на пълната сила на звука"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Показване на опциите за сертифициране на безжичния дисплей"</string>
diff --git a/packages/SettingsLib/res/values-bn-rBD/strings.xml b/packages/SettingsLib/res/values-bn-rBD/strings.xml
index 99308bb..fe7cb8b 100644
--- a/packages/SettingsLib/res/values-bn-rBD/strings.xml
+++ b/packages/SettingsLib/res/values-bn-rBD/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi ভারবোস লগিং সক্ষম করুন"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi‑Fi থেকে সেলুলারে তৎপর পরিবর্তন"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"সর্বদা Wifi রোম স্ক্যানকে অনুমতি দিন"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"লেগাসি DHCP ক্লায়েন্ট ব্যবহার করুন"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"সেলুলার ডেটা সর্বদাই সক্রিয় থাকে"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"চূড়ান্ত ভলিউম অক্ষম করুন"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ওয়্যারলেস প্রদর্শন সার্টিফিকেশন জন্য বিকল্পগুলি দেখান"</string>
diff --git a/packages/SettingsLib/res/values-bs-rBA/strings.xml b/packages/SettingsLib/res/values-bs-rBA/strings.xml
index 2841e2d..4152470 100644
--- a/packages/SettingsLib/res/values-bs-rBA/strings.xml
+++ b/packages/SettingsLib/res/values-bs-rBA/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Omogućiti Wi-Fi Verbose zapisivanje"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agresivni Wi-Fi u mobilnoj primopredaji"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Uvijek dopustiti Wi-Fi lutajuće skeniranje"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Koristi zastareli DHCP klijent"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobilni podaci uvijek aktivni"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Onemogućite apsolutnu jačinu zvuka"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Pokaži opcije za certifikaciju Bežičnog prikaza"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 7beaa1b..0b93b1e 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Activa el registre Wi‑Fi detallat"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Transf. total de Wi-Fi a mòbil"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Permet sempre cerca de Wi-Fi en ininerància"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Utilitza el client DHCP heretat"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Dades mòbils sempre actives"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Desactiva el volum absolut"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostra les opcions de certificació de pantalla sense fil"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 3dedd63..53ad9d1 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Podrobné protokolování Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agres. předání z Wi-Fi na mobilní síť"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Vždy povolit Wi-Fi roaming"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Použít starý klient DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobilní data jsou vždy aktivní"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Zakázat absolutní hlasitost"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Zobrazit možnosti certifikace bezdrátového displeje"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 250b4cd..c267702 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Aktivér detaljeret Wi-Fi-logføring"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Gennemtving skift fra Wi-Fi til mobildata"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Tillad altid scanning af Wi-Fi-roaming"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Brug ældre DHCP-klient"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobildata altid aktiveret"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Deaktiver absolut lydstyrke"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Vis valgmuligheder for certificering af trådløs skærm"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 3a25160..113900a 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Ausführliche WLAN-Protokolle aktivieren"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressives Handover von WLAN an Mobilfunk"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"WLAN-Roamingsuchen immer zulassen"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Alten DHCP-Client verwenden"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobile Datennutzung immer aktiviert"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Maximallautstärke deaktivieren"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Optionen zur Zertifizierung für kabellose Übertragung anzeigen"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 9d9b94e..640e319 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Ενεργοποίηση λεπτομερ. καταγραφής Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Επιθ.μεταβ. Wi-Fi σε δίκτυο κιν.τηλ."</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Να επιτρέπεται πάντα η σάρωση Wi-Fi κατά την περιαγωγή"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Χρήση εφαρμογής-πελάτη DHCP παλαιού τύπου"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Πάντα ενεργά δεδομένα κινητής τηλεφωνίας"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Απενεργοποίηση απόλυτης έντασης"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Εμφάνιση επιλογών για πιστοποίηση ασύρματης οθόνης"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index ccd487f..75e8ee1 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Enable Wi‑Fi verbose logging"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressive Wi‑Fi to Mobile handover"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Always allow Wi‑Fi Roam Scans"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Use legacy DHCP client"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobile data always active"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Disable absolute volume"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Show options for wireless display certification"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index ccd487f..75e8ee1 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Enable Wi‑Fi verbose logging"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressive Wi‑Fi to Mobile handover"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Always allow Wi‑Fi Roam Scans"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Use legacy DHCP client"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobile data always active"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Disable absolute volume"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Show options for wireless display certification"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index ccd487f..75e8ee1 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Enable Wi‑Fi verbose logging"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressive Wi‑Fi to Mobile handover"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Always allow Wi‑Fi Roam Scans"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Use legacy DHCP client"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobile data always active"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Disable absolute volume"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Show options for wireless display certification"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 2f2f6120..0b98e74 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Habilitar registro detallado de Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Transferencia intensa de Wi‑Fi a celular"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Permitir siempre búsquedas de Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Usar cliente DHCP heredado"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Datos móviles siempre activos"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Inhabilitar volumen absoluto"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostrar opciones de certificación de pantalla inalámbrica"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 1091c4a..7012f4a 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Habilitar registro Wi-Fi detallado"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Transferencia total de Wi‑Fi a móvil"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Permitir siempre búsquedas de Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Usar cliente DHCP heredado"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Datos móviles siempre activos"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Inhabilitar volumen absoluto"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostrar opciones para la certificación de la pantalla inalámbrica"</string>
diff --git a/packages/SettingsLib/res/values-et-rEE/strings.xml b/packages/SettingsLib/res/values-et-rEE/strings.xml
index 98c29b6..810ce76 100644
--- a/packages/SettingsLib/res/values-et-rEE/strings.xml
+++ b/packages/SettingsLib/res/values-et-rEE/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Luba WiFi paljusõnaline logimine"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agressiivne WiFi-lt mobiilile üleminek"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Luba alati WiFi-rändluse skannimine"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"DHCP pärandkliendi kasutamine"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobiilne andmeside on alati aktiivne"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Keela absoluutne helitugevus"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Juhtmeta ekraaniühenduse sertifitseerimisvalikute kuvamine"</string>
diff --git a/packages/SettingsLib/res/values-eu-rES/strings.xml b/packages/SettingsLib/res/values-eu-rES/strings.xml
index 6340d50..cc16647 100644
--- a/packages/SettingsLib/res/values-eu-rES/strings.xml
+++ b/packages/SettingsLib/res/values-eu-rES/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Gaitu Wi-Fi sareetan saioa hasteko modu xehatua"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Behartu Wi-Fi konexiotik datuenera aldatzera"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Onartu beti ibiltaritzan Wi-Fi sareak bilatzea"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Erabili aurreko bertsioko DHCP bezeroa"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mugikorreko datuak beti aktibo"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Desgaitu bolumen absolutua"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Erakutsi hari gabeko bistaratze-egiaztapenaren aukerak"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index a38c516..16331ba 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -26,7 +26,7 @@
<string name="wifi_disabled_generic" msgid="4259794910584943386">"غیرفعال شد"</string>
<string name="wifi_disabled_network_failure" msgid="2364951338436007124">"پیکربندی IP انجام نشد"</string>
<string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"اتصال Wi-Fi برقرار نشد"</string>
- <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"مشکل تأیید اعتبار"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"مشکل احراز هویت"</string>
<string name="wifi_not_in_range" msgid="1136191511238508967">"در محدوده نیست"</string>
<string name="wifi_no_internet" msgid="9151470775868728896">"دسترسی به اینترنت شناسایی نشد، به صورت خودکار وصل نمیشود."</string>
<string name="saved_network" msgid="4352716707126620811">"ذخیرهشده توسط <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"فعال کردن گزارشگیری طولانی Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi‑Fi فعال برای واگذاری به شبکه سلولی"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"اسکنهای رومینگ Wi‑Fi همیشه مجاز است"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"استفاده از کلاینت DHCP قدیمی"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"داده سلولی همیشه فعال"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"غیرفعال کردن میزان صدای مطلق"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"نمایش گزینهها برای گواهینامه نمایش بیسیم"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 6f5cff8..fcb1c68 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Käytä Wi-Fin laajennettua lokikirjausta"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressiivinen handover: Wi-Fi-matkapuh."</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Salli Wi-Fi-verkkovierailuskannaus aina"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Käytä vanhaa DHCP-asiakassovellusta"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobiilidata on aina käytössä"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Poista yleinen äänenvoimakkuuden säätö käytöstä"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Näytä langattoman näytön sertifiointiin liittyvät asetukset"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 0b13dda..91d0cb6 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Autoriser enreg. données Wi-Fi détaillées"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Passage forcé du Wi-Fi aux données cellulaires"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Toujours autoriser la détection de réseaux Wi-Fi en itinérance"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Utiliser l\'ancien client DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Données cellulaires toujours actives"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Désactiver le volume absolu"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Afficher les options pour la certification d\'affichage sans fil"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 3b5fcbe..b2bf773 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Autoriser enreg. infos Wi-Fi détaillées"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Passage forcé du Wi-Fi aux données mobiles"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Toujours autoriser la détection de réseaux Wi-Fi en itinérance"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Utiliser l\'ancien client DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Données mobiles toujours actives"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Désactiver le volume absolu"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Afficher les options de la certification de l\'affichage sans fil"</string>
diff --git a/packages/SettingsLib/res/values-gl-rES/strings.xml b/packages/SettingsLib/res/values-gl-rES/strings.xml
index 5068ac8..410c7a4 100644
--- a/packages/SettingsLib/res/values-gl-rES/strings.xml
+++ b/packages/SettingsLib/res/values-gl-rES/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Activar rexistro detallado da wifi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Entrega agresiva de wifi a móbil"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Permitir sempre buscas de itinerancia da wifi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Usar cliente DHCP herdado"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Datos móbiles sempre activados"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Desactivar volume absoluto"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostra opcións para o certificado de visualización sen fíos"</string>
diff --git a/packages/SettingsLib/res/values-gu-rIN/strings.xml b/packages/SettingsLib/res/values-gu-rIN/strings.xml
index 54e5e90..ac41ccb 100644
--- a/packages/SettingsLib/res/values-gu-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-gu-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi-Fi વર્બોઝ લૉગિંગ સક્ષમ કરો"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"સેલ્યુલર હેન્ડઓવર પર એગ્રેસિવ Wi‑Fi"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"હંમેશા Wi‑Fi રોમ સ્કૅન્સને મંજૂરી આપો"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"લેગેસી DHCP ક્લાઇન્ટનો ઉપયોગ કરો"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"સેલ્યુલર ડેટા હંમેશા સક્રિય"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ચોક્કસ વૉલ્યૂમને અક્ષમ કરો"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"વાયરલેસ ડિસ્પ્લે પ્રમાણપત્ર માટેના વિકલ્પો બતાવો"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 9cdcf2c..0241c00 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"वाई-फ़ाई वर्बोस प्रवेश सक्षम करें"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"वाई-फ़ाई से सेल्यूलर पर बलपूर्वक हस्तांतरण"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"हमेशा वाई-फ़ाई रोम स्कैन करने दें"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"लीगेसी DHCP क्लाइंट"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"सेल्युलर डेटा हमेशा सक्रिय"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"पूर्ण वॉल्यूम अक्षम करें"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"वायरलेस दिखाई देने के लिए प्रमाणन विकल्प दिखाएं"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index f8e030c..e030ff5 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Omogući opširnu prijavu na Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aktivni prijelaz s Wi‑Fi na mob. mrežu"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Uvijek dopusti slobodno traženje Wi-Fi mreže"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Upotrebljavaj stari DHCP klijent"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobilni podaci uvijek aktivni"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Onemogući apsolutnu glasnoću"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Prikaži opcije za certifikaciju bežičnog prikaza"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 9ddbb95..7bf9ba5 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Részletes Wi-Fi-naplózás engedélyezése"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agresszív Wi‑Fi–mobilhálózat átadás"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi-roaming ellenőrzésének engedélyezése mindig"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Korábbi DHCP-kliens használata"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"A mobilhálózati adatforgalom mindig aktív"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Abszolút hangerő funkció letiltása"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Vezeték nélküli kijelző tanúsítványával kapcsolatos lehetőségek megjelenítése"</string>
diff --git a/packages/SettingsLib/res/values-hy-rAM/strings.xml b/packages/SettingsLib/res/values-hy-rAM/strings.xml
index c9f34c0..9bf3f89 100644
--- a/packages/SettingsLib/res/values-hy-rAM/strings.xml
+++ b/packages/SettingsLib/res/values-hy-rAM/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Միացնել Wi‑Fi մանրամասն գրանցամատյանները"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi‑Fi-ից կտրուկ անցում բջջային ինտերնետի"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Միշտ թույլատրել Wi‑Fi ռոումինգի որոնումը"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Օգտագործել DHCP ծրագրի ավելի հին տարբերակները"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Բջջային տվյալները՝ միշտ ակտիվացրած"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Անջատել ձայնի բացարձակ ուժգնությունը"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Ցույց տալ անլար էկրանի վկայագրման ընտրանքները"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 991a2e3..bb77625 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Aktifkan Pencatatan Log Panjang Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Pengalihan Wi-Fi Agresif ke Seluler"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Selalu izinkan Pemindaian Roaming Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Gunakan klien DHCP lawas"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Data seluler selalu aktif"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Nonaktifkan volume absolut"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Tampilkan opsi untuk sertifikasi layar nirkabel"</string>
diff --git a/packages/SettingsLib/res/values-is-rIS/strings.xml b/packages/SettingsLib/res/values-is-rIS/strings.xml
index fb4a4d4..dfc7f18 100644
--- a/packages/SettingsLib/res/values-is-rIS/strings.xml
+++ b/packages/SettingsLib/res/values-is-rIS/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Kveikja á ítarlegri skráningu Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Ágeng yfirfærsla frá Wi-Fi til símkerfis"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Leyfa alltaf reikileit með Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Nota gamlan DHCP-biðlara"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Alltaf kveikt á farsímagögnum"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Slökkva á samstillingu hljóðstyrks"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Sýna valkosti fyrir vottun þráðlausra skjáa"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index fcdf31c..bce3e00 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Attiva registrazione dettagliata Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi‑Fi aggressivo per passaggio a cellulare"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Consenti sempre scansioni roaming Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Usa client DHCP precedente"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Dati cellulare sempre attivi"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Disattiva volume assoluto"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostra opzioni per la certificazione display wireless"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 48e5b46..031718b 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"הפעל רישום מפורט של Wi‑Fi ביומן"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"העברה אגרסיבית מ-Wi‑Fi לרשת סלולרית"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"התר תמיד סריקות נדידה של Wi‑Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"השתמש בלקוח DHCP מדור קודם"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"נתונים סלולריים פעילים תמיד"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"השבת עוצמת קול מוחלטת"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"הצג אפשרויות עבור אישור של תצוגת WiFi"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index d9156b3..808cd34 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi-Fi詳細ログの有効化"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi-Fiを強制的にモバイル接続に切り替える"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fiローミングスキャンを常に許可する"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"従来のDHCPクライアントを使用する"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"モバイルデータを常にON"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"絶対音量を無効にする"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ワイヤレスディスプレイ認証のオプションを表示"</string>
diff --git a/packages/SettingsLib/res/values-ka-rGE/strings.xml b/packages/SettingsLib/res/values-ka-rGE/strings.xml
index 5048e4e..de88b0d 100644
--- a/packages/SettingsLib/res/values-ka-rGE/strings.xml
+++ b/packages/SettingsLib/res/values-ka-rGE/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi-ს დაწვრილებითი აღრიცხვის ჩართვა"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi‑Fi-დან ფიჭურ კავშირზე პროაქტიური ჰენდოვერი"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi Roam სკანირების მუდამ დაშვება"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"მოძველებული DHCP კლიენტის გამოყენება"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ფიჭური მონაცემები ყოველთვის აქტიურია"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ხმის აბსოლუტური სიძლიერის გათიშვა"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"უსადენო ეკრანის სერტიფიცირების ვარიანტების ჩვენება"</string>
diff --git a/packages/SettingsLib/res/values-kk-rKZ/strings.xml b/packages/SettingsLib/res/values-kk-rKZ/strings.xml
index e75efc8..4768b79 100644
--- a/packages/SettingsLib/res/values-kk-rKZ/strings.xml
+++ b/packages/SettingsLib/res/values-kk-rKZ/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi егжей-тегжейлі журналға тір. қосу"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi‑Fi желісін күштеп ұялыға ауыстыру"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi роумингін іздеулерге әрқашан рұқсат ету"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Бұрынғы DHCP клиентін пайдалану"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Ұялы деректер әрқашан белсенді"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Абсолютті дыбыс деңгейін өшіру"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Сымсыз дисплей растау опцияларын көрсету"</string>
diff --git a/packages/SettingsLib/res/values-km-rKH/strings.xml b/packages/SettingsLib/res/values-km-rKH/strings.xml
index b86d59f..a79fd98 100644
--- a/packages/SettingsLib/res/values-km-rKH/strings.xml
+++ b/packages/SettingsLib/res/values-km-rKH/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"បើកកំណត់ហេតុរៀបរាប់វ៉ាយហ្វាយ"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"វ៉ាយហ្វាយបង្ខំទៅការបញ្ជូនចល័ត"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"តែងតែអនុញ្ញាតការវិភាគរ៉ូមវ៉ាយហ្វាយ"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"ប្រើម៉ាស៊ីនកូន DHCP ចាស់"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ទិន្នន័យចល័តសកម្មជានិច្ច"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"បិទកម្រិតសំឡេងលឺខ្លាំង"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"បង្ហាញជម្រើសសម្រាប់វិញ្ញាបនបត្របង្ហាញឥតខ្សែ"</string>
diff --git a/packages/SettingsLib/res/values-kn-rIN/strings.xml b/packages/SettingsLib/res/values-kn-rIN/strings.xml
index 16584db..b70ea63 100644
--- a/packages/SettingsLib/res/values-kn-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-kn-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi ವೆರ್ಬೋಸ್ ಲಾಗಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"ಸೆಲ್ಯುಲರ್ ಹಸ್ತಾಂತರಿಸಲು ಆಕ್ರಮಣಕಾರಿ Wi‑Fi"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi-Fi ರೋಮ್ ಸ್ಕ್ಯಾನ್ಗಳನ್ನು ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"ಹಿಂದಿನ DHCP ಕ್ಲೈಂಟ್ ಬಳಸಿ"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ಸೆಲ್ಯುಲರ್ ಡೇಟಾ ಯಾವಾಗಲೂ ಸಕ್ರಿಯ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ಸಂಪೂರ್ಣ ವಾಲ್ಯೂಮ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ವೈರ್ಲೆಸ್ ಪ್ರದರ್ಶನ ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸು"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index a76282e..fed4211 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi-Fi 상세 로깅 사용"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi-Fi-셀룰러 적극 핸드오버"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi 로밍 스캔 항상 허용"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"이전 DHCP 클라이언트 사용"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"모바일 데이터 항상 활성화"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"절대 볼륨 사용 안함"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"무선 디스플레이 인증서 옵션 표시"</string>
diff --git a/packages/SettingsLib/res/values-ky-rKG/strings.xml b/packages/SettingsLib/res/values-ky-rKG/strings.xml
index f6a7592..19c18e6 100644
--- a/packages/SettingsLib/res/values-ky-rKG/strings.xml
+++ b/packages/SettingsLib/res/values-ky-rKG/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi дайын-даректүү протоколун иштетүү"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Уюктук хэндоверге өжөр Wi-Fi"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi-Fi Роуминг Скандоо мүмкүнчүлүгүнө ар дайым уруксат берилсин"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Эскирген DHCP кардарын колдонуу"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Уюлдук дайындар ар дайым активдүү"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Үндүн абсолюттук деңгээли өчүрүлсүн"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Зымсыз дисплейди сертификатто мүмкүнчүлүктөрүн көргөзүү"</string>
diff --git a/packages/SettingsLib/res/values-lo-rLA/strings.xml b/packages/SettingsLib/res/values-lo-rLA/strings.xml
index f8b1ba5f..f6f7e6b 100644
--- a/packages/SettingsLib/res/values-lo-rLA/strings.xml
+++ b/packages/SettingsLib/res/values-lo-rLA/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"ເປີດນຳໃຊ້ການເກັບປະຫວັດ Verbose Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"ໃຫ້ບຸລິມະສິດການປ່ຽນຈາກ Wi-Fi ເປັນເຄືອຂ່າຍໂທລະສັບ"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ອະນຸຍາດການສະແກນການໂຣມ Wi‑Fi ສະເໝີ"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"ໃຊ້ລູກຄ້າ DHCP ຕຳນານ"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ຂໍ້ມູນມືຖືເປີດຢູ່ສະເໝີ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ປິດໃຊ້ລະດັບສຽງສົມບູນ"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ສະແດງໂຕເລືອກສຳລັບການສະແດງການຮັບຮອງລະບົບໄຮ້ສາຍ"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 0e3180d..3358683 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Įgal. „Wi‑Fi“ daugiaž. įraš. į žurnalą"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agres. „Wi‑Fi“ duom. perd. į mob. tinklą"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Visada leisti „Wi-Fi“ tarptiklinio ryšio nuskaitymą"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Naudoti seną DHCP kliento programą"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Korinio ryšio duomenys visada aktyvūs"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Išjungti didžiausią garsą"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Rodyti belaidžio rodymo sertifikavimo parinktis"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 62d6808..bcdba2d 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Iespējot Wi‑Fi detalizēto reģistrēšanu"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agresīva pāreja no Wi‑Fi uz mobilo tīklu"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Vienmēr atļaut Wi‑Fi meklēšanu"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Lietot mantoto DHCP klientu"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Vienmēr aktīvs mobilo datu savienojums"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Atspējot absolūto skaļumu"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Rādīt bezvadu attēlošanas sertifikācijas iespējas"</string>
diff --git a/packages/SettingsLib/res/values-mk-rMK/strings.xml b/packages/SettingsLib/res/values-mk-rMK/strings.xml
index c50013a..9839ebb 100644
--- a/packages/SettingsLib/res/values-mk-rMK/strings.xml
+++ b/packages/SettingsLib/res/values-mk-rMK/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Овозможи преопширно пријавување Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Агресивно предавање од Wi‑Fi на мобилен"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Секогаш дозволувај Wi‑Fi скенирање во роаминг"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Користете наследен клиент на DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Мобилниот интернет е секогаш активен"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Оневозможете апсолутна јачина на звук"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Покажи ги опциите за безжичен приказ на сертификат"</string>
diff --git a/packages/SettingsLib/res/values-ml-rIN/strings.xml b/packages/SettingsLib/res/values-ml-rIN/strings.xml
index 6c62f9f..6cab99a 100644
--- a/packages/SettingsLib/res/values-ml-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-ml-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"വൈഫൈ വെർബോസ് ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"സെല്ലുലാർ ഹാൻഡ്ഓവറിലേക്ക് വൈഫൈ അഗ്രസ്സീവാക്കുക"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"എപ്പോഴും വൈഫൈ റോം സ്കാൻ അനുവദിക്കൂ"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"പഴയ DHCP ക്ലയന്റ് ഉപയോഗിക്കുക"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"സെല്ലുലാർ ഡാറ്റ എല്ലായ്പ്പോഴും സജീവം"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"അബ്സൊല്യൂട്ട് വോളിയം പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"വയർലെസ് ഡിസ്പ്ലേ സർട്ടിഫിക്കേഷനായി ഓപ്ഷനുകൾ ദൃശ്യമാക്കുക"</string>
diff --git a/packages/SettingsLib/res/values-mn-rMN/strings.xml b/packages/SettingsLib/res/values-mn-rMN/strings.xml
index a4a030e..e0ea442 100644
--- a/packages/SettingsLib/res/values-mn-rMN/strings.xml
+++ b/packages/SettingsLib/res/values-mn-rMN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi Verbose лог-г идэвхжүүлэх"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Үүрэн шилжүүлэг рүү идэвхтэй Wi‑Fi"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi Роум сканыг байнга зөвшөөрөх"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Хуучин DHCP харилцагчийг хэрэглэх"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Үүрэн холбооны датаг үргэлж идэвхтэй байлгана"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Үнэмлэхүй дууны түвшинг идэвхгүй болгох"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Утасгүй дэлгэцийн сертификатын сонголтыг харуулах"</string>
diff --git a/packages/SettingsLib/res/values-mr-rIN/strings.xml b/packages/SettingsLib/res/values-mr-rIN/strings.xml
index 8e5c4dd..7ae8b17 100644
--- a/packages/SettingsLib/res/values-mr-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-mr-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"वाय-फाय शब्दपाल्हाळ लॉगिंग सक्षम करा"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"वाय-फायवरून सेल्युलरवर बळपूर्वक जाणे"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"वाय-फाय रोम स्कॅनला नेहमी अनुमती द्या"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"परंपरागत DHCP क्लायंटचा वापर करा"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"सेल्युलर डेटा नेहमी सक्रिय"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"संपूर्ण आवाज अक्षम करा"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"वायरलेस प्रदर्शन प्रमाणिकरणासाठी पर्याय दर्शवा"</string>
diff --git a/packages/SettingsLib/res/values-ms-rMY/strings.xml b/packages/SettingsLib/res/values-ms-rMY/strings.xml
index d9227a1..794482f 100644
--- a/packages/SettingsLib/res/values-ms-rMY/strings.xml
+++ b/packages/SettingsLib/res/values-ms-rMY/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Dayakan Pengelogan Berjela-jela Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Penyerahan Wi-Fi ke Selular agresif"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Sentiasa benarkan Imbasan Perayauan Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Gunakan pelanggan DHCP lama"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Data selular sentiasa aktif"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Lumpuhkan kelantangan mutlak"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Tunjukkan pilihan untuk pensijilan paparan wayarles"</string>
diff --git a/packages/SettingsLib/res/values-my-rMM/strings.xml b/packages/SettingsLib/res/values-my-rMM/strings.xml
index d53cbcc..8c64bd7 100644
--- a/packages/SettingsLib/res/values-my-rMM/strings.xml
+++ b/packages/SettingsLib/res/values-my-rMM/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi Verbose မှတ်တမ်းတင်ခြင်းအား ဖွင့်မည်"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"ထိရောက်သည့် Wi‑Fi မှ ဆယ်လူလာ လွှဲပြောင်းမှု"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi ရွမ်းရှာဖွေမှုကို အမြဲတမ်း ခွင့်ပြုမည်"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"DHCP ကလိုင်းယင့် အဟောင်းအားသုံးရန်"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ဆဲလ်လူလာဒေတာ အမြဲတမ်းဖွင့်ထားသည်"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ပကတိ အသံနှုန်း သတ်မှတ်ချက် ပိတ်ရန်"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ကြိုးမဲ့ အခင်းအကျင်း အသိအမှတ်ပြုလက်မှတ်အတွက် ရွေးချယ်စရာများပြရန်"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 2ede01b..11ce40c 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Aktiver detaljert Wi-Fi-loggføring"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressiv overføring fra Wi-Fi til mobil"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Tillat alltid skanning for Wi-Fi-roaming"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Bruk eldre DHCP-klient"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobildata er alltid aktiv"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Slå av funksjonen for absolutt volum"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Vis alternativer for sertifisering av trådløs skjerm"</string>
diff --git a/packages/SettingsLib/res/values-ne-rNP/strings.xml b/packages/SettingsLib/res/values-ne-rNP/strings.xml
index 264673e..d1f4607 100644
--- a/packages/SettingsLib/res/values-ne-rNP/strings.xml
+++ b/packages/SettingsLib/res/values-ne-rNP/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"वाइफाइ वर्बोज लग सक्षम पार्नुहोस्"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"सेलुलर समायोजनका लागि आक्रामक वाइफाइ"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"वाइफाइ घुम्ने स्क्यान गर्न सधैँ अनुमति दिनुहोस्"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"लिगेसी DHCP ग्राहक प्रयोग गर्नुहोस्"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"सेलुलर डेटा सधैं सक्रिय"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"निरपेक्ष आवाज असक्षम गर्नुहोस्"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ताररहित प्रदर्शन प्रमाणीकरणका लागि विकल्पहरू देखाउनुहोस्"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 1fae8b9..abca5c8 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Uitgebreide wifi-logregistratie insch."</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agressieve handover van wifi naar mobiel"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Altijd roamingscans voor wifi toestaan"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Oude DHCP-client gebruiken"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobiele gegevens altijd actief"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Absoluut volume uitschakelen"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Opties weergeven voor certificering van draadloze weergave"</string>
diff --git a/packages/SettingsLib/res/values-pa-rIN/strings.xml b/packages/SettingsLib/res/values-pa-rIN/strings.xml
index cd08fda..3234c49 100644
--- a/packages/SettingsLib/res/values-pa-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-pa-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi ਵਰਬੋਸ ਲੌਗਿੰਗ ਸਮਰੱਥ ਬਣਾਓ"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"ਸੈਲਿਊਲਰ ਹੈਂਡਓਵਰ ਲਈ ਅਗਰੈਸਿਵ Wi‑Fi"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ਹਮੇਸ਼ਾਂ Wi‑Fi Roam Scans ਦੀ ਆਗਿਆ ਦਿਓ"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"ਲੀਗੇਸੀ DHCP ਕਲਾਈਂਟ ਵਰਤੋ"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ਸੈਲਿਊਲਰ ਡੇਟਾ ਹਮੇਸ਼ਾ ਕਿਰਿਆਸ਼ੀਲ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ਪੂਰਨ ਵੌਲਯੂਮ ਨੂੰ ਅਯੋਗ ਬਣਾਓ"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ਵਾਇਰਲੈਸ ਡਿਸਪਲੇ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਚੋਣਾਂ ਦਿਖਾਓ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index f81b6b0..16b3df2 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Szczegółowy dziennik Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Przełączaj na sieć komórkową"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Zawsze szukaj Wi-Fi w roamingu"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Użyj starszego klienta DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Dane komórkowe zawsze aktywne"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Wyłącz głośność bezwzględną"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Pokaż opcje certyfikacji wyświetlacza bezprzewodowego"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 07e7602..6125493 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Ativar registro extenso de Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Transf. agressiva de Wi-Fi para celular"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Sempre permitir verif. de roaming de Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Usar cliente DHCP legado"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Dados da rede celular sempre ativos"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Desativar volume absoluto"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostrar opções de certificação de Display sem fio"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 4cd23fe..440512d 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Ativar o registo verboso de Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Transm. agressiva de Wi-Fi p/ rede móvel"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Permitir sempre a deteção de Wi-Fi em roaming"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Utilizar cliente DHCP antigo"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Dados móveis sempre ativados"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Desativar volume absoluto"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostrar opções da certificação de display sem fios"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 07e7602..6125493 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Ativar registro extenso de Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Transf. agressiva de Wi-Fi para celular"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Sempre permitir verif. de roaming de Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Usar cliente DHCP legado"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Dados da rede celular sempre ativos"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Desativar volume absoluto"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Mostrar opções de certificação de Display sem fio"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index dbc0d40..1dc0c7d 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Înregistrare prin Wi-Fi de volume mari de date"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Înlocuire Wi-Fi cu mobil agresivă"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Se permite întotdeauna scanarea traficului Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Folosiți vechiul client DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Conexiunea de date mobile este întotdeauna activată"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Dezactivați volumul absolut"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Afișați opțiunile pentru certificarea Ecran wireless"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index f87778f..f26264a 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Подробный журнал Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Переключаться на мобильную сеть"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Всегда включать поиск сетей Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Использовать устаревший DHCP-клиент"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Не отключать передачу данных"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Отключить абсолютный уровень громкости"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Показывать параметры сертификации беспроводных мониторов"</string>
diff --git a/packages/SettingsLib/res/values-si-rLK/strings.xml b/packages/SettingsLib/res/values-si-rLK/strings.xml
index bd503d1..0de437b 100644
--- a/packages/SettingsLib/res/values-si-rLK/strings.xml
+++ b/packages/SettingsLib/res/values-si-rLK/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"විස්තරාත්මක Wi‑Fi ලොග් කිරීම සබල කරන්න"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"ආක්රමණික Wi‑Fi සිට සෙලියුලර් බාර දීම"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi රෝම් පරිලෝකන වෙතට සැමවිට අවසර දෙන්න"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"ලෙගසි DHCP සේවාලාභියා භාවිත කරන්න"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"සෙලියුලර් දත්ත සැමවිට ක්රියාකාරීය"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"නිරපේක්ෂ හඩ පරිමාව අබල කරන්න"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"නොරැහැන් සංදර්ශක සහතිකය සඳහා විකල්ප පෙන්වන්න"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 64dd02b..3e356ee 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Podrobné denníky Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agres. odovzdávať Wi-Fi na mobilnú sieť"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Vždy povoliť funkciu Wi-Fi Roam Scans"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Použiť starý klient DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobilné dáta vždy aktívne"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Zakázať absolútnu hlasitosť"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Zobraziť možnosti certifikácie bezdrôtového zobrazenia"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 19dbfed..b1e1760 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Omogoči podrob. zapis. dnevnika za Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Odločen prehod iz Wi-Fi-ja v mobil. omr."</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Vedno omogoči iskanje omrežij Wi-Fi za gostovanje"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Uporaba starejšega odjemalca DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Prenos podatkov v mobilnih omrežjih je vedno aktiven"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Onemogočanje absolutnega praga glasnosti"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Pokaži možnosti za potrdilo brezžičnega zaslona"</string>
diff --git a/packages/SettingsLib/res/values-sq-rAL/strings.xml b/packages/SettingsLib/res/values-sq-rAL/strings.xml
index 4babf78..f45d047 100644
--- a/packages/SettingsLib/res/values-sq-rAL/strings.xml
+++ b/packages/SettingsLib/res/values-sq-rAL/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Aktivizo hyrjen Wi-Fi Verbose"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Dorëzimi agresiv i Wi‑Fi te rrjeti celular"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Lejo gjithmonë skanimet për Wi-Fi edhe kur je në lëvizje"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Përdor klientin DHCP të versionit paraprak"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Të dhënat celulare gjithmonë aktive"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Çaktivizo volumin absolut"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Shfaq opsionet për certifikimin e ekranit valor"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 6cd2b30..b47bcf1 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Омогући детаљнију евиденцију за Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Агресиван прелаз са Wi‑Fi мреже на мобилну"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Увек дозволи скенирање Wi‑Fi-ја у ромингу"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Користи застарели DHCP клијент"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Подаци за мобилне уређаје су увек активни"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Онемогући главно подешавање јачине звука"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Приказ опција за сертификацију бежичног екрана"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index ddb9a66..29c7481 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Aktivera utförlig loggning för Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Aggressiv överlämning fr. Wi-Fi t. mobil"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Tillåt alltid sökning efter Wi-Fi-roaming"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Använd äldre DHCP-klient"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobildata alltid aktiverad"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Inaktivera Absolute volume"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Visa certifieringsalternativ för Wi-Fi-skärmdelning"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index ae6ecf1..5938946 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Washa Uwekaji kumbukumbu za WiFi kutumia Sauti"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Ukabidhi kutoka Wifi kwenda Mtandao wa Simu"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Ruhusu Uchanganuzi wa Matumizi ya Mitandao mingine"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Tumia kiteja cha DHCP kilichopitwa na wakati"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Data ya kifaa cha mkononi inatumika kila wakati"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Zima sauti kamili"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Onyesha chaguo za cheti cha kuonyesha pasiwaya"</string>
diff --git a/packages/SettingsLib/res/values-ta-rIN/strings.xml b/packages/SettingsLib/res/values-ta-rIN/strings.xml
index 40b91a7..ca6bde0 100644
--- a/packages/SettingsLib/res/values-ta-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-ta-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"வைஃபை அதிவிவர நுழைவை இயக்கு"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"ஒத்துழைக்காத வைஃபையிலிருந்து செல்லுலாருக்கு மாறு"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"எப்போதும் வைஃபை ரோமிங் ஸ்கேன்களை அனுமதி"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"அதிகாரப்பூர்வ DHCP க்ளையன்ட்டைப் பயன்படுத்து"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"செல்லுலார் தரவு எப்போதும் இயக்கத்தில்"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"அப்சல்யூட் ஒலியளவு அம்சத்தை முடக்கு"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"வயர்லெஸ் காட்சி சான்றுக்கான விருப்பங்களைக் காட்டு"</string>
diff --git a/packages/SettingsLib/res/values-te-rIN/strings.xml b/packages/SettingsLib/res/values-te-rIN/strings.xml
index bc9e847..374b62c 100644
--- a/packages/SettingsLib/res/values-te-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-te-rIN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi విశదీకృత లాగింగ్ను ప్రారంభించండి"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi‑Fi నుండి సెల్యులార్కి తీవ్ర ఒత్తిడితో మారడం"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi‑Fi సంచార స్కాన్లను ఎల్లప్పుడూ అనుమతించు"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"లెగసీ DHCP క్లయింట్ను ఉపయోగించు"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"ఎల్లప్పుడూ సెల్యులార్ డేటాను సక్రియంగా ఉంచు"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"సంపూర్ణ వాల్యూమ్ను నిలిపివేయి"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"వైర్లెస్ ప్రదర్శన ప్రమాణపత్రం కోసం ఎంపికలను చూపు"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 6ca61ed..5337a0d 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"เปิดใช้การบันทึกรายละเอียด Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"สลับ Wi‑Fi เป็นมือถือเมื่อสัญญาณอ่อน"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ใช้การสแกน Wi-Fi ข้ามเครือข่ายเสมอ"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"ใช้ไคลเอ็นต์ DHCP เดิม"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"เปิดใช้ข้อมูลมือถือเสมอ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ปิดใช้การควบคุมระดับเสียงของอุปกรณ์อื่น"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"แสดงตัวเลือกสำหรับการรับรองการแสดงผล แบบไร้สาย"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 95976d2..07b9d54 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"I-enable ang Pagla-log sa Wi‑Fi Verbose"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Agresibong paglipat ng Wi‑Fi sa Cellular"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Palaging payagan ang Mga Pag-scan sa Roaming ng Wi‑Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Gumamit ng legacy na DHCP client"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Palaging aktibo ang cellular data"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"I-disable ang absolute volume"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Ipakita ang mga opsyon para sa certification ng wireless display"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index f3087bc..2417572 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Kablosuz Ayrıntılı Günlük Kaydını etkinleştir"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Kablosuz\'dan Hücresel Ağa agresif geçiş"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Kablosuz Dolaşım Taramalarına daima izin ver"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Eski DHCP istemcisini kullan"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Hücresel veri her zaman etkin"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Mutlak sesi iptal et"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Kablosuz ekran sertifikası seçeneklerini göster"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 446c82d..c288d17 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Докладний запис у журнал Wi-Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Перемикатись на моб. мережу"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Завжди шукати мережі Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Використовувати старий клієнт DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Не вимикати передавання даних"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Вимкнути абсолютну гучність"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Показати параметри сертифікації бездротового екрана"</string>
diff --git a/packages/SettingsLib/res/values-ur-rPK/strings.xml b/packages/SettingsLib/res/values-ur-rPK/strings.xml
index 71e2aa6..90ac0ac 100644
--- a/packages/SettingsLib/res/values-ur-rPK/strings.xml
+++ b/packages/SettingsLib/res/values-ur-rPK/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi وربوس لاگنگ فعال کریں"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"جارحانہ Wi‑Fi سے سیلولر ہینڈ اوور"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ہمیشہ Wi‑Fi روم اسکینز کی اجازت دیں"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"پرانا DHCP کلائنٹ استعمال کریں"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"سیلولر ڈیٹا کو ہمیشہ فعال رکھیں"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"مطلق والیوم کو غیر فعال کریں"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"وائرلیس ڈسپلے سرٹیفیکیشن کیلئے اختیارات دکھائیں"</string>
diff --git a/packages/SettingsLib/res/values-uz-rUZ/strings.xml b/packages/SettingsLib/res/values-uz-rUZ/strings.xml
index f750744..6749cfd 100644
--- a/packages/SettingsLib/res/values-uz-rUZ/strings.xml
+++ b/packages/SettingsLib/res/values-uz-rUZ/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Batafsil Wi-Fi jurnali"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Mobil internetga o‘tish"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Wi-Fi tarmoqlarini qidirishga doim ruxsat"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Eski DHCP mijoz-dasturidan foydalanish"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Mobil internet o‘chirilmasin"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Ovoz balangligining mutlaq darajasini o‘chirib qo‘yish"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Simsiz monitorlarni sertifikatlash parametrini ko‘rsatish"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 5dba616..8ffe7c8 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Bật ghi nhật ký chi tiết Wi‑Fi"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Chuyển vùng Wi‑Fi tích cực sang mạng DĐ"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Luôn cho phép quét chuyển vùng Wi‑Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Sử dụng ứng dụng DHCP cũ"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Dữ liệu di động luôn hoạt động"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Vô hiệu hóa âm lượng tuyệt đối"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Hiển thị tùy chọn chứng nhận hiển thị không dây"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index be763ec..96a9b54 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"启用WLAN详细日志记录功能"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"主动从WLAN网络切换到移动数据网络"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"一律允许WLAN漫游扫描"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"使用旧版 DHCP 客户端"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"始终开启移动数据网络"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"停用绝对音量功能"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"显示无线显示认证选项"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 0eb926d..4af73b3 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"啟用 Wi‑Fi 詳細記錄"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"加強 Wi-Fi 至流動數據轉換"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"永遠允許 Wi-Fi 漫遊掃瞄"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"使用舊的 DHCP 用戶端"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"經常啟用流動數據"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"停用絕對音量功能"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"顯示無線螢幕分享認證的選項"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 0d680b9..02f2a57 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"啟用 Wi‑Fi 詳細紀錄設定"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Wi-Fi 至行動數據轉換強化"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"一律允許 Wi-Fi 漫遊掃描"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"使用舊版 DHCP 用戶端"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"行動數據連線一律保持啟用狀態"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"停用絕對音量功能"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"顯示無線螢幕分享認證的選項"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 1d68c77..c5e7fab 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -167,7 +167,6 @@
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Nika amandlaukungena kwe-Wi-Fi Verbose"</string>
<string name="wifi_aggressive_handover" msgid="9194078645887480917">"Ukunikezela kwe-Wi-Fi kuya kuselula okunamandla"</string>
<string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"Vumela njalo ukuskena kokuzula kwe-Wi-Fi"</string>
- <string name="legacy_dhcp_client" msgid="694426978909127287">"Sebenzisa iklayenti le-legacy le-DHCP"</string>
<string name="mobile_data_always_on" msgid="7745605759775320362">"Idatha yeselula ihlala isebenza"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Khubaza ivolumu ngokuphelele"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"Bonisa izinketho zokunikeza isitifiketi ukubukeka okungenantambo"</string>
diff --git a/packages/Shell/Android.mk b/packages/Shell/Android.mk
index f8c13d6..73a0449 100644
--- a/packages/Shell/Android.mk
+++ b/packages/Shell/Android.mk
@@ -5,7 +5,8 @@
LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 \
+ android-support-documents-archive
LOCAL_PACKAGE_NAME := Shell
LOCAL_CERTIFICATE := platform
diff --git a/packages/Shell/src/com/android/shell/BugreportStorageProvider.java b/packages/Shell/src/com/android/shell/BugreportStorageProvider.java
index 814aa8c..0f92fa6 100644
--- a/packages/Shell/src/com/android/shell/BugreportStorageProvider.java
+++ b/packages/Shell/src/com/android/shell/BugreportStorageProvider.java
@@ -25,6 +25,7 @@
import android.provider.DocumentsContract.Document;
import android.provider.DocumentsContract.Root;
import android.provider.DocumentsProvider;
+import android.support.provider.DocumentArchiveHelper;
import android.webkit.MimeTypeMap;
import java.io.File;
@@ -44,10 +45,12 @@
};
private File mRoot;
+ private DocumentArchiveHelper mArchiveHelper;
@Override
public boolean onCreate() {
mRoot = new File(getContext().getFilesDir(), "bugreports");
+ mArchiveHelper = new DocumentArchiveHelper(this, (char) 0);
return true;
}
@@ -66,6 +69,10 @@
@Override
public Cursor queryDocument(String documentId, String[] projection)
throws FileNotFoundException {
+ if (mArchiveHelper.isArchivedDocument(documentId)) {
+ return mArchiveHelper.queryDocument(documentId, projection);
+ }
+
final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection));
if (DOC_ID_ROOT.equals(documentId)) {
final RowBuilder row = result.newRow();
@@ -84,6 +91,11 @@
public Cursor queryChildDocuments(
String parentDocumentId, String[] projection, String sortOrder)
throws FileNotFoundException {
+ if (mArchiveHelper.isArchivedDocument(parentDocumentId) ||
+ mArchiveHelper.isSupportedArchiveType(getDocumentType(parentDocumentId))) {
+ return mArchiveHelper.queryChildDocuments(parentDocumentId, projection, sortOrder);
+ }
+
final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection));
if (DOC_ID_ROOT.equals(parentDocumentId)) {
final File[] files = mRoot.listFiles();
@@ -100,6 +112,10 @@
public ParcelFileDescriptor openDocument(
String documentId, String mode, CancellationSignal signal)
throws FileNotFoundException {
+ if (mArchiveHelper.isArchivedDocument(documentId)) {
+ return mArchiveHelper.openDocument(documentId, mode, signal);
+ }
+
if (ParcelFileDescriptor.parseMode(mode) != ParcelFileDescriptor.MODE_READ_ONLY) {
throw new FileNotFoundException("Failed to open: " + documentId + ", mode = " + mode);
}
@@ -153,12 +169,18 @@
}
private void addFileRow(MatrixCursor result, File file) {
+ String mimeType = getTypeForName(file.getName());
+ int flags = Document.FLAG_SUPPORTS_DELETE;
+ if (mArchiveHelper.isSupportedArchiveType(mimeType)) {
+ flags |= Document.FLAG_ARCHIVE;
+ }
+
final RowBuilder row = result.newRow();
row.add(Document.COLUMN_DOCUMENT_ID, getDocIdForFile(file));
- row.add(Document.COLUMN_MIME_TYPE, getTypeForName(file.getName()));
+ row.add(Document.COLUMN_MIME_TYPE, mimeType);
row.add(Document.COLUMN_DISPLAY_NAME, file.getName());
row.add(Document.COLUMN_LAST_MODIFIED, file.lastModified());
- row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE);
+ row.add(Document.COLUMN_FLAGS, flags);
row.add(Document.COLUMN_SIZE, file.length());
}
}
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_gain_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_gain_animation.xml
deleted file mode 100644
index ebc6a4a7..0000000
--- a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_gain_animation.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-
- <objectAnimator
- android:propertyName="scaleX"
- android:valueTo="1.0"
- android:interpolator="@android:interpolator/fast_out_slow_in"
- android:duration="@integer/recents_tv_pip_focus_anim_duration" />
- <objectAnimator
- android:propertyName="scaleY"
- android:valueTo="1.0"
- android:interpolator="@android:interpolator/fast_out_slow_in"
- android:duration="@integer/recents_tv_pip_focus_anim_duration" />
-</set>
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_lose_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_lose_animation.xml
deleted file mode 100644
index 95499bd..0000000
--- a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_lose_animation.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-
- <objectAnimator
- android:propertyName="scaleX"
- android:valueTo="0.7"
- android:interpolator="@android:interpolator/fast_out_slow_in"
- android:duration="@integer/recents_tv_pip_focus_anim_duration" />
- <objectAnimator
- android:propertyName="scaleY"
- android:valueTo="0.7"
- android:interpolator="@android:interpolator/fast_out_slow_in"
- android:duration="@integer/recents_tv_pip_focus_anim_duration" />
-</set>
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml
index 7555bdd..52e3a04 100644
--- a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml
+++ b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml
@@ -14,8 +14,21 @@
limitations under the License.
-->
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
- android:propertyName="translationY"
- android:valueTo="0dp"
- android:interpolator="@android:interpolator/fast_out_slow_in"
- android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <objectAnimator
+ android:propertyName="translationY"
+ android:valueTo="0dp"
+ android:interpolator="@android:interpolator/fast_out_slow_in"
+ android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:valueTo="1.0"
+ android:interpolator="@android:interpolator/fast_out_slow_in"
+ android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:valueTo="1.0"
+ android:interpolator="@android:interpolator/fast_out_slow_in"
+ android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+</set>
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml
index b40ccd4..b571aa5 100644
--- a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml
+++ b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml
@@ -14,8 +14,21 @@
limitations under the License.
-->
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
- android:propertyName="translationY"
- android:valueTo="-57dp"
- android:interpolator="@android:interpolator/fast_out_slow_in"
- android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <objectAnimator
+ android:propertyName="translationY"
+ android:valueTo="-57dp"
+ android:interpolator="@android:interpolator/fast_out_slow_in"
+ android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:valueTo="0.7"
+ android:interpolator="@android:interpolator/fast_out_slow_in"
+ android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:valueTo="0.7"
+ android:interpolator="@android:interpolator/fast_out_slow_in"
+ android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+</set>
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_scrim_fade_in_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_scrim_fade_in_animation.xml
new file mode 100644
index 0000000..257bf35
--- /dev/null
+++ b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_scrim_fade_in_animation.xml
@@ -0,0 +1,21 @@
+<?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.
+-->
+
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+ android:propertyName="alpha"
+ android:valueTo="1"
+ android:interpolator="@android:interpolator/fast_out_slow_in"
+ android:duration="100" />
diff --git a/packages/SystemUI/res/drawable/tv_pip_recents_overlay_scrim.xml b/packages/SystemUI/res/drawable/tv_pip_recents_overlay_scrim.xml
new file mode 100644
index 0000000..57bee75
--- /dev/null
+++ b/packages/SystemUI/res/drawable/tv_pip_recents_overlay_scrim.xml
@@ -0,0 +1,23 @@
+<!--
+ 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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+
+ <gradient
+ android:startColor="#80000000"
+ android:endColor="#00000000"
+ android:angle="90"/>
+</shape>
diff --git a/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml b/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml
index 4a67000..557bbe6 100644
--- a/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml
+++ b/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml
@@ -16,14 +16,31 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:gravity="top|center_horizontal">
+ android:layout_height="wrap_content"
+ android:gravity="top|center_horizontal"
+ android:orientation="vertical">
<com.android.systemui.tv.pip.PipRecentsControlsView
android:id="@+id/pip_controls"
android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:clipToPadding="false">
+
+ <View
+ android:id="@+id/scrim"
+ android:layout_width="160dp"
+ android:layout_height="32dp"
+ android:translationY="-46dp"
+ android:layout_gravity="top|center_horizontal"
+ android:background="@drawable/tv_pip_recents_overlay_scrim" />
+ <com.android.systemui.tv.pip.PipControlsView
+ android:id="@+id/pip_control_contents"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_gravity="top|center_horizontal" />
+ </com.android.systemui.tv.pip.PipRecentsControlsView>
<View
android:id="@+id/recents"
diff --git a/packages/SystemUI/res/values-be-rBY/strings.xml b/packages/SystemUI/res/values-be-rBY/strings.xml
index 4fcf8ff..b650c22 100644
--- a/packages/SystemUI/res/values-be-rBY/strings.xml
+++ b/packages/SystemUI/res/values-be-rBY/strings.xml
@@ -438,7 +438,7 @@
<string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дакраніцеся, каб уключыць гук."</string>
<string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Дакраніцеся, каб уключыць вібрацыю. Можа быць адключаны гук службаў спецыяльных магчымасцей."</string>
<string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Дакраніцеся, каб адключыць гук. Можа быць адключаны гук службаў спецыяльных магчымасцей."</string>
- <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Паказваецца наступная колькасць рэгулятараў гучнасці: %s. Правядзіце пальцам, каб закрыць іх."</string>
+ <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Паказваецца наступная колькасць рэгулятараў гучнасці: %s. Правядзіце пальцам уверх, каб закрыць іх."</string>
<string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Рэгулятары гучнасці схаваны"</string>
<string name="system_ui_tuner" msgid="708224127392452018">"Наладка сістэмнага інтэрфейсу карыстальніка"</string>
<string name="show_battery_percentage" msgid="5444136600512968798">"Паказваць працэнт зараду акумулятара"</string>
diff --git a/packages/SystemUI/res/values-be-rBY/strings_tv.xml b/packages/SystemUI/res/values-be-rBY/strings_tv.xml
index 6a9b56d..6eb71e0 100644
--- a/packages/SystemUI/res/values-be-rBY/strings_tv.xml
+++ b/packages/SystemUI/res/values-be-rBY/strings_tv.xml
@@ -24,8 +24,8 @@
<string name="pip_play" msgid="674145557658227044">"Прайграць"</string>
<string name="pip_pause" msgid="8412075640017218862">"Прыпыніць"</string>
<string name="pip_hold_home" msgid="340086535668778109">"Утрым. "<b>"HOME"</b>" для кір. PIP"</string>
- <string name="pip_onboarding_title" msgid="7850436557670253991">"Малюнак у малюнку"</string>
- <string name="pip_onboarding_description" msgid="4028124563309465267">"Гэта дазваляе захоўваць ваша відэа ў полі зроку, пакуль вы не пачнеце прайграванне іншага. Націсніце і ўтрымлівайце "<b>"HOME"</b>" для кіравання."</string>
+ <string name="pip_onboarding_title" msgid="7850436557670253991">"Відарыс у відарысе"</string>
+ <string name="pip_onboarding_description" msgid="4028124563309465267">"Гэта дазваляе захоўваць ваша відэа ў полі зроку, пакуль вы не пачняце прайграванне іншага. Націсніце і ўтрымлівайце "<b>"HOME"</b>" для кіравання."</string>
<string name="pip_onboarding_button" msgid="3957426748484904611">"Зразумела"</string>
<string name="recents_tv_dismiss" msgid="3555093879593377731">"Адхіліць"</string>
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 7efa4d9..f213312 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -392,7 +392,7 @@
<string name="clear_all_notifications_text" msgid="814192889771462828">"Alle löschen"</string>
<string name="media_projection_action_text" msgid="8470872969457985954">"Jetzt starten"</string>
<string name="empty_shade_text" msgid="708135716272867002">"Keine Benachrichtigungen"</string>
- <string name="device_owned_footer" msgid="3802752663326030053">"Das Gerät wird möglicherweise überwacht."</string>
+ <string name="device_owned_footer" msgid="3802752663326030053">"Aktivität auf dem Gerät kann vom Eigentümer protokolliert werden"</string>
<string name="profile_owned_footer" msgid="8021888108553696069">"Profil wird möglicherweise überwacht."</string>
<string name="vpn_footer" msgid="2388611096129106812">"Das Netzwerk wird möglicherweise überwacht."</string>
<string name="monitoring_title_device_owned" msgid="7121079311903859610">"Geräteüberwachung"</string>
diff --git a/packages/SystemUI/res/values-es/strings_tv.xml b/packages/SystemUI/res/values-es/strings_tv.xml
index 1ddfb5f..35153d4 100644
--- a/packages/SystemUI/res/values-es/strings_tv.xml
+++ b/packages/SystemUI/res/values-es/strings_tv.xml
@@ -25,7 +25,7 @@
<string name="pip_pause" msgid="8412075640017218862">"Pausar"</string>
<string name="pip_hold_home" msgid="340086535668778109">"Mantén el botón "<b>"INICIO"</b>" pulsado para control de PIP"</string>
<string name="pip_onboarding_title" msgid="7850436557670253991">"Imagen en imagen"</string>
- <string name="pip_onboarding_description" msgid="4028124563309465267">"El vídeo se mantendrá visible hasta que reproduzcas otro. Mantén pulsado el botón "<b>"INICIO"</b>" para controlarlo."</string>
+ <string name="pip_onboarding_description" msgid="4028124563309465267">"El vídeo estará visible hasta que reproduzcas otro. Mantén pulsado el botón "<b>"INICIO"</b>" para controlarlo."</string>
<string name="pip_onboarding_button" msgid="3957426748484904611">"Entendido"</string>
<string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignorar"</string>
</resources>
diff --git a/packages/SystemUI/res/values-eu-rES/strings.xml b/packages/SystemUI/res/values-eu-rES/strings.xml
index b9a7a18..6a7cc4f 100644
--- a/packages/SystemUI/res/values-eu-rES/strings.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings.xml
@@ -632,7 +632,7 @@
<string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Kendu da <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g>. posiziora eraman da"</string>
<string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Ezarpen bizkorren editorea."</string>
- <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> zerbitzuko jakinarazpena: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> zerbitzuaren jakinarazpena: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="dock_forced_resizable" msgid="5914261505436217520">"Baliteke aplikazioak ez funtzionatzea pantaila zatituan."</string>
<string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikazioak ez du onartzen pantaila zatitua"</string>
<string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Ireki ezarpenak."</string>
diff --git a/packages/SystemUI/res/values-eu-rES/strings_tv.xml b/packages/SystemUI/res/values-eu-rES/strings_tv.xml
index 7e1af98..e1bd3a8 100644
--- a/packages/SystemUI/res/values-eu-rES/strings_tv.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings_tv.xml
@@ -24,7 +24,7 @@
<string name="pip_play" msgid="674145557658227044">"Erreproduzitu"</string>
<string name="pip_pause" msgid="8412075640017218862">"Pausatu"</string>
<string name="pip_hold_home" msgid="340086535668778109"><b>"HASIERA"</b>" PIP kontrolatzeko"</string>
- <string name="pip_onboarding_title" msgid="7850436557670253991">"Argazkia argazkian"</string>
+ <string name="pip_onboarding_title" msgid="7850436557670253991">"Pantaila txikia"</string>
<string name="pip_onboarding_description" msgid="4028124563309465267">"Horrela, ikusgai egongo da bideoa beste bat erreproduzitu arte. Pantaila txikia kontrolatzeko, eduki sakatuta "<b>"HOME"</b>" botoia."</string>
<string name="pip_onboarding_button" msgid="3957426748484904611">"Ados"</string>
<string name="recents_tv_dismiss" msgid="3555093879593377731">"Baztertu"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 7c8105db..4e4eea0 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -267,7 +267,7 @@
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Kecerahan"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotasi otomatis"</string>
<string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Putar layar otomatis"</string>
- <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Setel menjadi <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Setel ke <xliff:g id="ID_1">%s</xliff:g>"</string>
<string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotasi terkunci"</string>
<string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Potret"</string>
<string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Lanskap"</string>
diff --git a/packages/SystemUI/res/values-in/strings_tv.xml b/packages/SystemUI/res/values-in/strings_tv.xml
index 52ff144..a997703 100644
--- a/packages/SystemUI/res/values-in/strings_tv.xml
+++ b/packages/SystemUI/res/values-in/strings_tv.xml
@@ -25,7 +25,7 @@
<string name="pip_pause" msgid="8412075640017218862">"Jeda"</string>
<string name="pip_hold_home" msgid="340086535668778109">"Tahan "<b>"LAYAR UTAMA"</b>" untuk mengontrol PIP"</string>
<string name="pip_onboarding_title" msgid="7850436557670253991">"Gambar-dalam-gambar"</string>
- <string name="pip_onboarding_description" msgid="4028124563309465267">"Tindakan ini terus menampilkan video hingga Anda memutar yang lain. Tekan dan tahan "<b>"HOME"</b>" untuk mengontrolnya."</string>
+ <string name="pip_onboarding_description" msgid="4028124563309465267">"Tindakan ini terus menampilkan video hingga Anda memutar yang lain. Tekan dan tahan tombol "<b>"UTAMA"</b>" untuk mengontrolnya."</string>
<string name="pip_onboarding_button" msgid="3957426748484904611">"Mengerti"</string>
<string name="recents_tv_dismiss" msgid="3555093879593377731">"Tutup"</string>
</resources>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings.xml b/packages/SystemUI/res/values-kk-rKZ/strings.xml
index a9e62fc..c91e8a5 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings.xml
@@ -71,8 +71,7 @@
<string name="screenshot_saving_title" msgid="8242282144535555697">"Скриншотты сақтауда…"</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Скриншот сақталуда."</string>
<string name="screenshot_saved_title" msgid="6461865960961414961">"Скриншот сақталды."</string>
- <!-- no translation found for screenshot_saved_text (2685605830386712477) -->
- <skip />
+ <string name="screenshot_saved_text" msgid="2685605830386712477">"Скриншотты көру үшін түртіңіз."</string>
<string name="screenshot_failed_title" msgid="705781116746922771">"Скриншот жасалмады."</string>
<string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Скриншотты сақтау кезінде мәселе туындады."</string>
<string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Жадтағы шектеулі бос орынға байланысты скриншотты сақтау мүмкін емес."</string>
@@ -201,7 +200,7 @@
<string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Мазаламау режимі өшірулі"</string>
<string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Мазаламау режимі өшірілді."</string>
<string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Мазаламау режимі қосылды."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
+ <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth өшірулі."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth қосулы."</string>
<string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth қосылуда."</string>
@@ -267,7 +266,7 @@
<string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Жұптасқан құрылғылар жоқ"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"Жарықтығы"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоматты түрде бұру"</string>
- <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Авто айналатын экран"</string>
+ <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Автоматты айналатын экран"</string>
<string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> мәніне орнату"</string>
<string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Бұру бекітілген"</string>
<string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Портрет"</string>
@@ -419,8 +418,7 @@
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Жаю"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жию"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Экран түйрелді"</string>
- <!-- no translation found for screen_pinning_description (7238941806855968768) -->
- <skip />
+ <string name="screen_pinning_description" msgid="7238941806855968768">"Бұл оны босатылғанға дейін көрсетіп тұрады. Босату үшін \"Кері\" түймесін басып тұрыңыз."</string>
<string name="screen_pinning_positive" msgid="3783985798366751226">"Түсіндім"</string>
<string name="screen_pinning_negative" msgid="3741602308343880268">"Жоқ, рақмет"</string>
<string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> жасыру керек пе?"</string>
@@ -430,14 +428,13 @@
<string name="volumeui_prompt_allow" msgid="7954396902482228786">"Рұқсат беру"</string>
<string name="volumeui_prompt_deny" msgid="5720663643411696731">"Өшіру"</string>
<string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> — көлем диалогтық терезесі"</string>
- <!-- no translation found for volumeui_notification_text (8819536904234337445) -->
- <skip />
+ <string name="volumeui_notification_text" msgid="8819536904234337445">"Бастапқы қалпына келтіру үшін түртіңіз."</string>
<string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Сіз жұмыс профиліңізді пайдаланып жатырсыз"</string>
<string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дыбысын қосу үшін түртіңіз."</string>
<string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Діріл режимін орнату үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string>
<string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Дыбысын өшіру үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string>
- <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s дыбыстың басқару элементтері көрсетулі. Сырғыту арқылы жабыңыз."</string>
- <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Дыбыстың басқару элементтері жасырын"</string>
+ <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s дыбысты басқару элементтері көрсетулі. Сырғыту арқылы жабыңыз."</string>
+ <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Дыбысты басқару элементтері жасырын"</string>
<string name="system_ui_tuner" msgid="708224127392452018">"Жүйелік пайдаланушылық интерфейс тюнері"</string>
<string name="show_battery_percentage" msgid="5444136600512968798">"Ендірілген батарея пайыздық шамасын көрсету"</string>
<string name="show_battery_percentage_summary" msgid="3215025775576786037">"Зарядталмай тұрғанда, күй жолағы белгішесінің ішінде батарея деңгейінің пайыздық шамасын көрсетеді"</string>
@@ -633,12 +630,12 @@
<string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> жойылды"</string>
<string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g> орнына жылжытылды"</string>
<string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Жылдам параметрлер өңдегіші."</string>
- <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> хабарландыру: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> хабарландыруы: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="dock_forced_resizable" msgid="5914261505436217520">"Қолданба бөлінген экранда жұмыс істемеуі мүмкін."</string>
<string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Қодланба бөлінген экранды қолдамайды."</string>
<string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Параметрлерді ашу."</string>
<string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Жылдам параметрлерді ашу."</string>
- <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Жылдам параметрлерді жабу"</string>
+ <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Жылдам параметрлерді жабу."</string>
<string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Дабыл орнатылды."</string>
<string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> ретінде кірдіңіз"</string>
<string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Интернет жоқ."</string>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml b/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml
index 1106340..c9823e9 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml
@@ -25,7 +25,7 @@
<string name="pip_pause" msgid="8412075640017218862">"Кідірту"</string>
<string name="pip_hold_home" msgid="340086535668778109">"PIP басқару үшін "<b>"HOME"</b>" басып тұрыңыз"</string>
<string name="pip_onboarding_title" msgid="7850436557670253991">"Сурет ішіндегі сурет"</string>
- <string name="pip_onboarding_description" msgid="4028124563309465267">"Бұл басқа бейне ойнатылғанға дейін бейнені көріністе сақтайды. Оны басқару үшін "<b>"HOME"</b>" түймесін басып тұрыңыз."</string>
+ <string name="pip_onboarding_description" msgid="4028124563309465267">"Басқа бейне ойнатылғанға дейін ағымдағы бейне көрсетіле береді. Оны басқару үшін "<b>"HOME"</b>" түймесін басып тұрыңыз."</string>
<string name="pip_onboarding_button" msgid="3957426748484904611">"Түсіндім"</string>
<string name="recents_tv_dismiss" msgid="3555093879593377731">"Жабу"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ky-rKG/strings.xml b/packages/SystemUI/res/values-ky-rKG/strings.xml
index 3a426f8..67211a6 100644
--- a/packages/SystemUI/res/values-ky-rKG/strings.xml
+++ b/packages/SystemUI/res/values-ky-rKG/strings.xml
@@ -433,7 +433,7 @@
<string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Үнүн чыгаруу үчүн таптап коюңуз."</string>
<string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Дирилдөөгө коюу үчүн таптап коюңуз. Атайын мүмкүнчүлүктөр кызматынын үнүн өчүрүп койсо болот."</string>
<string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Үнүн өчүрүү үчүн таптап коюңуз. Атайын мүмкүнчүлүктөр кызматынын үнүн өчүрүп койсо болот."</string>
- <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s үндү башкаруу эсементтери көрсөтүлгөн. Көз жаздымда калтыруу үчүн өйдө серпип коюңуз."</string>
+ <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s үндү башкаруу элементтери көрсөтүлгөн. Этибарга албоо үчүн өйдө серпип коюңуз."</string>
<string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Үндү башкаруу элементтери жашырылган"</string>
<string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
<string name="show_battery_percentage" msgid="5444136600512968798">"Батарянын кубатнын деңгээли пайыз менен көрсөтлсүн"</string>
diff --git a/packages/SystemUI/res/values-nb/strings_tv.xml b/packages/SystemUI/res/values-nb/strings_tv.xml
index d401dfc..3dc7ae0 100644
--- a/packages/SystemUI/res/values-nb/strings_tv.xml
+++ b/packages/SystemUI/res/values-nb/strings_tv.xml
@@ -25,7 +25,7 @@
<string name="pip_pause" msgid="8412075640017218862">"Sett på pause"</string>
<string name="pip_hold_home" msgid="340086535668778109">"Hold inne "<b>"STARTSIDE"</b>" for å kontrollere PIP"</string>
<string name="pip_onboarding_title" msgid="7850436557670253991">"Bilde-i-bilde"</string>
- <string name="pip_onboarding_description" msgid="4028124563309465267">"Dette holder videoen din synlig frem til du spiller av en annen video. Trykk og holde inne "<b>"HOME"</b>" for å styre dette."</string>
+ <string name="pip_onboarding_description" msgid="4028124563309465267">"Dette holder videoen din synlig frem til du spiller av en annen video. Trykk og hold inne "<b>"HOME"</b>" for å styre dette."</string>
<string name="pip_onboarding_button" msgid="3957426748484904611">"Greit"</string>
<string name="recents_tv_dismiss" msgid="3555093879593377731">"Avvis"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml
index 62f81dc..5b66210 100644
--- a/packages/SystemUI/res/values-ne-rNP/strings.xml
+++ b/packages/SystemUI/res/values-ne-rNP/strings.xml
@@ -418,7 +418,7 @@
<string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तार गर्नुहोस्"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"संक्षिप्त पार्नुहोस्"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"पर्दा राखेका छ"</string>
- <string name="screen_pinning_description" msgid="7238941806855968768">"तपाईँले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्नका लागि पछाडि बटनलाई छोइराख्नुहोस्।"</string>
+ <string name="screen_pinning_description" msgid="7238941806855968768">"तपाईँले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि बटनलाई छोइराख्नुहोस्।"</string>
<string name="screen_pinning_positive" msgid="3783985798366751226">"बुझेँ"</string>
<string name="screen_pinning_negative" msgid="3741602308343880268">"धन्यवाद पर्दैन"</string>
<string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"लुकाउनुहुन्छ <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
diff --git a/packages/SystemUI/res/values-tr/strings_tv.xml b/packages/SystemUI/res/values-tr/strings_tv.xml
index 3a88b8a..8fe5395 100644
--- a/packages/SystemUI/res/values-tr/strings_tv.xml
+++ b/packages/SystemUI/res/values-tr/strings_tv.xml
@@ -25,7 +25,7 @@
<string name="pip_pause" msgid="8412075640017218862">"Duraklat"</string>
<string name="pip_hold_home" msgid="340086535668778109">"PIP\'yi kontrol etmek için "<b>"ANA EKRAN"</b>"\'ı basılı tutun"</string>
<string name="pip_onboarding_title" msgid="7850436557670253991">"Resim içinde resim"</string>
- <string name="pip_onboarding_description" msgid="4028124563309465267">"Bu işlev, videonuzu, başka bir video oynatılıncaya kadar görünür tutar. Bu işlevi kontrol etmek için "<b>"HOME"</b>" tuşunu basılı tutun."</string>
+ <string name="pip_onboarding_description" msgid="4028124563309465267">"Bu işlev, videonuzu, başka bir video oynatılıncaya kadar görünür tutar. Bu işlevi kontrol etmek için "<b>"ANA EKRAN"</b>" tuşunu basılı tutun."</string>
<string name="pip_onboarding_button" msgid="3957426748484904611">"Anladım"</string>
<string name="recents_tv_dismiss" msgid="3555093879593377731">"Kapat"</string>
</resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index 48710f6..942c921 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -118,7 +118,7 @@
<string name="accessibility_data_signal_full" msgid="2708384608124519369">"Ma’lumot uzatish signali to‘liq."</string>
<string name="accessibility_wifi_name" msgid="7202151365171148501">"Ulangan: <xliff:g id="WIFI">%s</xliff:g>."</string>
<string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Ulangan: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
- <string name="accessibility_cast_name" msgid="4026393061247081201">"Ulangan: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_cast_name" msgid="4026393061247081201">"Bunga ulangan: <xliff:g id="CAST">%s</xliff:g>."</string>
<string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX tarmog‘i yo‘q."</string>
<string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Bitta ustunli WiMAX."</string>
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Ikkita ustunli WiMAX."</string>
@@ -420,7 +420,7 @@
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Yoyish"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Yig‘ish"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekran qadaldi"</string>
- <string name="screen_pinning_description" msgid="7238941806855968768">"Ekran yechilmaguncha u o‘zgarmas holatda qoladi. Uni yechish uchun “Orqaga” tugmasini bosing va ushlab turing."</string>
+ <string name="screen_pinning_description" msgid="7238941806855968768">"Ekran yechilmaguncha u o‘zgarmas holatda qoladi. Uni yechish uchun “Orqaga” tugmasini bosib turing."</string>
<string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
<string name="screen_pinning_negative" msgid="3741602308343880268">"Yo‘q, kerakmas"</string>
<string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> berkitilsinmi?"</string>
@@ -632,7 +632,7 @@
<string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"“<xliff:g id="TILE_NAME">%1$s</xliff:g>” tugmasi o‘chirildi"</string>
<string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"“<xliff:g id="TILE_NAME">%1$s</xliff:g>” tugmasi endi <xliff:g id="POSITION">%2$d</xliff:g>-joyni egallanmoqda"</string>
<string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Tezkor sozlamalar muharriri"</string>
- <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-bildirishnoma: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> bildirishnomasi: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="dock_forced_resizable" msgid="5914261505436217520">"Ilova ekranni ikkiga bo‘lish rejimini qo‘llab-quvvatlamaydi."</string>
<string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Bu ilova ekranni bo‘lish xususiyatini qo‘llab-quvvatlamaydi."</string>
<string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Sozlamalarni ochish."</string>
diff --git a/packages/SystemUI/res/values/dimens_tv.xml b/packages/SystemUI/res/values/dimens_tv.xml
index 5fa802b..2319229 100644
--- a/packages/SystemUI/res/values/dimens_tv.xml
+++ b/packages/SystemUI/res/values/dimens_tv.xml
@@ -52,9 +52,6 @@
<dimen name="recents_tv_dismiss_icon_bottom_margin">1dip</dimen>
<dimen name="recents_tv_dismiss_text_size">12sp</dimen>
- <!-- Values for PIP in recents -->
- <dimen name="recents_tv_pip_controls_margin_top">10dp</dimen>
-
<!-- Extra space around the PIP and its outline in PIP onboarding activity -->
<dimen name="tv_pip_bounds_space">3dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index ec0eefb..ceb4054 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -93,12 +93,6 @@
mHost = host;
}
- @Override
- public long getItemId(int position) {
- return mTiles.get(position) != null ? mAllTiles.indexOf(mTiles.get(position))
- : position == mEditIndex ? EDIT_ID : DIVIDER_ID;
- }
-
public ItemTouchHelper getItemTouchHelper() {
return mItemTouchHelper;
}
@@ -147,8 +141,8 @@
mTiles.add(tile);
}
}
+ mTileDividerIndex = mTiles.size();
if (mOtherTiles.size() != 0) {
- mTileDividerIndex = mTiles.size();
mTiles.add(null);
}
mTiles.addAll(mOtherTiles);
@@ -201,7 +195,13 @@
}
@Override
- public void onBindViewHolder(final Holder holder, final int position) {
+ public boolean onFailedToRecycleView(Holder holder) {
+ holder.clearDrag();
+ return true;
+ }
+
+ @Override
+ public void onBindViewHolder(final Holder holder, int position) {
if (holder.getItemViewType() == TYPE_DIVIDER) {
return;
}
@@ -222,7 +222,7 @@
holder.mTileView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- selectPosition(position, v);
+ selectPosition(holder.getAdapterPosition(), v);
}
});
if (mNeedsFocus) {
@@ -267,6 +267,7 @@
holder.mTileView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
+ int position = holder.getAdapterPosition();
if (mAccessibilityMoving) {
selectPosition(position, v);
} else {
@@ -288,8 +289,6 @@
mTiles.remove(mEditIndex--);
mAccessibilityMoving = false;
move(mAccessibilityFromIndex, position, v);
- notifyItemChanged(mAccessibilityFromIndex);
- notifyItemMoved(mAccessibilityFromIndex, position);
saveSpecs(mHost);
}
@@ -330,7 +329,7 @@
}
private boolean move(int from, int to, View v) {
- if (to > mEditIndex) {
+ if (to >= mEditIndex) {
if (from >= mEditIndex) {
return false;
}
@@ -352,8 +351,6 @@
}
CharSequence fromLabel = mTiles.get(from).state.label;
move(from, to, mTiles);
- notifyItemChanged(from);
- notifyItemMoved(from, to);
updateDividerLocations();
CharSequence announcement;
if (to >= mEditIndex) {
@@ -399,7 +396,7 @@
}
if (mTiles.size() - 1 == mTileDividerIndex) {
mTiles.remove(mTiles.size() - 1);
- notifyItemRemoved(mTiles.size() - 1);
+ notifyItemRemoved(mTiles.size());
}
}
@@ -415,6 +412,8 @@
private <T> void move(int from, int to, List<T> list) {
list.add(from > to ? to : to + 1, list.get(from));
list.remove(from > to ? from + 1 : from);
+ notifyItemMoved(from, to);
+ notifyItemChanged(to);
}
public class Holder extends ViewHolder {
@@ -429,6 +428,14 @@
}
}
+ public void clearDrag() {
+ itemView.clearAnimation();
+ mTileView.findViewById(R.id.tile_label).clearAnimation();
+ mTileView.findViewById(R.id.tile_label).setAlpha(1);
+ mTileView.getAppLabel().clearAnimation();
+ mTileView.getAppLabel().setAlpha(.6f);
+ }
+
public void startDrag() {
itemView.animate()
.setDuration(DRAG_LENGTH)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
index 54dd015..23a3ca1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
@@ -40,9 +40,11 @@
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile;
+import com.android.systemui.qs.external.TileLifecycleManager.TileChangeListener;
import com.android.systemui.statusbar.phone.QSTileHost;
+import libcore.util.Objects;
-public class CustomTile extends QSTile<QSTile.State> {
+public class CustomTile extends QSTile<QSTile.State> implements TileChangeListener {
public static final String PREFIX = "custom(";
private static final boolean DEBUG = false;
@@ -58,7 +60,7 @@
private final IQSTileService mService;
private final TileServiceManager mServiceManager;
private final int mUser;
- private final android.graphics.drawable.Icon mDefaultIcon;
+ private android.graphics.drawable.Icon mDefaultIcon;
private boolean mListening;
private boolean mBound;
@@ -71,21 +73,10 @@
mComponent = ComponentName.unflattenFromString(action);
mServiceManager = host.getTileServices().getTileWrapper(this);
mService = mServiceManager.getTileService();
+ mServiceManager.setTileChangeListener(this);
mTile = new Tile(mComponent);
mUser = ActivityManager.getCurrentUser();
- android.graphics.drawable.Icon defaultIcon;
- try {
- PackageManager pm = mContext.getPackageManager();
- ServiceInfo info = pm.getServiceInfo(mComponent,
- PackageManager.MATCH_ENCRYPTION_AWARE_AND_UNAWARE);
- defaultIcon = info.icon != 0 ? android.graphics.drawable.Icon
- .createWithResource(mComponent.getPackageName(), info.icon) : null;
- mTile.setIcon(defaultIcon);
- mTile.setLabel(info.loadLabel(pm));
- } catch (Exception e) {
- defaultIcon = null;
- }
- mDefaultIcon = defaultIcon;
+ setTileIcon();
try {
mService.setQSTile(mTile);
} catch (RemoteException e) {
@@ -93,6 +84,57 @@
}
}
+ private void setTileIcon() {
+ try {
+ PackageManager pm = mContext.getPackageManager();
+ ServiceInfo info = pm.getServiceInfo(mComponent,
+ PackageManager.MATCH_ENCRYPTION_AWARE_AND_UNAWARE);
+ // Update the icon if its not set or is the default icon.
+ boolean updateIcon = mTile.getIcon() == null
+ || iconEquals(mTile.getIcon(), mDefaultIcon);
+ mDefaultIcon = info.icon != 0 ? android.graphics.drawable.Icon
+ .createWithResource(mComponent.getPackageName(), info.icon) : null;
+ if (updateIcon) {
+ mTile.setIcon(mDefaultIcon);
+ }
+ // Update the label if there is no label.
+ if (mTile.getLabel() == null) {
+ mTile.setLabel(info.loadLabel(pm));
+ }
+ } catch (Exception e) {
+ mDefaultIcon = null;
+ }
+ }
+
+ /**
+ * Compare two icons, only works for resources.
+ */
+ private boolean iconEquals(android.graphics.drawable.Icon icon1,
+ android.graphics.drawable.Icon icon2) {
+ if (icon1 == icon2) {
+ return true;
+ }
+ if (icon1 == null || icon2 == null) {
+ return false;
+ }
+ if (icon1.getType() != android.graphics.drawable.Icon.TYPE_RESOURCE
+ || icon2.getType() != android.graphics.drawable.Icon.TYPE_RESOURCE) {
+ return false;
+ }
+ if (icon1.getResId() != icon2.getResId()) {
+ return false;
+ }
+ if (!Objects.equal(icon1.getResPackage(), icon2.getResPackage())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void onTileChanged(ComponentName tile) {
+ setTileIcon();
+ }
+
@Override
public boolean isAvailable() {
return mDefaultIcon != null;
@@ -136,6 +178,8 @@
mListening = listening;
try {
if (listening) {
+ setTileIcon();
+ refreshState();
if (!mServiceManager.isActiveTile()) {
mServiceManager.setBindRequested(true);
mService.onStartListening();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
index 5903218..212f179 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -80,6 +80,7 @@
boolean mReceiverRegistered;
private IQSService mService;
private boolean mUnbindImmediate;
+ private TileChangeListener mChangeListener;
public TileLifecycleManager(Handler handler, Context context, Intent intent, UserHandle user) {
mContext = context;
@@ -168,7 +169,7 @@
@Override
public void onServiceDisconnected(ComponentName name) {
if (DEBUG) Log.d(TAG, "onServiceDisconnected " + name);
- mWrapper = null;
+ handleDeath();
}
private void handlePendingMessages() {
@@ -279,6 +280,10 @@
mReceiverRegistered = false;
}
+ public void setTileChangeListener(TileChangeListener changeListener) {
+ mChangeListener = changeListener;
+ }
+
@Override
public void onReceive(Context context, Intent intent) {
if (DEBUG) Log.d(TAG, "onReceive: " + intent);
@@ -289,6 +294,9 @@
return;
}
}
+ if (Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction()) && mChangeListener != null) {
+ mChangeListener.onTileChanged(mIntent.getComponent());
+ }
stopPackageListening();
if (mBound) {
// Trying to bind again will check the state of the package before bothering to bind.
@@ -401,4 +409,8 @@
if (DEBUG) Log.d(TAG, "binderDeath");
handleDeath();
}
+
+ public interface TileChangeListener {
+ void onTileChanged(ComponentName tile);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
index f34df75..82a5622 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
@@ -27,6 +27,7 @@
import android.service.quicksettings.IQSTileService;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
+import com.android.systemui.qs.external.TileLifecycleManager.TileChangeListener;
import libcore.util.Objects;
/**
@@ -81,6 +82,10 @@
new UserHandle(ActivityManager.getCurrentUser()), filter, null, mHandler);
}
+ public void setTileChangeListener(TileChangeListener changeListener) {
+ mStateManager.setTileChangeListener(changeListener);
+ }
+
public boolean isActiveTile() {
return mStateManager.isActiveTile();
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
index be06ad0..46b2612 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
@@ -414,8 +414,8 @@
}
try {
- return mIam.moveTaskToDockedStack(
- taskId, createMode, true /* onTop */, false /* animate */, initialBounds);
+ return mIam.moveTaskToDockedStack(taskId, createMode, true /* onTop */,
+ false /* animate */, initialBounds, true /* moveHomeStackFront */ );
} catch (RemoteException e) {
e.printStackTrace();
}
diff --git a/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java b/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java
index d15799c..5614bf9 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java
@@ -57,9 +57,9 @@
final PipManager mPipManager = PipManager.getInstance();
Listener mListener;
- PipControlButtonView mFullButtonView;
- PipControlButtonView mCloseButtonView;
- PipControlButtonView mPlayPauseButtonView;
+ private PipControlButtonView mFullButtonView;
+ private PipControlButtonView mCloseButtonView;
+ private PipControlButtonView mPlayPauseButtonView;
private boolean mHasFocus;
private OnFocusChangeListener mOnChildFocusChangeListener;
diff --git a/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java b/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java
index 9c806f7..df44dc1 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java
@@ -18,14 +18,15 @@
import android.animation.Animator;
import android.animation.AnimatorInflater;
+import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnFocusChangeListener;
+import android.widget.FrameLayout;
import com.android.systemui.R;
@@ -34,9 +35,9 @@
import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_UNAVAILABLE;
/**
- * An extended version of {@link PipControlsView} that supports animation in Recents.
+ * An FrameLayout that contains {@link PipControlsView} with its scrim.
*/
-public class PipRecentsControlsView extends PipControlsView {
+public class PipRecentsControlsView extends FrameLayout {
/**
* An interface to listen user action.
*/
@@ -47,7 +48,11 @@
abstract void onBackPressed();
}
- private AnimatorSet mFocusGainAnimatorSet;
+ final PipManager mPipManager = PipManager.getInstance();
+ private Listener mListener;
+ private PipControlsView mPipControlsView;
+ private View mScrim;
+ private Animator mFocusGainAnimator;
private AnimatorSet mFocusLoseAnimatorSet;
public PipRecentsControlsView(Context context) {
@@ -71,26 +76,20 @@
public void onFinishInflate() {
super.onFinishInflate();
- int buttonsFocusGainAnim = R.anim.tv_pip_controls_buttons_in_recents_focus_gain_animation;
- mFocusGainAnimatorSet = new AnimatorSet();
- mFocusGainAnimatorSet.playTogether(
- loadAnimator(this, R.anim.tv_pip_controls_in_recents_focus_gain_animation),
- loadAnimator(mFullButtonView,buttonsFocusGainAnim),
- loadAnimator(mPlayPauseButtonView, buttonsFocusGainAnim),
- loadAnimator(mCloseButtonView, buttonsFocusGainAnim));
+ mPipControlsView = (PipControlsView) findViewById(R.id.pip_control_contents);
+ mScrim = findViewById(R.id.scrim);
- int buttonsFocusLoseAnim = R.anim.tv_pip_controls_buttons_in_recents_focus_lose_animation;
+ mFocusGainAnimator = loadAnimator(mPipControlsView,
+ R.anim.tv_pip_controls_in_recents_focus_gain_animation);
+
mFocusLoseAnimatorSet = new AnimatorSet();
- mFocusLoseAnimatorSet.playTogether(
- loadAnimator(this, R.anim.tv_pip_controls_in_recents_focus_lose_animation),
- loadAnimator(mFullButtonView, buttonsFocusLoseAnim),
- loadAnimator(mPlayPauseButtonView, buttonsFocusLoseAnim),
- loadAnimator(mCloseButtonView, buttonsFocusLoseAnim));
+ mFocusLoseAnimatorSet.playSequentially(
+ loadAnimator(mPipControlsView,
+ R.anim.tv_pip_controls_in_recents_focus_lose_animation),
+ loadAnimator(mScrim, R.anim.tv_pip_controls_in_recents_scrim_fade_in_animation));
Rect pipBounds = mPipManager.getRecentsFocusedPipBounds();
- int pipControlsMarginTop = getContext().getResources().getDimensionPixelSize(
- R.dimen.recents_tv_pip_controls_margin_top);
- setPadding(0, pipBounds.bottom + pipControlsMarginTop, 0, 0);
+ setPadding(0, pipBounds.bottom, 0, 0);
}
private Animator loadAnimator(View view, int animatorResId) {
@@ -103,44 +102,53 @@
* Starts focus gaining animation.
*/
public void startFocusGainAnimation() {
- if (mFocusLoseAnimatorSet.isStarted()) {
- mFocusLoseAnimatorSet.cancel();
- }
- mFocusGainAnimatorSet.start();
+ // Hides the scrim view as soon as possible, before the PIP resize animation starts.
+ // If we don't, PIP will be moved down a bit and a gap between the scrim and PIP will be
+ // shown at the bottom of the PIP.
+ mScrim.setAlpha(0);
+ startAnimator(mFocusGainAnimator, mFocusLoseAnimatorSet);
}
/**
* Starts focus losing animation.
*/
public void startFocusLoseAnimation() {
- if (mFocusGainAnimatorSet.isStarted()) {
- mFocusGainAnimatorSet.cancel();
- }
- mFocusLoseAnimatorSet.start();
+ startAnimator(mFocusLoseAnimatorSet, mFocusGainAnimator);
}
/**
* Resets the view to the initial state. (i.e. end of the focus gain)
*/
public void reset() {
- if (mFocusGainAnimatorSet.isStarted()) {
- mFocusGainAnimatorSet.cancel();
- }
- if (mFocusLoseAnimatorSet.isStarted()) {
- mFocusLoseAnimatorSet.cancel();
- }
+ cancelAnimator(mFocusGainAnimator);
+ cancelAnimator(mFocusLoseAnimatorSet);
// Reset to initial state (i.e. end of focused)
requestFocus();
- setTranslationY(0);
- setScaleXY(mFullButtonView, 1);
- setScaleXY(mPlayPauseButtonView, 1);
- setScaleXY(mCloseButtonView, 1);
+ mPipControlsView.setTranslationY(0);
+ mPipControlsView.setScaleX(1);
+ mPipControlsView.setScaleY(1);
+ mScrim.setAlpha(0);
}
- private void setScaleXY(View view, float scale) {
- view.setScaleX(scale);
- view.setScaleY(scale);
+ private static void startAnimator(Animator animator, Animator previousAnimator) {
+ cancelAnimator(previousAnimator);
+ if (!animator.isStarted()) {
+ animator.start();
+ }
+ }
+
+ private static void cancelAnimator(Animator animator) {
+ if (animator.isStarted()) {
+ animator.cancel();
+ }
+ }
+
+ /**
+ * Sets listeners.
+ */
+ public void setListener(Listener listener) {
+ mPipControlsView.setListener(listener);
}
@Override
@@ -148,8 +156,8 @@
if (!event.isCanceled()
&& event.getKeyCode() == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_UP) {
- if (mListener != null) {
- ((PipRecentsControlsView.Listener) mListener).onBackPressed();
+ if (mPipControlsView.mListener != null) {
+ ((PipRecentsControlsView.Listener) mPipControlsView.mListener).onBackPressed();
}
return true;
}
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index ae31438..e1695e0 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -3077,6 +3077,7 @@
userState.mInstalledServices.remove(mAccessibilityServiceInfo);
userState.mEnabledServices.remove(mComponentName);
userState.destroyUiAutomationService();
+ readConfigurationForUserStateLocked(userState);
}
if (mId == getMagnificationController().getIdOfLastServiceToMagnify()) {
getMagnificationController().resetIfNeeded(true);
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 7b9d4456..c62689c 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -656,11 +656,15 @@
}
private void ensureGroupStateLoadedLocked(int userId) {
- if (!mUserManager.isUserUnlockingOrUnlocked(userId)) {
+ ensureGroupStateLoadedLocked(userId, /* enforceUserUnlockingOrUnlocked */ true );
+ }
+
+ private void ensureGroupStateLoadedLocked(int userId, boolean enforceUserUnlockingOrUnlocked) {
+ if (enforceUserUnlockingOrUnlocked && !mUserManager.isUserUnlockingOrUnlocked(userId)) {
throw new IllegalStateException(
"User " + userId + " must be unlocked for widgets to be available");
}
- if (isProfileWithLockedParent(userId)) {
+ if (enforceUserUnlockingOrUnlocked && isProfileWithLockedParent(userId)) {
throw new IllegalStateException(
"Profile " + userId + " must have unlocked parent");
}
@@ -3945,7 +3949,9 @@
@Override
public void run() {
synchronized (mLock) {
- ensureGroupStateLoadedLocked(mUserId);
+ // No need to enforce unlocked state when there is no caller. User can be in the
+ // stopping state or removed by the time the message is processed
+ ensureGroupStateLoadedLocked(mUserId, false /* enforceUserUnlockingOrUnlocked */ );
saveStateLocked(mUserId);
}
}
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index 8753992..6b51721 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -358,7 +358,7 @@
try {
mBatteryStats.setBatteryState(mBatteryProps.batteryStatus, mBatteryProps.batteryHealth,
mPlugType, mBatteryProps.batteryLevel, mBatteryProps.batteryTemperature,
- mBatteryProps.batteryVoltage);
+ mBatteryProps.batteryVoltage, mBatteryProps.batteryChargeCounter);
} catch (RemoteException e) {
// Should never happen.
}
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index f5e9d19..00dcdea 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -4317,10 +4317,10 @@
Collection<InetAddress> dnses = newLp.getDnsServers();
if (DBG) log("Setting DNS servers for network " + netId + " to " + dnses);
try {
- mNetd.setDnsServersForNetwork(
+ mNetd.setDnsConfigurationForNetwork(
netId, NetworkUtils.makeStrings(dnses), newLp.getDomains());
} catch (Exception e) {
- loge("Exception in setDnsServersForNetwork: " + e);
+ loge("Exception in setDnsConfigurationForNetwork: " + e);
}
final NetworkAgentInfo defaultNai = getDefaultNetwork();
if (defaultNai != null && defaultNai.network.netId == netId) {
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java
index 7253870..8abbb111 100644
--- a/services/core/java/com/android/server/MountService.java
+++ b/services/core/java/com/android/server/MountService.java
@@ -2648,9 +2648,6 @@
*/
@Override
public int getPasswordType() {
- mContext.enforceCallingOrSelfPermission(Manifest.permission.STORAGE_INTERNAL,
- "no permission to access the crypt keeper");
-
waitForReady();
final NativeDaemonEvent event;
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 9fc17a2..2418160 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -47,6 +47,7 @@
import static com.android.server.NetworkManagementSocketTagger.PROP_QTAGUID_ENABLED;
import android.annotation.NonNull;
import android.app.ActivityManagerNative;
+import android.content.ContentResolver;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.INetd;
@@ -76,6 +77,7 @@
import android.os.StrictMode;
import android.os.SystemClock;
import android.os.SystemProperties;
+import android.provider.Settings;
import android.telephony.DataConnectionRealTimeInfo;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionManager;
@@ -175,6 +177,12 @@
public static final int StrictCleartext = 617;
}
+ /* Defaults for resolver parameters. */
+ public static final int DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS = 1800;
+ public static final int DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT = 25;
+ public static final int DNS_RESOLVER_DEFAULT_MIN_SAMPLES = 8;
+ public static final int DNS_RESOLVER_DEFAULT_MAX_SAMPLES = 64;
+
/**
* String indicating a softap command.
*/
@@ -1927,6 +1935,51 @@
}
@Override
+ public void setDnsConfigurationForNetwork(int netId, String[] servers, String domains) {
+ mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+
+ ContentResolver resolver = mContext.getContentResolver();
+
+ int sampleValidity = Settings.Global.getInt(resolver,
+ Settings.Global.DNS_RESOLVER_SAMPLE_VALIDITY_SECONDS,
+ DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS);
+ if (sampleValidity < 0 || sampleValidity > 65535) {
+ Slog.w(TAG, "Invalid sampleValidity=" + sampleValidity + ", using default=" +
+ DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS);
+ sampleValidity = DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS;
+ }
+
+ int successThreshold = Settings.Global.getInt(resolver,
+ Settings.Global.DNS_RESOLVER_SUCCESS_THRESHOLD_PERCENT,
+ DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT);
+ if (successThreshold < 0 || successThreshold > 100) {
+ Slog.w(TAG, "Invalid successThreshold=" + successThreshold + ", using default=" +
+ DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT);
+ successThreshold = DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT;
+ }
+
+ int minSamples = Settings.Global.getInt(resolver,
+ Settings.Global.DNS_RESOLVER_MIN_SAMPLES, DNS_RESOLVER_DEFAULT_MIN_SAMPLES);
+ int maxSamples = Settings.Global.getInt(resolver,
+ Settings.Global.DNS_RESOLVER_MAX_SAMPLES, DNS_RESOLVER_DEFAULT_MAX_SAMPLES);
+ if (minSamples < 0 || minSamples > maxSamples || maxSamples > 64) {
+ Slog.w(TAG, "Invalid sample count (min, max)=(" + minSamples + ", " + maxSamples +
+ "), using default=(" + DNS_RESOLVER_DEFAULT_MIN_SAMPLES + ", " +
+ DNS_RESOLVER_DEFAULT_MAX_SAMPLES + ")");
+ minSamples = DNS_RESOLVER_DEFAULT_MIN_SAMPLES;
+ maxSamples = DNS_RESOLVER_DEFAULT_MAX_SAMPLES;
+ }
+
+ final String[] domainStrs = domains == null ? new String[0] : domains.split(" ");
+ final int[] params = { sampleValidity, successThreshold, minSamples, maxSamples };
+ try {
+ mNetdService.setResolverConfiguration(netId, servers, domainStrs, params);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
public void setDnsServersForNetwork(int netId, String[] servers, String domains) {
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
@@ -2048,13 +2101,13 @@
}
}
- private void closeSocketsForFirewallChain(int chain, String chainName) {
+ private void closeSocketsForFirewallChainLocked(int chain, String chainName) {
// UID ranges to close sockets on.
UidRange[] ranges;
// UID ranges whose sockets we won't touch.
int[] exemptUids;
- SparseIntArray rules = getUidFirewallRules(chain);
+ final SparseIntArray rules = getUidFirewallRules(chain);
int numUids = 0;
if (getFirewallType(chain) == FIREWALL_TYPE_WHITELIST) {
@@ -2119,7 +2172,7 @@
mFirewallChainStates.put(chain, enable);
final String operation = enable ? "enable_chain" : "disable_chain";
- String chainName;
+ final String chainName;
switch(chain) {
case FIREWALL_CHAIN_STANDBY:
chainName = FIREWALL_CHAIN_NAME_STANDBY;
@@ -2146,7 +2199,7 @@
// whitelist and blacklist chains allow RSTs through.
if (enable) {
if (DBG) Slog.d(TAG, "Closing sockets after enabling chain " + chainName);
- closeSocketsForFirewallChain(chain, chainName);
+ closeSocketsForFirewallChainLocked(chain, chainName);
}
}
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index ddb9b8a..842a0e3 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -141,6 +141,7 @@
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
+import android.content.pm.ShortcutServiceInternal;
import android.content.pm.UserInfo;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
@@ -3724,13 +3725,16 @@
}
checkTime(startTime, "startProcess: done updating pids map");
} catch (RuntimeException e) {
- // XXX do better error recovery.
- app.setPid(0);
- mBatteryStatsService.noteProcessFinish(app.processName, app.info.uid);
- if (app.isolated) {
- mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid);
- }
Slog.e(TAG, "Failure starting process " + app.processName, e);
+
+ // Something went very wrong while trying to start this process; one
+ // common case is when the package is frozen due to an active
+ // upgrade. To recover, clean up any active bookkeeping related to
+ // starting this process. (We already invoked this method once when
+ // the package was initially frozen through KILL_APPLICATION_MSG, so
+ // it doesn't hurt to use it again.)
+ forceStopPackageLocked(app.info.packageName, UserHandle.getAppId(app.uid), false,
+ false, true, false, false, UserHandle.getUserId(app.userId), "start failure");
}
}
@@ -3789,6 +3793,8 @@
intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
mActivityStarter.startHomeActivityLocked(intent, aInfo, reason);
}
+ } else {
+ Slog.wtf(TAG, "No home screen found for " + intent, new Throwable());
}
return true;
@@ -7340,9 +7346,11 @@
+ "Picture-In-Picture not supported for r=" + r);
}
- // Use the default launch bounds for pinned stack if it doesn't exist yet.
- final Rect bounds = (mStackSupervisor.getStack(PINNED_STACK_ID) == null)
- ? mDefaultPinnedStackBounds : null;
+ // Use the default launch bounds for pinned stack if it doesn't exist yet or use the
+ // current bounds.
+ final ActivityStack pinnedStack = mStackSupervisor.getStack(PINNED_STACK_ID);
+ final Rect bounds = (pinnedStack != null)
+ ? pinnedStack.mBounds : mDefaultPinnedStackBounds;
mStackSupervisor.moveActivityToPinnedStackLocked(
r, "enterPictureInPictureMode", bounds);
@@ -9700,7 +9708,7 @@
*/
@Override
public boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate,
- Rect initialBounds) {
+ Rect initialBounds, boolean moveHomeStackFront) {
enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "moveTaskToDockedStack()");
synchronized (this) {
long ident = Binder.clearCallingIdentity();
@@ -9708,9 +9716,16 @@
if (DEBUG_STACK) Slog.d(TAG_STACK, "moveTaskToDockedStack: moving task=" + taskId
+ " to createMode=" + createMode + " toTop=" + toTop);
mWindowManager.setDockedStackCreateState(createMode, initialBounds);
- return mStackSupervisor.moveTaskToStackLocked(
- taskId, DOCKED_STACK_ID, toTop, !FORCE_FOCUS,
- "moveTaskToDockedStack", animate);
+ final boolean moved = mStackSupervisor.moveTaskToStackLocked(
+ taskId, DOCKED_STACK_ID, toTop, !FORCE_FOCUS, "moveTaskToDockedStack",
+ animate, DEFER_RESUME);
+ if (moved) {
+ if (moveHomeStackFront) {
+ mStackSupervisor.moveHomeStackToFront("moveTaskToDockedStack");
+ }
+ mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
+ }
+ return moved;
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -18201,6 +18216,12 @@
null, AppOpsManager.OP_NONE, null, false, false,
MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
if ((changes&ActivityInfo.CONFIG_LOCALE) != 0) {
+ // Tell the shortcut manager that the system locale changed. It needs to know
+ // it before any other apps receive ACTION_LOCALE_CHANGED, which is why
+ // we "push" from here, rather than having the service listen to the broadcast.
+ LocalServices.getService(ShortcutServiceInternal.class)
+ .onSystemLocaleChangedNoLock();
+
intent = new Intent(Intent.ACTION_LOCALE_CHANGED);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
if (!mProcessesReady) {
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 2386a36..fa69b4a 100755
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -592,7 +592,7 @@
ActivityRecord _resultTo, String _resultWho, int _reqCode,
boolean _componentSpecified, boolean _rootVoiceInteraction,
ActivityStackSupervisor supervisor,
- ActivityContainer container, ActivityOptions options) {
+ ActivityContainer container, ActivityOptions options, ActivityRecord sourceRecord) {
service = _service;
appToken = new Token(this, service);
info = aInfo;
@@ -705,21 +705,7 @@
noDisplay = ent != null && ent.array.getBoolean(
com.android.internal.R.styleable.Window_windowNoDisplay, false);
- if ((!_componentSpecified || _launchedFromUid == Process.myUid()
- || _launchedFromUid == 0) &&
- Intent.ACTION_MAIN.equals(_intent.getAction()) &&
- _intent.hasCategory(Intent.CATEGORY_HOME) &&
- _intent.getCategories().size() == 1 &&
- _intent.getData() == null &&
- _intent.getType() == null &&
- !isResolverActivity()) {
- // This sure looks like a home activity!
- mActivityType = HOME_ACTIVITY_TYPE;
- } else if (realActivity.getClassName().contains(RECENTS_PACKAGE_NAME)) {
- mActivityType = RECENTS_ACTIVITY_TYPE;
- } else {
- mActivityType = APPLICATION_ACTIVITY_TYPE;
- }
+ setActivityType(_componentSpecified, _launchedFromUid, _intent, sourceRecord);
immersive = (aInfo.flags & ActivityInfo.FLAG_IMMERSIVE) != 0;
@@ -740,6 +726,36 @@
}
}
+ private boolean isHomeIntent(Intent intent) {
+ return Intent.ACTION_MAIN.equals(intent.getAction())
+ && intent.hasCategory(Intent.CATEGORY_HOME)
+ && intent.getCategories().size() == 1
+ && intent.getData() == null
+ && intent.getType() == null;
+ }
+
+ private boolean canLaunchHomeActivity(int uid, ActivityRecord sourceRecord) {
+ if (uid == Process.myUid() || uid == 0) {
+ // System process can launch home activity.
+ return true;
+ }
+ // Resolver activity can launch home activity.
+ return sourceRecord != null && sourceRecord.isResolverActivity();
+ }
+
+ private void setActivityType(boolean componentSpecified,
+ int launchedFromUid, Intent intent, ActivityRecord sourceRecord) {
+ if ((!componentSpecified || canLaunchHomeActivity(launchedFromUid, sourceRecord))
+ && isHomeIntent(intent) && !isResolverActivity()) {
+ // This sure looks like a home activity!
+ mActivityType = HOME_ACTIVITY_TYPE;
+ } else if (realActivity.getClassName().contains(RECENTS_PACKAGE_NAME)) {
+ mActivityType = RECENTS_ACTIVITY_TYPE;
+ } else {
+ mActivityType = APPLICATION_ACTIVITY_TYPE;
+ }
+ }
+
void setTask(TaskRecord newTask, TaskRecord taskToAffiliateWith) {
if (task != null && task.removeActivity(this) && task != newTask && task.stack != null) {
task.stack.removeTask(task, "setTask");
@@ -1473,7 +1489,7 @@
}
final ActivityRecord r = new ActivityRecord(service, /*caller*/null, launchedFromUid,
launchedFromPackage, intent, resolvedType, aInfo, service.getConfiguration(),
- null, null, 0, componentSpecified, false, stackSupervisor, null, null);
+ null, null, 0, componentSpecified, false, stackSupervisor, null, null, null);
r.persistentState = persistentState;
r.taskDescription = taskDescription;
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 7486c72..009c9a8 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -74,6 +74,7 @@
import static com.android.server.am.ActivityRecord.STARTING_WINDOW_SHOWN;
import static com.android.server.am.ActivityStackSupervisor.FindTaskResult;
import static com.android.server.am.ActivityStackSupervisor.MOVING;
+import static com.android.server.am.ActivityStackSupervisor.ON_TOP;
import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS;
import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_CLOSE;
import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_OPEN;
@@ -220,6 +221,17 @@
// activities and there is a specific combination of stacks.
static final int STACK_VISIBLE_ACTIVITY_BEHIND = 2;
+ /* The various modes for the method {@link #removeTask}. */
+ // Task is being completely removed from all stacks in the system.
+ static final int REMOVE_TASK_MODE_DESTROYING = 0;
+ // Task is being removed from this stack so we can add it to another stack. In the case we are
+ // moving we don't want to perform some operations on the task like removing it from window
+ // manager or recents.
+ static final int REMOVE_TASK_MODE_MOVING = 1;
+ // Similar to {@link #REMOVE_TASK_MODE_MOVING} and the task will be added to the top of its new
+ // stack and the new stack will be on top of all stacks.
+ static final int REMOVE_TASK_MODE_MOVING_TO_TOP = 2;
+
final ActivityManagerService mService;
final WindowManagerService mWindowManager;
private final RecentTasks mRecentTasks;
@@ -3500,11 +3512,10 @@
r.state = ActivityState.FINISHING;
if (mode == FINISH_IMMEDIATELY
- || (mode == FINISH_AFTER_PAUSE && prevState == ActivityState.PAUSED)
+ || (prevState == ActivityState.PAUSED
+ && (mode == FINISH_AFTER_PAUSE || mStackId == PINNED_STACK_ID))
|| prevState == ActivityState.STOPPED
|| prevState == ActivityState.INITIALIZING) {
- // If this activity is already stopped, we can just finish
- // it right now.
r.makeFinishingLocked();
boolean activityRemoved = destroyActivityLocked(r, true, "finish-imm");
if (activityRemoved) {
@@ -4932,18 +4943,18 @@
}
void removeTask(TaskRecord task, String reason) {
- removeTask(task, reason, !MOVING);
+ removeTask(task, reason, REMOVE_TASK_MODE_DESTROYING);
}
/**
* Removes the input task from this stack.
* @param task to remove.
* @param reason for removal.
- * @param moving task to another stack. In the case we are moving we don't want to perform
- * some operations on the task like removing it from window manager or recents.
+ * @param mode task removal mode. Either {@link #REMOVE_TASK_MODE_DESTROYING},
+ * {@link #REMOVE_TASK_MODE_MOVING}, {@link #REMOVE_TASK_MODE_MOVING_TO_TOP}.
*/
- void removeTask(TaskRecord task, String reason, boolean moving) {
- if (!moving) {
+ void removeTask(TaskRecord task, String reason, int mode) {
+ if (mode == REMOVE_TASK_MODE_DESTROYING) {
mStackSupervisor.removeLockedTaskLocked(task);
mWindowManager.removeTask(task.taskId);
if (!StackId.persistTaskBounds(mStackId)) {
@@ -4969,7 +4980,7 @@
mTaskHistory.remove(task);
updateTaskMovement(task, true);
- if (!moving && task.mActivities.isEmpty()) {
+ if (mode == REMOVE_TASK_MODE_DESTROYING && task.mActivities.isEmpty()) {
// TODO: VI what about activity?
final boolean isVoiceSession = task.voiceSession != null;
if (isVoiceSession) {
@@ -4988,8 +4999,10 @@
if (mTaskHistory.isEmpty()) {
if (DEBUG_STACK) Slog.i(TAG_STACK, "removeTask: removing stack=" + this);
- // We only need to adjust focused stack if this stack is in focus.
- if (isOnHomeDisplay() && mStackSupervisor.isFocusedStack(this)) {
+ // We only need to adjust focused stack if this stack is in focus and we are not in the
+ // process of moving the task to the top of the stack that will be focused.
+ if (isOnHomeDisplay() && mode != REMOVE_TASK_MODE_MOVING_TO_TOP
+ && mStackSupervisor.isFocusedStack(this)) {
String myReason = reason + " leftTaskHistoryEmpty";
if (mFullscreen
|| !adjustFocusToNextFocusableStackLocked(
@@ -5037,7 +5050,7 @@
}
void addTask(final TaskRecord task, final boolean toTop, String reason) {
- final ActivityStack prevStack = preAddTask(task, reason);
+ final ActivityStack prevStack = preAddTask(task, reason, toTop);
task.stack = this;
if (toTop) {
@@ -5052,7 +5065,7 @@
void positionTask(final TaskRecord task, int position) {
final ActivityRecord topRunningActivity = task.topRunningActivityLocked();
final boolean wasResumed = topRunningActivity == task.stack.mResumedActivity;
- final ActivityStack prevStack = preAddTask(task, "positionTask");
+ final ActivityStack prevStack = preAddTask(task, "positionTask", ON_TOP);
task.stack = this;
insertTaskAtPosition(task, position);
postAddTask(task, prevStack);
@@ -5066,10 +5079,11 @@
}
}
- private ActivityStack preAddTask(TaskRecord task, String reason) {
+ private ActivityStack preAddTask(TaskRecord task, String reason, boolean toTop) {
final ActivityStack prevStack = task.stack;
if (prevStack != null && prevStack != this) {
- prevStack.removeTask(task, reason, MOVING);
+ prevStack.removeTask(task, reason,
+ toTop ? REMOVE_TASK_MODE_MOVING_TO_TOP : REMOVE_TASK_MODE_MOVING);
}
return prevStack;
}
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 20ef0e8..4bf28b2 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -167,6 +167,7 @@
import static com.android.server.am.ActivityStack.ActivityState.RESUMED;
import static com.android.server.am.ActivityStack.ActivityState.STOPPED;
import static com.android.server.am.ActivityStack.ActivityState.STOPPING;
+import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING;
import static com.android.server.am.ActivityStack.STACK_INVISIBLE;
import static com.android.server.am.ActivityStack.STACK_VISIBLE;
import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_DONT_LOCK;
@@ -1785,7 +1786,10 @@
if (targetStack != null && isFocusedStack(targetStack)) {
return targetStack.resumeTopActivityUncheckedLocked(target, targetOptions);
}
- mFocusedStack.resumeTopActivityUncheckedLocked(null, null);
+ final ActivityRecord r = mFocusedStack.topRunningActivityLocked();
+ if (r == null || r.state != RESUMED) {
+ mFocusedStack.resumeTopActivityUncheckedLocked(null, null);
+ }
return false;
}
@@ -2134,8 +2138,11 @@
for (int i = 0; i < size; i++) {
moveTaskToStackLocked(tasks.get(i).taskId,
FULLSCREEN_WORKSPACE_STACK_ID, onTop, onTop /*forceFocus*/,
- "moveTasksToFullscreenStack", ANIMATE);
+ "moveTasksToFullscreenStack", ANIMATE, DEFER_RESUME);
}
+
+ ensureActivitiesVisibleLocked(null, 0, PRESERVE_WINDOWS);
+ resumeFocusedStackTopActivityLocked();
} else {
for (int i = size - 1; i >= 0; i--) {
positionTaskInStackLocked(tasks.get(i).taskId,
@@ -2338,7 +2345,7 @@
}
// Remove current stack association, so we can re-associate the task with the
// right stack below.
- task.stack.removeTask(task, "restoreRecentTaskLocked", MOVING);
+ task.stack.removeTask(task, "restoreRecentTaskLocked", REMOVE_TASK_MODE_MOVING);
}
final ActivityStack stack =
@@ -2381,7 +2388,7 @@
+ "support multi-window task=" + task + " to stackId=" + stackId);
}
- final ActivityRecord r = task.getTopActivity();
+ final ActivityRecord r = task.topRunningActivityLocked();
final ActivityStack prevStack = task.stack;
final boolean wasFocused = isFocusedStack(prevStack) && (topRunningActivityLocked() == r);
final boolean wasResumed = prevStack.mResumedActivity == r;
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index 33b87b6..c15effb 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -492,7 +492,7 @@
ActivityRecord r = new ActivityRecord(mService, callerApp, callingUid, callingPackage,
intent, resolvedType, aInfo, mService.mConfiguration, resultRecord, resultWho,
requestCode, componentSpecified, voiceSession != null, mSupervisor, container,
- options);
+ options, sourceRecord);
if (outActivity != null) {
outActivity[0] = r;
}
@@ -1597,9 +1597,6 @@
private void setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) {
mTargetStack = computeStackFocus(mStartActivity, true, mLaunchBounds, mLaunchFlags,
mOptions);
- if (mDoResume) {
- mTargetStack.moveToFront("startingNewTask");
- }
if (mReuseTask == null) {
final TaskRecord task = mTargetStack.createTaskRecord(
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index c6786de..d34ec86 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -974,7 +974,7 @@
@Override
public void setBatteryState(final int status, final int health, final int plugType,
- final int level, final int temp, final int volt) {
+ final int level, final int temp, final int volt, final int chargeCount) {
enforceCallingPermission();
// BatteryService calls us here and we may update external state. It would be wrong
@@ -987,7 +987,8 @@
if (mStats.isOnBattery() == onBattery) {
// The battery state has not changed, so we don't need to sync external
// stats immediately.
- mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt);
+ mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt,
+ chargeCount);
return;
}
}
@@ -996,7 +997,8 @@
// immediately here, we may not collect the relevant data later.
updateExternalStatsSync("battery-state", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL);
synchronized (mStats) {
- mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt);
+ mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt,
+ chargeCount);
}
}
});
diff --git a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
index 5096b35..6d1c531 100644
--- a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
+++ b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
@@ -144,8 +144,13 @@
boolean dumpSerializedSize = false;
boolean dumpEvents = false;
+ boolean dumpDebugInfo = false;
for (String arg : args) {
switch (arg) {
+ case "--debug":
+ dumpDebugInfo = true;
+ break;
+
case "--events":
dumpEvents = true;
break;
@@ -155,6 +160,7 @@
break;
case "--all":
+ dumpDebugInfo = true;
dumpEvents = true;
dumpSerializedSize = true;
break;
@@ -163,6 +169,7 @@
synchronized (mEvents) {
pw.println("Number of events: " + mEvents.size());
+ pw.println("Counter: " + mEventCounter);
if (mEvents.size() > 0) {
pw.println("Time span: " +
DateUtils.formatElapsedTime(
@@ -171,16 +178,12 @@
}
if (dumpSerializedSize) {
- long dataSize = 0;
Parcel p = Parcel.obtain();
for (ConnectivityMetricsEvent e : mEvents) {
- dataSize += 16; // timestamp and 2 stamps
-
- p.writeParcelable(e.data, 0);
+ p.writeParcelable(e, 0);
}
- dataSize += p.dataSize();
+ pw.println("Serialized data size: " + p.dataSize());
p.recycle();
- pw.println("Serialized data size: " + dataSize);
}
if (dumpEvents) {
@@ -192,6 +195,21 @@
}
}
+ if (dumpDebugInfo) {
+ synchronized (mThrottlingCounters) {
+ pw.println();
+ for (int i = 0; i < ConnectivityMetricsLogger.NUMBER_OF_COMPONENTS; i++) {
+ if (mThrottlingCounters[i] > 0) {
+ pw.println("Throttling Counter #" + i + ": " + mThrottlingCounters[i]);
+ }
+ }
+ pw.println("Throttling Time Remaining: " +
+ DateUtils.formatElapsedTime(
+ (mThrottlingIntervalBoundaryMillis - System.currentTimeMillis())
+ / 1000));
+ }
+ }
+
synchronized (mPendingIntents) {
if (!mPendingIntents.isEmpty()) {
pw.println();
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 50d9368..7ed75ca 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -442,42 +442,51 @@
*
* @return whether any uid has been added to {@link #mRestrictBackgroundWhitelistUids}.
*/
- boolean addDefaultRestrictBackgroundWhitelistUids() {
- final SystemConfig sysConfig = SystemConfig.getInstance();
- final PackageManager pm = mContext.getPackageManager();
+ boolean addDefaultRestrictBackgroundWhitelistUidsLocked() {
final List<UserInfo> users = mUserManager.getUsers();
final int numberUsers = users.size();
+ boolean changed = false;
+ for (int i = 0; i < numberUsers; i++) {
+ final UserInfo user = users.get(i);
+ changed = addDefaultRestrictBackgroundWhitelistUidsLocked(user.id) || changed;
+ }
+ return changed;
+ }
+
+ private boolean addDefaultRestrictBackgroundWhitelistUidsLocked(int userId) {
+ final SystemConfig sysConfig = SystemConfig.getInstance();
+ final PackageManager pm = mContext.getPackageManager();
final ArraySet<String> allowDataUsage = sysConfig.getAllowInDataUsageSave();
boolean changed = false;
for (int i = 0; i < allowDataUsage.size(); i++) {
final String pkg = allowDataUsage.valueAt(i);
if (LOGD)
- Slog.d(TAG, "checking restricted background whitelisting for package " + pkg);
+ Slog.d(TAG, "checking restricted background whitelisting for package " + pkg
+ + " and user " + userId);
final ApplicationInfo app;
try {
- app = pm.getApplicationInfo(pkg, PackageManager.MATCH_SYSTEM_ONLY);
+ app = pm.getApplicationInfoAsUser(pkg, PackageManager.MATCH_SYSTEM_ONLY, userId);
} catch (PackageManager.NameNotFoundException e) {
// Should not happen
Slog.wtf(TAG, "No ApplicationInfo for package " + pkg);
continue;
}
if (!app.isPrivilegedApp()) {
- Slog.w(TAG, "getAllowInDataUsageSave() returned non-privileged app: " + pkg);
+ Slog.wtf(TAG, "pm.getApplicationInfoAsUser() returned non-privileged app: " + pkg);
continue;
}
- for (int j = 0; j < numberUsers; j++) {
- final UserInfo user = users.get(j);
- final int uid = UserHandle.getUid(user.id, app.uid);
- mDefaultRestrictBackgroundWhitelistUids.append(uid, true);
- if (LOGD) Slog.d(TAG, "revoked whistelist status for uid " + uid + ": "
+ final int uid = UserHandle.getUid(userId, app.uid);
+ mDefaultRestrictBackgroundWhitelistUids.append(uid, true);
+ if (LOGD)
+ Slog.d(TAG, "Adding uid " + uid + " (user " + userId + ") to default restricted "
+ + "background whitelist. Revoked status: "
+ mRestrictBackgroundWhitelistRevokedUids.get(uid));
- if (!mRestrictBackgroundWhitelistRevokedUids.get(uid)) {
- Slog.i(TAG, "adding default package " + pkg + " (uid " + uid + " for user "
- + user.id + ") to restrict background whitelist");
- mRestrictBackgroundWhitelistUids.append(uid, true);
- changed = true;
- }
+ if (!mRestrictBackgroundWhitelistRevokedUids.get(uid)) {
+ Slog.i(TAG, "adding default package " + pkg + " (uid " + uid + " for user "
+ + userId + ") to restrict background whitelist");
+ mRestrictBackgroundWhitelistUids.append(uid, true);
+ changed = true;
}
}
return changed;
@@ -546,7 +555,7 @@
// read policy from disk
readPolicyLocked();
- if (addDefaultRestrictBackgroundWhitelistUids()) {
+ if (addDefaultRestrictBackgroundWhitelistUidsLocked()) {
writePolicyLocked();
}
@@ -734,7 +743,11 @@
// Remove any persistable state for the given user; both cleaning up after a
// USER_REMOVED, and one last sanity check during USER_ADDED
removeUserStateLocked(userId);
- // Update global restrict for new user
+ if (action == ACTION_USER_ADDED) {
+ // Add apps that are whitelisted by default.
+ addDefaultRestrictBackgroundWhitelistUidsLocked(userId);
+ }
+ // Update global restrict for that user
updateRulesForGlobalChangeLocked(true);
}
break;
@@ -1751,6 +1764,16 @@
}
writePolicy = true;
}
+
+ // Remove entries from revoked default restricted background UID whitelist
+ for (int i = mRestrictBackgroundWhitelistRevokedUids.size() - 1; i >= 0; i--) {
+ final int uid = mRestrictBackgroundWhitelistRevokedUids.keyAt(i);
+ if (UserHandle.getUserId(uid) == userId) {
+ mRestrictBackgroundWhitelistRevokedUids.removeAt(i);
+ writePolicy = true;
+ }
+ }
+
// Remove associated UID policies
int[] uids = new int[0];
for (int i = 0; i < mUidPolicy.size(); i++) {
diff --git a/services/core/java/com/android/server/pm/EphemeralApplicationRegistry.java b/services/core/java/com/android/server/pm/EphemeralApplicationRegistry.java
index 389e0a1..1e3e0ca 100644
--- a/services/core/java/com/android/server/pm/EphemeralApplicationRegistry.java
+++ b/services/core/java/com/android/server/pm/EphemeralApplicationRegistry.java
@@ -36,6 +36,7 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.XmlUtils;
import libcore.io.IoUtils;
+import libcore.util.EmptyArray;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -61,6 +62,8 @@
class EphemeralApplicationRegistry {
private static final boolean DEBUG = false;
+ private static final boolean ENABLED = false;
+
private static final String LOG_TAG = "EphemeralAppRegistry";
private static final long DEFAULT_UNINSTALLED_EPHEMERAL_APP_CACHE_DURATION_MILLIS =
@@ -92,6 +95,9 @@
}
public byte[] getEphemeralApplicationCookieLPw(String packageName, int userId) {
+ if (!ENABLED) {
+ return EmptyArray.BYTE;
+ }
pruneUninstalledEphemeralAppsLPw(userId);
File cookieFile = peekEphemeralCookieFile(packageName, userId);
@@ -107,6 +113,9 @@
public boolean setEphemeralApplicationCookieLPw(String packageName,
byte[] cookie, int userId) {
+ if (!ENABLED) {
+ return false;
+ }
pruneUninstalledEphemeralAppsLPw(userId);
PackageParser.Package pkg = mService.mPackages.get(packageName);
@@ -138,6 +147,9 @@
}
public Bitmap getEphemeralApplicationIconLPw(String packageName, int userId) {
+ if (!ENABLED) {
+ return null;
+ }
pruneUninstalledEphemeralAppsLPw(userId);
File iconFile = new File(getEphemeralApplicationDir(packageName, userId),
@@ -149,6 +161,9 @@
}
public List<EphemeralApplicationInfo> getEphemeralApplicationsLPw(int userId) {
+ if (!ENABLED) {
+ return Collections.emptyList();
+ }
pruneUninstalledEphemeralAppsLPw(userId);
List<EphemeralApplicationInfo> result = getInstalledEphemeralApplicationsLPr(userId);
@@ -157,6 +172,9 @@
}
public void onPackageInstalledLPw(PackageParser.Package pkg) {
+ if (!ENABLED) {
+ return;
+ }
PackageSetting ps = (PackageSetting) pkg.mExtras;
if (ps == null) {
return;
@@ -210,6 +228,9 @@
}
public void onPackageUninstalledLPw(PackageParser.Package pkg) {
+ if (!ENABLED) {
+ return;
+ }
if (pkg == null) {
return;
}
@@ -235,6 +256,9 @@
}
public void onUserRemovedLPw(int userId) {
+ if (!ENABLED) {
+ return;
+ }
if (mUninstalledEphemeralApps != null) {
mUninstalledEphemeralApps.remove(userId);
}
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 8368185..83af017 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -866,8 +866,9 @@
if ((callingUid != Process.SHELL_UID) && (callingUid != Process.ROOT_UID)) {
mAppOps.checkPackage(callingUid, callerPackageName);
final String installerPackageName = mPm.getInstallerPackageName(packageName);
- allowSilentUninstall = installerPackageName != null
- && installerPackageName.equals(callerPackageName);
+ allowSilentUninstall = mPm.isOrphaned(packageName) ||
+ (installerPackageName != null
+ && installerPackageName.equals(callerPackageName));
}
// Check whether the caller is device owner, in which case we do it silently.
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 64581e8..24a6171 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -266,6 +266,7 @@
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileDescriptor;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
@@ -274,6 +275,7 @@
import java.io.InputStream;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
+import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
@@ -2676,8 +2678,14 @@
// Prepare storage for system user really early during boot,
// since core system apps like SettingsProvider and SystemUI
// can't wait for user to start
+ final int storageFlags;
+ if (StorageManager.isFileEncryptedNativeOrEmulated()) {
+ storageFlags = StorageManager.FLAG_STORAGE_DE;
+ } else {
+ storageFlags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE;
+ }
reconcileAppsDataLI(StorageManager.UUID_PRIVATE_INTERNAL, UserHandle.USER_SYSTEM,
- StorageManager.FLAG_STORAGE_DE);
+ storageFlags);
// If this is first boot after an OTA, and a normal boot, then
// we need to clear code cache directories.
@@ -13832,6 +13840,13 @@
return false;
}
+ private static void updateDigest(MessageDigest digest, File file) throws IOException {
+ try (DigestInputStream digestStream =
+ new DigestInputStream(new FileInputStream(file), digest)) {
+ while (digestStream.read() != -1) {} // nothing to do; just plow through the file
+ }
+ }
+
private void replacePackageLIF(PackageParser.Package pkg, final int policyFlags, int scanFlags,
UserHandle user, String installerPackageName, PackageInstalledInfo res) {
final boolean isEphemeral = (policyFlags & PackageParser.PARSE_IS_EPHEMERAL) != 0;
@@ -13886,6 +13901,32 @@
}
}
+ // don't allow a system upgrade unless the upgrade hash matches
+ if (oldPackage.restrictUpdateHash != null && oldPackage.isSystemApp()) {
+ byte[] digestBytes = null;
+ try {
+ final MessageDigest digest = MessageDigest.getInstance("SHA-512");
+ updateDigest(digest, new File(pkg.baseCodePath));
+ if (!ArrayUtils.isEmpty(pkg.splitCodePaths)) {
+ for (String path : pkg.splitCodePaths) {
+ updateDigest(digest, new File(path));
+ }
+ }
+ digestBytes = digest.digest();
+ } catch (NoSuchAlgorithmException | IOException e) {
+ res.setError(INSTALL_FAILED_INVALID_APK,
+ "Could not compute hash: " + pkgName);
+ return;
+ }
+ if (!Arrays.equals(oldPackage.restrictUpdateHash, digestBytes)) {
+ res.setError(INSTALL_FAILED_INVALID_APK,
+ "New package fails restrict-update check: " + pkgName);
+ return;
+ }
+ // retain upgrade restriction
+ pkg.restrictUpdateHash = oldPackage.restrictUpdateHash;
+ }
+
// Check for shared user id changes
String invalidPackageName =
getParentOrChildPackageChangedSharedUser(oldPackage, pkg);
@@ -17490,6 +17531,13 @@
}
}
+ public boolean isOrphaned(String packageName) {
+ // reader
+ synchronized (mPackages) {
+ return mSettings.isOrphaned(packageName);
+ }
+ }
+
@Override
public int getApplicationEnabledSetting(String packageName, int userId) {
if (!sUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED;
@@ -19089,7 +19137,8 @@
// First look for stale data that doesn't belong, and check if things
// have changed since we did our last restorecon
if ((flags & StorageManager.FLAG_STORAGE_CE) != 0) {
- if (!StorageManager.isUserKeyUnlocked(userId)) {
+ if (StorageManager.isFileEncryptedNativeOrEmulated()
+ && !StorageManager.isUserKeyUnlocked(userId)) {
throw new RuntimeException(
"Yikes, someone asked us to reconcile CE storage while " + userId
+ " was still locked; this would have caused massive data loss!");
diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java
index 9d04472..851f085 100644
--- a/services/core/java/com/android/server/pm/PackageSettingBase.java
+++ b/services/core/java/com/android/server/pm/PackageSettingBase.java
@@ -125,6 +125,8 @@
/** Package name of the app that installed this package */
String installerPackageName;
+ /** Indicates if the package that installed this app has been uninstalled */
+ boolean isOrphaned;
/** UUID of {@link VolumeInfo} hosting this app */
String volumeUuid;
@@ -182,6 +184,7 @@
origPackage = base.origPackage;
installerPackageName = base.installerPackageName;
+ isOrphaned = base.isOrphaned;
volumeUuid = base.volumeUuid;
keySetData = new PackageKeySetData(base.keySetData);
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 1040f85..e2e6c7b 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -1117,6 +1117,7 @@
if (installerPackageName != null
&& installerPackageName.equals(packageName)) {
ps.setInstallerPackageName(null);
+ ps.isOrphaned = true;
}
}
mInstallerPackages.remove(packageName);
@@ -2647,6 +2648,9 @@
if (pkg.installerPackageName != null) {
serializer.attribute(null, "installer", pkg.installerPackageName);
}
+ if (pkg.isOrphaned) {
+ serializer.attribute(null, "isOrphaned", "true");
+ }
if (pkg.volumeUuid != null) {
serializer.attribute(null, "volumeUuid", pkg.volumeUuid);
}
@@ -3522,6 +3526,7 @@
String cpuAbiOverrideString = null;
String systemStr = null;
String installerPackageName = null;
+ String isOrphaned = null;
String volumeUuid = null;
String uidError = null;
int pkgFlags = 0;
@@ -3563,6 +3568,7 @@
}
}
installerPackageName = parser.getAttributeValue(null, "installer");
+ isOrphaned = parser.getAttributeValue(null, "isOrphaned");
volumeUuid = parser.getAttributeValue(null, "volumeUuid");
systemStr = parser.getAttributeValue(null, "publicFlags");
@@ -3713,6 +3719,7 @@
if (packageSetting != null) {
packageSetting.uidError = "true".equals(uidError);
packageSetting.installerPackageName = installerPackageName;
+ packageSetting.isOrphaned = "true".equals(isOrphaned);
packageSetting.volumeUuid = volumeUuid;
packageSetting.legacyNativeLibraryPathString = legacyNativeLibraryPathStr;
packageSetting.primaryCpuAbiString = primaryCpuAbiString;
@@ -4115,6 +4122,14 @@
return pkg.installerPackageName;
}
+ boolean isOrphaned(String packageName) {
+ final PackageSetting pkg = mPackages.get(packageName);
+ if (pkg == null) {
+ throw new IllegalArgumentException("Unknown package: " + packageName);
+ }
+ return pkg.isOrphaned;
+ }
+
int getApplicationEnabledSettingLPr(String packageName, int userId) {
final PackageSetting pkg = mPackages.get(packageName);
if (pkg == null) {
diff --git a/services/core/java/com/android/server/pm/ShortcutLauncher.java b/services/core/java/com/android/server/pm/ShortcutLauncher.java
index c6d66fe..76d47a8 100644
--- a/services/core/java/com/android/server/pm/ShortcutLauncher.java
+++ b/services/core/java/com/android/server/pm/ShortcutLauncher.java
@@ -57,15 +57,18 @@
*/
final private ArrayMap<PackageWithUser, ArraySet<String>> mPinnedShortcuts = new ArrayMap<>();
- private ShortcutLauncher(@UserIdInt int ownerUserId, @NonNull String packageName,
+ private ShortcutLauncher(@NonNull ShortcutUser shortcutUser,
+ @UserIdInt int ownerUserId, @NonNull String packageName,
@UserIdInt int launcherUserId, ShortcutPackageInfo spi) {
- super(launcherUserId, packageName, spi != null ? spi : ShortcutPackageInfo.newEmpty());
+ super(shortcutUser, launcherUserId, packageName,
+ spi != null ? spi : ShortcutPackageInfo.newEmpty());
mOwnerUserId = ownerUserId;
}
- public ShortcutLauncher(@UserIdInt int ownerUserId, @NonNull String packageName,
+ public ShortcutLauncher(@NonNull ShortcutUser shortcutUser,
+ @UserIdInt int ownerUserId, @NonNull String packageName,
@UserIdInt int launcherUserId) {
- this(ownerUserId, packageName, launcherUserId, null);
+ this(shortcutUser, ownerUserId, packageName, launcherUserId, null);
}
@Override
@@ -179,8 +182,8 @@
/**
* Load.
*/
- public static ShortcutLauncher loadFromXml(XmlPullParser parser, int ownerUserId,
- boolean fromBackup) throws IOException, XmlPullParserException {
+ public static ShortcutLauncher loadFromXml(XmlPullParser parser, ShortcutUser shortcutUser,
+ int ownerUserId, boolean fromBackup) throws IOException, XmlPullParserException {
final String launcherPackageName = ShortcutService.parseStringAttribute(parser,
ATTR_PACKAGE_NAME);
@@ -189,8 +192,8 @@
fromBackup ? ownerUserId
: ShortcutService.parseIntAttribute(parser, ATTR_LAUNCHER_USER_ID, ownerUserId);
- final ShortcutLauncher ret = new ShortcutLauncher(launcherUserId, launcherPackageName,
- launcherUserId);
+ final ShortcutLauncher ret = new ShortcutLauncher(shortcutUser, launcherUserId,
+ launcherPackageName, launcherUserId);
ArraySet<String> ids = null;
final int outerDepth = parser.getDepth();
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index d7f8cc6..151f61e 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -38,7 +38,6 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
@@ -95,12 +94,21 @@
*/
private long mLastResetTime;
- private ShortcutPackage(int packageUserId, String packageName, ShortcutPackageInfo spi) {
- super(packageUserId, packageName, spi != null ? spi : ShortcutPackageInfo.newEmpty());
+ private final int mPackageUid;
+
+ private long mLastKnownForegroundElapsedTime;
+
+ private ShortcutPackage(ShortcutService s, ShortcutUser shortcutUser,
+ int packageUserId, String packageName, ShortcutPackageInfo spi) {
+ super(shortcutUser, packageUserId, packageName,
+ spi != null ? spi : ShortcutPackageInfo.newEmpty());
+
+ mPackageUid = s.injectGetPackageUid(packageName, packageUserId);
}
- public ShortcutPackage(int packageUserId, String packageName) {
- this(packageUserId, packageName, null);
+ public ShortcutPackage(ShortcutService s, ShortcutUser shortcutUser,
+ int packageUserId, String packageName) {
+ this(s, shortcutUser, packageUserId, packageName, null);
}
@Override
@@ -109,6 +117,10 @@
return getPackageUserId();
}
+ public int getPackageUid() {
+ return mPackageUid;
+ }
+
/**
* Called when a shortcut is about to be published. At this point we know the publisher package
* exists (as opposed to Launcher trying to fetch shortcuts from a non-existent package), so
@@ -274,18 +286,12 @@
}
// Then, for the pinned set for each launcher, set the pin flag one by one.
- final ArrayMap<ShortcutUser.PackageWithUser, ShortcutLauncher> launchers =
- s.getUserShortcutsLocked(getPackageUserId()).getAllLaunchers();
-
- for (int l = launchers.size() - 1; l >= 0; l--) {
- // Note even if a launcher that hasn't been installed can still pin shortcuts.
-
- final ShortcutLauncher launcherShortcuts = launchers.valueAt(l);
+ s.getUserShortcutsLocked(getPackageUserId()).forAllLaunchers(launcherShortcuts -> {
final ArraySet<String> pinned = launcherShortcuts.getPinnedShortcutIds(
getPackageName(), getPackageUserId());
if (pinned == null || pinned.size() == 0) {
- continue;
+ return;
}
for (int i = pinned.size() - 1; i >= 0; i--) {
final String id = pinned.valueAt(i);
@@ -299,7 +305,7 @@
}
si.addFlags(ShortcutInfo.FLAG_PINNED);
}
- }
+ });
// Lastly, remove the ones that are no longer pinned nor dynamic.
removeOrphans(s);
@@ -307,8 +313,28 @@
/**
* Number of calls that the caller has made, since the last reset.
+ *
+ * <p>This takes care of the resetting the counter for foreground apps as well as after
+ * locale changes.
*/
public int getApiCallCount(@NonNull ShortcutService s) {
+ mShortcutUser.resetThrottlingIfNeeded(s);
+
+ // Reset the counter if:
+ // - the package is in foreground now.
+ // - the package is *not* in foreground now, but was in foreground at some point
+ // since the previous time it had been.
+ if (s.isUidForegroundLocked(mPackageUid)
+ || mLastKnownForegroundElapsedTime
+ < s.getUidLastForegroundElapsedTimeLocked(mPackageUid)) {
+ mLastKnownForegroundElapsedTime = s.injectElapsedRealtime();
+ resetRateLimiting(s);
+ }
+
+ // Note resetThrottlingIfNeeded() and resetRateLimiting() will set 0 to mApiCallCount,
+ // but we just can't return 0 at this point, because we may have to update
+ // mLastResetTime.
+
final long last = s.getLastResetTimeLocked();
final long now = s.injectCurrentTimeMillis();
@@ -335,16 +361,30 @@
/**
* If the caller app hasn't been throttled yet, increment {@link #mApiCallCount}
* and return true. Otherwise just return false.
+ *
+ * <p>This takes care of the resetting the counter for foreground apps as well as after
+ * locale changes, which is done internally by {@link #getApiCallCount}.
*/
public boolean tryApiCall(@NonNull ShortcutService s) {
if (getApiCallCount(s) >= s.mMaxUpdatesPerInterval) {
return false;
}
mApiCallCount++;
+ s.scheduleSaveUser(getOwnerUserId());
return true;
}
- public void resetRateLimitingForCommandLine() {
+ public void resetRateLimiting(@NonNull ShortcutService s) {
+ if (ShortcutService.DEBUG) {
+ Slog.d(TAG, "resetRateLimiting: " + getPackageName());
+ }
+ if (mApiCallCount > 0) {
+ mApiCallCount = 0;
+ s.scheduleSaveUser(getOwnerUserId());
+ }
+ }
+
+ public void resetRateLimitingForCommandLineNoSaving() {
mApiCallCount = 0;
mLastResetTime = 0;
}
@@ -451,6 +491,8 @@
pw.print(prefix);
pw.print("Package: ");
pw.print(getPackageName());
+ pw.print(" UID: ");
+ pw.print(mPackageUid);
pw.println();
pw.print(prefix);
@@ -459,6 +501,13 @@
pw.print(getApiCallCount(s));
pw.println();
+ // getApiCallCount() may have updated mLastKnownForegroundElapsedTime.
+ pw.print(prefix);
+ pw.print(" ");
+ pw.print("Last known FG: ");
+ pw.print(mLastKnownForegroundElapsedTime);
+ pw.println();
+
// This should be after getApiCallCount(), which may update it.
pw.print(prefix);
pw.print(" ");
@@ -571,14 +620,15 @@
out.endTag(null, TAG_SHORTCUT);
}
- public static ShortcutPackage loadFromXml(ShortcutService s, XmlPullParser parser,
- int ownerUserId, boolean fromBackup)
+ public static ShortcutPackage loadFromXml(ShortcutService s, ShortcutUser shortcutUser,
+ XmlPullParser parser, boolean fromBackup)
throws IOException, XmlPullParserException {
final String packageName = ShortcutService.parseStringAttribute(parser,
ATTR_NAME);
- final ShortcutPackage ret = new ShortcutPackage(ownerUserId, packageName);
+ final ShortcutPackage ret = new ShortcutPackage(s, shortcutUser,
+ shortcutUser.getUserId(), packageName);
ret.mDynamicShortcutCount =
ShortcutService.parseIntAttribute(parser, ATTR_DYNAMIC_COUNT);
@@ -602,7 +652,8 @@
ret.getPackageInfo().loadFromXml(parser, fromBackup);
continue;
case TAG_SHORTCUT:
- final ShortcutInfo si = parseShortcut(parser, packageName, ownerUserId);
+ final ShortcutInfo si = parseShortcut(parser, packageName,
+ shortcutUser.getUserId());
// Don't use addShortcut(), we don't need to save the icon.
ret.mShortcuts.put(si.getId(), si);
diff --git a/services/core/java/com/android/server/pm/ShortcutPackageItem.java b/services/core/java/com/android/server/pm/ShortcutPackageItem.java
index f31dd17..6fbdb82 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackageItem.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackageItem.java
@@ -34,8 +34,12 @@
private final ShortcutPackageInfo mPackageInfo;
- protected ShortcutPackageItem(int packageUserId, @NonNull String packageName,
+ protected final ShortcutUser mShortcutUser;
+
+ protected ShortcutPackageItem(@NonNull ShortcutUser shortcutUser,
+ int packageUserId, @NonNull String packageName,
@NonNull ShortcutPackageInfo packageInfo) {
+ mShortcutUser = shortcutUser;
mPackageUserId = packageUserId;
mPackageName = Preconditions.checkStringNotEmpty(packageName);
mPackageInfo = Preconditions.checkNotNull(packageInfo);
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index c0874ef..0f17804 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -19,9 +19,10 @@
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
+import android.app.ActivityManagerNative;
import android.app.AppGlobals;
+import android.app.IUidObserver;
import android.content.ComponentName;
-import android.content.ContentProvider;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -39,11 +40,9 @@
import android.content.pm.ShortcutServiceInternal.ShortcutChangeListener;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
-import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.RectF;
import android.graphics.drawable.Icon;
-import android.net.Uri;
import android.os.Binder;
import android.os.Environment;
import android.os.FileUtils;
@@ -56,16 +55,18 @@
import android.os.ResultReceiver;
import android.os.SELinux;
import android.os.ShellCommand;
+import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import android.text.format.Time;
-import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.AtomicFile;
import android.util.KeyValueListParser;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.SparseIntArray;
+import android.util.SparseLongArray;
import android.util.TypedValue;
import android.util.Xml;
@@ -73,6 +74,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
import com.android.internal.os.BackgroundThread;
+import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.Preconditions;
import com.android.server.LocalServices;
@@ -102,6 +104,7 @@
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -124,12 +127,13 @@
static final boolean DEBUG = false; // STOPSHIP if true
static final boolean DEBUG_LOAD = false; // STOPSHIP if true
+ static final boolean DEBUG_PROCSTATE = false; // STOPSHIP if true
@VisibleForTesting
- static final long DEFAULT_RESET_INTERVAL_SEC = 60 * 60; // 1 hour
+ static final long DEFAULT_RESET_INTERVAL_SEC = 24 * 60 * 60; // 1 day
@VisibleForTesting
- static final int DEFAULT_MAX_UPDATES_PER_INTERVAL = 2;
+ static final int DEFAULT_MAX_UPDATES_PER_INTERVAL = 10;
@VisibleForTesting
static final int DEFAULT_MAX_SHORTCUTS_PER_APP = 5;
@@ -162,6 +166,7 @@
private static final String TAG_ROOT = "root";
private static final String TAG_LAST_RESET_TIME = "last_reset_time";
+ private static final String TAG_LOCALE_CHANGE_SEQUENCE_NUMBER = "locale_seq_no";
private static final String ATTR_VALUE = "value";
@@ -256,8 +261,23 @@
private final UserManager mUserManager;
@GuardedBy("mLock")
+ final SparseIntArray mUidState = new SparseIntArray();
+
+ @GuardedBy("mLock")
+ final SparseLongArray mUidLastForegroundElapsedTime = new SparseLongArray();
+
+ @GuardedBy("mLock")
private List<Integer> mDirtyUserIds = new ArrayList<>();
+ /**
+ * A counter that increments every time the system locale changes. We keep track of it to reset
+ * throttling counters on the first call from each package after the last locale change.
+ *
+ * We need this mechanism because we can't do much in the locale change callback, which is
+ * {@link ShortcutServiceInternal#onSystemLocaleChangedNoLock()}.
+ */
+ private final AtomicLong mLocaleChangeSequenceNumber = new AtomicLong();
+
private static final int PACKAGE_MATCH_FLAGS =
PackageManager.MATCH_DIRECT_BOOT_AWARE
| PackageManager.MATCH_DIRECT_BOOT_UNAWARE
@@ -283,6 +303,9 @@
@GuardedBy("mStatLock")
private final long[] mDurationStats = new long[Stats.COUNT];
+ private static final int PROCESS_STATE_FOREGROUND_THRESHOLD =
+ ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
+
public ShortcutService(Context context) {
this(context, BackgroundThread.get().getLooper());
}
@@ -297,6 +320,9 @@
mUserManager = context.getSystemService(UserManager.class);
mPackageMonitor.register(context, looper, UserHandle.ALL, /* externalStorage= */ false);
+
+ injectRegisterUidObserver(mUidObserver, ActivityManager.UID_OBSERVER_PROCSTATE
+ | ActivityManager.UID_OBSERVER_GONE);
}
void logDurationStat(int statId, long start) {
@@ -306,6 +332,59 @@
}
}
+ public long getLocaleChangeSequenceNumber() {
+ return mLocaleChangeSequenceNumber.get();
+ }
+
+ final private IUidObserver mUidObserver = new IUidObserver.Stub() {
+ @Override public void onUidStateChanged(int uid, int procState) throws RemoteException {
+ handleOnUidStateChanged(uid, procState);
+ }
+
+ @Override public void onUidGone(int uid) throws RemoteException {
+ handleOnUidStateChanged(uid, ActivityManager.MAX_PROCESS_STATE);
+ }
+
+ @Override public void onUidActive(int uid) throws RemoteException {
+ }
+
+ @Override public void onUidIdle(int uid) throws RemoteException {
+ }
+ };
+
+ void handleOnUidStateChanged(int uid, int procState) {
+ if (DEBUG_PROCSTATE) {
+ Slog.d(TAG, "onUidStateChanged: uid=" + uid + " state=" + procState);
+ }
+ synchronized (mLock) {
+ mUidState.put(uid, procState);
+
+ // We need to keep track of last time an app comes to foreground.
+ // See ShortcutPackage.getApiCallCount() for how it's used.
+ // It doesn't have to be persisted, but it needs to be the elapsed time.
+ if (isProcessStateForeground(procState)) {
+ mUidLastForegroundElapsedTime.put(uid, injectElapsedRealtime());
+ }
+ }
+ }
+
+ private boolean isProcessStateForeground(int processState) {
+ return processState <= PROCESS_STATE_FOREGROUND_THRESHOLD;
+ }
+
+ boolean isUidForegroundLocked(int uid) {
+ if (uid == Process.SYSTEM_UID) {
+ // IUidObserver doesn't report the state of SYSTEM, but it always has bound services,
+ // so it's foreground anyway.
+ return true;
+ }
+ return isProcessStateForeground(mUidState.get(uid, ActivityManager.MAX_PROCESS_STATE));
+ }
+
+ long getUidLastForegroundElapsedTimeLocked(int uid) {
+ return mUidLastForegroundElapsedTime.get(uid);
+ }
+
/**
* System service lifecycle.
*/
@@ -596,6 +675,8 @@
// Body.
writeTagValue(out, TAG_LAST_RESET_TIME, mRawLastResetTime);
+ writeTagValue(out, TAG_LOCALE_CHANGE_SEQUENCE_NUMBER,
+ mLocaleChangeSequenceNumber.get());
// Epilogue.
out.endTag(null, TAG_ROOT);
@@ -640,6 +721,9 @@
case TAG_LAST_RESET_TIME:
mRawLastResetTime = parseLongAttribute(parser, ATTR_VALUE);
break;
+ case TAG_LOCALE_CHANGE_SEQUENCE_NUMBER:
+ mLocaleChangeSequenceNumber.set(parseLongAttribute(parser, ATTR_VALUE));
+ break;
default:
Slog.e(TAG, "Invalid tag: " + tag);
break;
@@ -993,20 +1077,6 @@
bitmap = icon.getBitmap(); // Don't recycle in this case.
break;
}
- case Icon.TYPE_URI: {
- final Uri uri = ContentProvider.maybeAddUserId(icon.getUri(), userId);
-
- try (InputStream is = mContext.getContentResolver().openInputStream(uri)) {
-
- bitmapToRecycle = BitmapFactory.decodeStream(is);
- bitmap = bitmapToRecycle;
-
- } catch (IOException e) {
- Slog.e(TAG, "Unable to load icon from " + uri);
- return;
- }
- break;
- }
default:
// This shouldn't happen because we've already validated the icon, but
// just in case.
@@ -1122,6 +1192,24 @@
Preconditions.checkState(isCallerSystem(), "Caller must be system");
}
+ private void enforceResetThrottlingPermission() {
+ if (isCallerSystem()) {
+ return;
+ }
+ injectEnforceCallingPermission(
+ android.Manifest.permission.RESET_SHORTCUT_MANAGER_THROTTLING, null);
+ }
+
+ /**
+ * Somehow overriding ServiceContext.enforceCallingPermission() in the unit tests would confuse
+ * mockito. So instead we extracted it here and override it in the tests.
+ */
+ @VisibleForTesting
+ void injectEnforceCallingPermission(
+ @NonNull String permission, @Nullable String message) {
+ mContext.enforceCallingPermission(permission, message);
+ }
+
private void verifyCaller(@NonNull String packageName, @UserIdInt int userId) {
Preconditions.checkStringNotEmpty(packageName, "packageName");
@@ -1481,6 +1569,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);
+ }
+
// We override this method in unit tests to do a simpler check.
boolean hasShortcutHostPermission(@NonNull String callingPackage, int userId) {
return hasShortcutHostPermissionInner(callingPackage, userId);
@@ -1593,15 +1698,11 @@
user.removeLauncher(packageUserId, packageName);
// Then remove pinned shortcuts from all launchers.
- final ArrayMap<PackageWithUser, ShortcutLauncher> launchers = user.getAllLaunchers();
- for (int i = launchers.size() - 1; i >= 0; i--) {
- launchers.valueAt(i).cleanUpPackage(packageName, packageUserId);
- }
- // Now there may be orphan shortcuts because we removed pinned shortucts at the previous
+ user.forAllLaunchers(l -> l.cleanUpPackage(packageName, packageUserId));
+
+ // Now there may be orphan shortcuts because we removed pinned shortcuts at the previous
// step. Remove them too.
- for (int i = user.getAllPackages().size() - 1; i >= 0; i--) {
- user.getAllPackages().valueAt(i).refreshPinnedFlags(this);
- }
+ user.forAllPackages(p -> p.refreshPinnedFlags(this));
scheduleSaveUser(owningUserId);
@@ -1644,13 +1745,12 @@
callingPackage, packageName, shortcutIds, changedSince,
componentName, queryFlags, userId, ret, cloneFlag);
} else {
- final ArrayMap<String, ShortcutPackage> packages =
- getUserShortcutsLocked(userId).getAllPackages();
- for (int i = packages.size() - 1; i >= 0; i--) {
+ final List<String> shortcutIdsF = shortcutIds;
+ getUserShortcutsLocked(userId).forAllPackages(p -> {
getShortcutsInnerLocked(launcherUserId,
- callingPackage, packages.keyAt(i), shortcutIds, changedSince,
+ callingPackage, p.getPackageName(), shortcutIdsF, changedSince,
componentName, queryFlags, userId, ret, cloneFlag);
- }
+ });
}
}
return ret;
@@ -1819,6 +1919,29 @@
@NonNull String callingPackage) {
return ShortcutService.this.hasShortcutHostPermission(callingPackage, launcherUserId);
}
+
+ /**
+ * Called by AM when the system locale changes *within the AM lock. ABSOLUTELY do not take
+ * any locks in this method.
+ */
+ @Override
+ public void onSystemLocaleChangedNoLock() {
+ // DO NOT HOLD ANY LOCKS HERE.
+
+ // We want to reset throttling for all packages for all users. But we can't just do so
+ // here because:
+ // - We can't load/save users that are locked.
+ // - Even for loaded users, resetting the counters would require us to hold mLock.
+ //
+ // So we use a "pull" model instead. In here, we just increment the "locale change
+ // sequence number". Each ShortcutUser has the "last known locale change sequence".
+ //
+ // This allows ShortcutUser's to detect the system locale change, so they can reset
+ // counters.
+
+ mLocaleChangeSequenceNumber.incrementAndGet();
+ postToHandler(() -> scheduleSaveBaseState());
+ }
}
/**
@@ -2087,11 +2210,11 @@
+ android.Manifest.permission.DUMP);
return;
}
- dumpInner(pw);
+ dumpInner(pw, args);
}
@VisibleForTesting
- void dumpInner(PrintWriter pw) {
+ void dumpInner(PrintWriter pw, String[] args) {
synchronized (mLock) {
final long now = injectCurrentTimeMillis();
pw.print("Now: [");
@@ -2115,6 +2238,9 @@
pw.print(next);
pw.print("] ");
pw.print(formatTime(next));
+
+ pw.print(" Locale change seq#: ");
+ pw.print(mLocaleChangeSequenceNumber.get());
pw.println();
pw.print(" Config:");
@@ -2149,6 +2275,24 @@
pw.println();
mUsers.valueAt(i).dump(this, pw, " ");
}
+
+ pw.println();
+ pw.println(" UID state:");
+
+ for (int i = 0; i < mUidState.size(); i++) {
+ final int uid = mUidState.keyAt(i);
+ final int state = mUidState.valueAt(i);
+ pw.print(" UID=");
+ pw.print(uid);
+ pw.print(" state=");
+ pw.print(state);
+ if (isProcessStateForeground(state)) {
+ pw.print(" [FG]");
+ }
+ pw.print(" last FG=");
+ pw.print(mUidLastForegroundElapsedTime.get(uid));
+ pw.println();
+ }
}
}
@@ -2316,10 +2460,7 @@
Slog.i(TAG, "cmd: handleResetPackageThrottling: " + packageName);
- synchronized (mLock) {
- getPackageShortcutsLocked(packageName, mUserId).resetRateLimitingForCommandLine();
- saveUserLocked(mUserId);
- }
+ resetPackageThrottling(packageName, mUserId);
}
private void handleOverrideConfig() throws CommandException {
@@ -2404,6 +2545,11 @@
return System.currentTimeMillis();
}
+ @VisibleForTesting
+ long injectElapsedRealtime() {
+ return SystemClock.elapsedRealtime();
+ }
+
// Injection point.
@VisibleForTesting
int injectBinderCallingUid() {
@@ -2451,6 +2597,14 @@
}
@VisibleForTesting
+ void injectRegisterUidObserver(IUidObserver observer, int which) {
+ try {
+ ActivityManagerNative.getDefault().registerUidObserver(observer, which);
+ } catch (RemoteException shouldntHappen) {
+ }
+ }
+
+ @VisibleForTesting
PackageManagerInternal injectPackageManagerInternal() {
return mPackageManagerInternal;
}
@@ -2500,7 +2654,7 @@
final ShortcutUser user = mUsers.get(userId);
if (user == null) return null;
- final ShortcutPackage pkg = user.getAllPackages().get(packageName);
+ final ShortcutPackage pkg = user.getAllPackagesForTest().get(packageName);
if (pkg == null) return null;
return pkg.findShortcutById(shortcutId);
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index 3d2e2ec..7d19a78 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -21,7 +21,9 @@
import android.text.format.Formatter;
import android.util.ArrayMap;
import android.util.Slog;
+import android.util.SparseArray;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Preconditions;
import libcore.util.Objects;
@@ -45,6 +47,7 @@
private static final String TAG_LAUNCHER = "launcher";
private static final String ATTR_VALUE = "value";
+ private static final String ATTR_KNOWN_LOCALE_CHANGE_SEQUENCE_NUMBER = "locale-seq-no";
static final class PackageWithUser {
final int userId;
@@ -89,10 +92,15 @@
private final ArrayMap<String, ShortcutPackage> mPackages = new ArrayMap<>();
+ private final SparseArray<ShortcutPackage> mPackagesFromUid = new SparseArray<>();
+
private final ArrayMap<PackageWithUser, ShortcutLauncher> mLaunchers = new ArrayMap<>();
+ /** Default launcher that can access the launcher apps APIs. */
private ComponentName mLauncherComponent;
+ private long mKnownLocaleChangeSequenceNumber;
+
public ShortcutUser(int userId) {
mUserId = userId;
}
@@ -101,7 +109,10 @@
return mUserId;
}
- public ArrayMap<String, ShortcutPackage> getAllPackages() {
+ // We don't expose this directly to non-test code because only ShortcutUser should add to/
+ // remove from it.
+ @VisibleForTesting
+ ArrayMap<String, ShortcutPackage> getAllPackagesForTest() {
return mPackages;
}
@@ -113,7 +124,10 @@
return removed;
}
- public ArrayMap<PackageWithUser, ShortcutLauncher> getAllLaunchers() {
+ // We don't expose this directly to non-test code because only ShortcutUser should add to/
+ // remove from it.
+ @VisibleForTesting
+ ArrayMap<PackageWithUser, ShortcutLauncher> getAllLaunchersForTest() {
return mLaunchers;
}
@@ -130,7 +144,7 @@
public ShortcutPackage getPackageShortcuts(ShortcutService s, @NonNull String packageName) {
ShortcutPackage ret = mPackages.get(packageName);
if (ret == null) {
- ret = new ShortcutPackage(mUserId, packageName);
+ ret = new ShortcutPackage(s, this, mUserId, packageName);
mPackages.put(packageName, ret);
} else {
ret.attemptToRestoreIfNeededAndSave(s);
@@ -143,7 +157,7 @@
final PackageWithUser key = PackageWithUser.of(launcherUserId, packageName);
ShortcutLauncher ret = mLaunchers.get(key);
if (ret == null) {
- ret = new ShortcutLauncher(mUserId, packageName, launcherUserId);
+ ret = new ShortcutLauncher(this, mUserId, packageName, launcherUserId);
mLaunchers.put(key, ret);
} else {
ret.attemptToRestoreIfNeededAndSave(s);
@@ -151,21 +165,25 @@
return ret;
}
- public void forAllPackageItems(Consumer<ShortcutPackageItem> callback) {
- {
- final int size = mLaunchers.size();
- for (int i = 0; i < size; i++) {
- callback.accept(mLaunchers.valueAt(i));
- }
+ public void forAllPackages(Consumer<? super ShortcutPackage> callback) {
+ final int size = mPackages.size();
+ for (int i = 0; i < size; i++) {
+ callback.accept(mPackages.valueAt(i));
}
- {
- final int size = mPackages.size();
- for (int i = 0; i < size; i++) {
- callback.accept(mPackages.valueAt(i));
- }
+ }
+
+ public void forAllLaunchers(Consumer<? super ShortcutLauncher> callback) {
+ final int size = mLaunchers.size();
+ for (int i = 0; i < size; i++) {
+ callback.accept(mLaunchers.valueAt(i));
}
}
+ public void forAllPackageItems(Consumer<? super ShortcutPackageItem> callback) {
+ forAllLaunchers(callback);
+ forAllPackages(callback);
+ }
+
public void forPackageItem(@NonNull String packageName, @UserIdInt int packageUserId,
Consumer<ShortcutPackageItem> callback) {
forAllPackageItems(spi -> {
@@ -177,6 +195,24 @@
}
/**
+ * Reset all throttling counters for all packages, if there has been a system locale change.
+ */
+ public void resetThrottlingIfNeeded(ShortcutService s) {
+ final long currentNo = s.getLocaleChangeSequenceNumber();
+ if (mKnownLocaleChangeSequenceNumber < currentNo) {
+ if (ShortcutService.DEBUG) {
+ Slog.d(TAG, "LocaleChange detected for user " + mUserId);
+ }
+
+ mKnownLocaleChangeSequenceNumber = currentNo;
+
+ forAllPackages(p -> p.resetRateLimiting(s));
+
+ s.scheduleSaveUser(mUserId);
+ }
+ }
+
+ /**
* Called when a package is updated.
*/
public void handlePackageUpdated(ShortcutService s, @NonNull String packageName,
@@ -198,6 +234,9 @@
throws IOException, XmlPullParserException {
out.startTag(null, TAG_ROOT);
+ ShortcutService.writeAttr(out, ATTR_KNOWN_LOCALE_CHANGE_SEQUENCE_NUMBER,
+ mKnownLocaleChangeSequenceNumber);
+
ShortcutService.writeTagValue(out, TAG_LAUNCHER,
mLauncherComponent);
@@ -235,6 +274,9 @@
boolean fromBackup) throws IOException, XmlPullParserException {
final ShortcutUser ret = new ShortcutUser(userId);
+ ret.mKnownLocaleChangeSequenceNumber = ShortcutService.parseLongAttribute(parser,
+ ATTR_KNOWN_LOCALE_CHANGE_SEQUENCE_NUMBER);
+
final int outerDepth = parser.getDepth();
int type;
while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
@@ -254,7 +296,7 @@
}
case ShortcutPackage.TAG_ROOT: {
final ShortcutPackage shortcuts = ShortcutPackage.loadFromXml(
- s, parser, userId, fromBackup);
+ s, ret, parser, fromBackup);
// Don't use addShortcut(), we don't need to save the icon.
ret.mPackages.put(shortcuts.getPackageName(), shortcuts);
@@ -262,7 +304,8 @@
}
case ShortcutLauncher.TAG_ROOT: {
- ret.addLauncher(ShortcutLauncher.loadFromXml(parser, userId, fromBackup));
+ ret.addLauncher(
+ ShortcutLauncher.loadFromXml(parser, ret, userId, fromBackup));
continue;
}
}
@@ -294,6 +337,8 @@
pw.print(prefix);
pw.print("User: ");
pw.print(mUserId);
+ pw.print(" Known locale seq#: ");
+ pw.print(mKnownLocaleChangeSequenceNumber);
pw.println();
prefix += prefix + " ";
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index af7e66d..4c7f9eb 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -73,6 +73,8 @@
import android.service.wallpaper.IWallpaperEngine;
import android.service.wallpaper.IWallpaperService;
import android.service.wallpaper.WallpaperService;
+import android.system.ErrnoException;
+import android.system.Os;
import android.util.EventLog;
import android.util.Slog;
import android.util.SparseArray;
@@ -224,6 +226,17 @@
+ " whichPending=0x" + Integer.toHexString(wallpaper.whichPending)
+ " written=" + written);
}
+
+ if (moved && lockWallpaperChanged) {
+ // We just migrated sys -> lock to preserve imagery for an impending
+ // new system-only wallpaper. Tell keyguard about it but that's it.
+ if (DEBUG) {
+ Slog.i(TAG, "Sys -> lock MOVED_TO");
+ }
+ notifyLockWallpaperChanged();
+ return;
+ }
+
synchronized (mLock) {
if (sysWallpaperChanged || lockWallpaperChanged) {
notifyCallbacksLocked(wallpaper);
@@ -276,14 +289,7 @@
mLockWallpaperMap.remove(wallpaper.userId);
}
// and in any case, tell keyguard about it
- final IWallpaperManagerCallback cb = mKeyguardListener;
- if (cb != null) {
- try {
- cb.onWallpaperChanged();
- } catch (RemoteException e) {
- // Oh well it went away; no big deal
- }
- }
+ notifyLockWallpaperChanged();
}
saveSettingsLocked(wallpaper.userId);
}
@@ -293,6 +299,17 @@
}
}
+ void notifyLockWallpaperChanged() {
+ final IWallpaperManagerCallback cb = mKeyguardListener;
+ if (cb != null) {
+ try {
+ cb.onWallpaperChanged();
+ } catch (RemoteException e) {
+ // Oh well it went away; no big deal
+ }
+ }
+ }
+
/**
* Once a new wallpaper has been written via setWallpaper(...), it needs to be cropped
* for display.
@@ -1334,6 +1351,17 @@
if (DEBUG) Slog.v(TAG, "setWallpaper which=0x" + Integer.toHexString(which));
WallpaperData wallpaper;
+ /* If we're setting system but not lock, and lock is currently sharing the system
+ * wallpaper, we need to migrate that image over to being lock-only before
+ * the caller here writes new bitmap data.
+ */
+ if (which == FLAG_SYSTEM && mLockWallpaperMap.get(userId) == null) {
+ if (DEBUG) {
+ Slog.i(TAG, "Migrating system->lock to preserve");
+ }
+ migrateSystemToLockWallpaperLocked(userId);
+ }
+
wallpaper = getWallpaperSafeLocked(userId, which);
final long ident = Binder.clearCallingIdentity();
try {
@@ -1354,6 +1382,38 @@
}
}
+ private void migrateSystemToLockWallpaperLocked(int userId) {
+ WallpaperData sysWP = mWallpaperMap.get(userId);
+ if (sysWP == null) {
+ if (DEBUG) {
+ Slog.i(TAG, "No system wallpaper? Not tracking for lock-only");
+ }
+ return;
+ }
+
+ // We know a-priori that there is no lock-only wallpaper currently
+ WallpaperData lockWP = new WallpaperData(userId,
+ WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
+ lockWP.wallpaperId = sysWP.wallpaperId;
+ lockWP.cropHint.set(sysWP.cropHint);
+ lockWP.width = sysWP.width;
+ lockWP.height = sysWP.height;
+ lockWP.allowBackup = false;
+
+ // Migrate the bitmap files outright; no need to copy
+ try {
+ Os.rename(sysWP.wallpaperFile.getAbsolutePath(), lockWP.wallpaperFile.getAbsolutePath());
+ Os.rename(sysWP.cropFile.getAbsolutePath(), lockWP.cropFile.getAbsolutePath());
+ } catch (ErrnoException e) {
+ Slog.e(TAG, "Can't migrate system wallpaper: " + e.getMessage());
+ lockWP.wallpaperFile.delete();
+ lockWP.cropFile.delete();
+ return;
+ }
+
+ mLockWallpaperMap.put(userId, lockWP);
+ }
+
ParcelFileDescriptor updateWallpaperBitmapLocked(String name, WallpaperData wallpaper,
Bundle extras) {
if (name == null) name = "";
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 094b217..4553f8e 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -372,7 +372,7 @@
topOpeningAppAnimator != null ? topOpeningAppAnimator.animation : null,
topClosingAppAnimator != null ? topClosingAppAnimator.animation : null);
mService.getDefaultDisplayContentLocked().getDockedDividerController()
- .notifyAppTransitionStarting(openingApps, closingApps);
+ .notifyAppTransitionStarting();
// Prolong the start for the transition when docking a task from recents, unless recents
// ended it already then we don't need to wait.
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index b4ead44..805c986 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -109,7 +109,6 @@
// Set to true when the token has been removed from the window mgr.
boolean removed;
- boolean appDied;
// Information about an application starting window if displayed.
StartingData startingData;
WindowState startingWindow;
@@ -458,12 +457,12 @@
void removeAllDeadWindows() {
for (int winNdx = allAppWindows.size() - 1; winNdx >= 0;
- // removeWindowLocked at bottom of loop may remove multiple entries from
- // allAppWindows if the window to be removed has child windows. It also may
- // not remove any windows from allAppWindows at all if win is exiting and
- // currently animating away. This ensures that winNdx is monotonically decreasing
- // and never beyond allAppWindows bounds.
- winNdx = Math.min(winNdx - 1, allAppWindows.size() - 1)) {
+ // removeWindowLocked at bottom of loop may remove multiple entries from
+ // allAppWindows if the window to be removed has child windows. It also may
+ // not remove any windows from allAppWindows at all if win is exiting and
+ // currently animating away. This ensures that winNdx is monotonically decreasing
+ // and never beyond allAppWindows bounds.
+ winNdx = Math.min(winNdx - 1, allAppWindows.size() - 1)) {
WindowState win = allAppWindows.get(winNdx);
if (win.mAppDied) {
if (DEBUG_WINDOW_MOVEMENT || DEBUG_ADD_REMOVE) {
@@ -476,6 +475,15 @@
}
}
+ boolean hasWindowsAlive() {
+ for (int i = allAppWindows.size() - 1; i >= 0; i--) {
+ if (!allAppWindows.get(i).mAppDied) {
+ return true;
+ }
+ }
+ return false;
+ }
+
void setReplacingWindows(boolean animate) {
if (DEBUG_ADD_REMOVE) Slog.d(TAG_WM, "Marking app token " + appWindowToken
+ " with replacing windows.");
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index c640b2a..45262d3 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -17,6 +17,7 @@
package com.android.server.wm;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
+import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.view.WindowManager.DOCKED_BOTTOM;
import static android.view.WindowManager.DOCKED_LEFT;
@@ -24,7 +25,6 @@
import static android.view.WindowManager.DOCKED_TOP;
import static com.android.server.wm.AppTransition.DEFAULT_APP_TRANSITION_DURATION;
import static com.android.server.wm.AppTransition.TOUCH_RESPONSE_INTERPOLATOR;
-import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerService.H.NOTIFY_DOCKED_STACK_MINIMIZED_CHANGED;
@@ -33,7 +33,6 @@
import android.graphics.Rect;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
-import android.util.ArraySet;
import android.util.Slog;
import android.view.DisplayInfo;
import android.view.IDockedStackListener;
@@ -369,44 +368,31 @@
* Notifies the docked stack divider controller of a visibility change that happens without
* an animation.
*/
- void notifyAppVisibilityChanged(AppWindowToken wtoken, boolean visible) {
- final Task task = wtoken.mTask;
- if (!task.isHomeTask() || !task.isVisibleForUser()) {
- return;
- }
-
- // If the app that having visibility change is not the top visible one in the task,
- // it does not affect whether the docked stack is minimized, ignore it.
- if (task.getTopAppToken() == null || task.getTopAppToken() != wtoken) {
- return;
- }
-
- // If the stack is completely offscreen, this might just be an intermediate state when
- // docking a task/launching recents at the same time, but home doesn't actually get
- // visible after the state settles in.
- if (isWithinDisplay(task)
- && mDisplayContent.getDockedStackVisibleForUserLocked() != null) {
- setMinimizedDockedStack(visible, false /* animate */);
- }
+ void notifyAppVisibilityChanged() {
+ checkMinimizeChanged(false /* animate */);
}
- void notifyAppTransitionStarting(ArraySet<AppWindowToken> openingApps,
- ArraySet<AppWindowToken> closingApps) {
- if (containsHomeTaskWithinDisplay(openingApps)) {
- setMinimizedDockedStack(true /* minimized */, true /* animate */);
- } else if (containsHomeTaskWithinDisplay(closingApps)) {
- setMinimizedDockedStack(false /* minimized */, true /* animate */);
- }
+ void notifyAppTransitionStarting() {
+ checkMinimizeChanged(true /* animate */);
}
- private boolean containsHomeTaskWithinDisplay(ArraySet<AppWindowToken> apps) {
- for (int i = apps.size() - 1; i >= 0; i--) {
- final Task task = apps.valueAt(i).mTask;
- if (task != null && task.isHomeTask()) {
- return isWithinDisplay(task);
- }
+ private void checkMinimizeChanged(boolean animate) {
+ final TaskStack homeStack = mDisplayContent.getHomeStack();
+ if (homeStack == null) {
+ return;
}
- return false;
+ final Task homeTask = homeStack.findHomeTask();
+ if (homeTask == null || !isWithinDisplay(homeTask)) {
+ return;
+ }
+ final TaskStack fullscreenStack
+ = mService.mStackIdToStack.get(FULLSCREEN_WORKSPACE_STACK_ID);
+ final ArrayList<Task> homeStackTasks = homeStack.getTasks();
+ final Task topHomeStackTask = homeStackTasks.get(homeStackTasks.size() - 1);
+ final boolean homeVisible = homeTask.getTopVisibleAppToken() != null;
+ final boolean homeBehind = (fullscreenStack != null && fullscreenStack.isVisibleLocked())
+ || (homeStackTasks.size() > 1 && topHomeStackTask != homeTask);
+ setMinimizedDockedStack(homeVisible && !homeBehind, animate);
}
private boolean isWithinDisplay(Task task) {
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 8d41dab..7ee26a0 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -125,9 +125,9 @@
mHomeTask = homeTask;
}
- private boolean hasAppTokensAlive() {
+ private boolean hasWindowsAlive() {
for (int i = mAppTokens.size() - 1; i >= 0; i--) {
- if (!mAppTokens.get(i).appDied) {
+ if (mAppTokens.get(i).hasWindowsAlive()) {
return true;
}
}
@@ -135,7 +135,7 @@
}
void removeLocked() {
- if (hasAppTokensAlive() && mStack.isAnimating()) {
+ if (hasWindowsAlive() && mStack.isAnimating()) {
if (DEBUG_STACK) Slog.i(TAG, "removeTask: deferring removing taskId=" + mTaskId);
mDeferRemoval = true;
return;
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index ae70aa8..222087d 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -204,7 +204,7 @@
: DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT;
mService.mActivityManager.moveTaskToDockedStack(
mTask.mTaskId, createMode, true /*toTop*/, true /* animate */,
- null /* initialBounds */);
+ null /* initialBounds */, false /* moveHomeStackFront */);
}
} catch(RemoteException e) {}
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 4224c57..6c80d1a 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -18,6 +18,7 @@
import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
+import static android.app.ActivityManager.StackId.HOME_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
import static android.content.res.Configuration.DENSITY_DPI_UNDEFINED;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
@@ -155,6 +156,19 @@
return mTasks;
}
+ Task findHomeTask() {
+ if (mStackId != HOME_STACK_ID) {
+ return null;
+ }
+
+ for (int i = mTasks.size() - 1; i >= 0; i--) {
+ if (mTasks.get(i).isHomeTask()) {
+ return mTasks.get(i);
+ }
+ }
+ return null;
+ }
+
/**
* Set the bounds of the stack and its containing tasks.
* @param stackBounds New stack bounds. Passing in null sets the bounds to fullscreen.
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 57f551c..dfe4421 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -2000,11 +2000,6 @@
return WindowManagerGlobal.ADD_INVALID_DISPLAY;
}
- if (atoken != null && atoken.appDied) {
- Slog.d(TAG_WM, "App is now revived: " + atoken);
- atoken.appDied = false;
- }
-
mPolicy.adjustWindowParamsLw(win.mAttrs);
win.setShowToOwnerOnlyLocked(mPolicy.checkShowToOwnerOnly(attrs));
@@ -2260,6 +2255,10 @@
}
void removeWindowLocked(WindowState win) {
+ removeWindowLocked(win, false);
+ }
+
+ void removeWindowLocked(WindowState win, boolean keepVisibleDeadWindow) {
win.mWindowRemovalAllowed = true;
if (DEBUG_ADD_REMOVE) Slog.v(TAG,
"removeWindowLocked: " + win + " callers=" + Debug.getCallers(4));
@@ -2317,7 +2316,7 @@
// If we are not currently running the exit animation, we need to see about starting one
wasVisible = win.isWinVisibleLw();
- if (win.shouldKeepVisibleDeadAppWindow()) {
+ if (keepVisibleDeadWindow) {
if (DEBUG_ADD_REMOVE) Slog.v(TAG_WM,
"Not removing " + win + " because app died while it's visible");
@@ -4348,7 +4347,7 @@
// doesn't mean that it goes through the normal app transition cycle so we have
// to inform the docked controller about visibility change.
getDefaultDisplayContentLocked().getDockedDividerController()
- .notifyAppVisibilityChanged(wtoken, visible);
+ .notifyAppVisibilityChanged();
}
}
@@ -4408,12 +4407,11 @@
wtoken.waitingToShow = false;
wtoken.hiddenRequested = !visible;
- if (!visible && wtoken.appDied) {
- // This app is dead while it was visible, we kept its dead window on screen.
+ if (!visible) {
+ // If the app is dead while it was visible, we kept its dead window on screen.
// Now that the app is going invisible, we can remove it. It will be restarted
// if made visible again.
- wtoken.appDied = false;
- wtoken.removeAllWindows();
+ wtoken.removeAllDeadWindows();
} else if (visible) {
if (!mAppTransition.isTransitionSet() && mAppTransition.isReady()) {
// Add the app mOpeningApps if transition is unset but ready. This means
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index dd88bea..6a2a91d 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1740,10 +1740,7 @@
WindowState win = mService.windowForClientLocked(mSession, mClient, false);
Slog.i(TAG, "WIN DEATH: " + win);
if (win != null) {
- if (win.mAppToken != null && !win.mAppToken.clientHidden) {
- win.mAppToken.appDied = true;
- }
- mService.removeWindowLocked(win);
+ mService.removeWindowLocked(win, shouldKeepVisibleDeadAppWindow());
if (win.mAttrs.type == TYPE_DOCK_DIVIDER) {
// The owner of the docked divider died :( We reset the docked stack,
// just in case they have the divider at an unstable position. Better
@@ -1761,8 +1758,7 @@
}
}
} catch (IllegalArgumentException ex) {
- // This will happen if the window has already been
- // removed.
+ // This will happen if the window has already been removed.
}
}
}
@@ -1773,7 +1769,7 @@
* interacts with it.
*/
boolean shouldKeepVisibleDeadAppWindow() {
- if (!isWinVisibleLw() || mAppToken == null || !mAppToken.appDied) {
+ if (!isWinVisibleLw() || mAppToken == null || mAppToken.clientHidden) {
// Not a visible app window or the app isn't dead.
return false;
}
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index e319407..a0784b5 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1448,7 +1448,7 @@
// the same app again before the app's surface is destroyed or saved, the surface
// is always ready in the whole process.) If we go ahead here, the opening app
// will be shown with the full size before the correct animation spec arrives.
- if (mService.mAppTransition.isReady() && isDummyAnimation() &&
+ if (mService.mAppTransition.isTransitionSet() && isDummyAnimation() &&
mService.mOpeningApps.contains(w.mAppToken)) {
return;
}
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java
index f2c995b..1feb816 100644
--- a/services/print/java/com/android/server/print/PrintManagerService.java
+++ b/services/print/java/com/android/server/print/PrintManagerService.java
@@ -836,6 +836,8 @@
BackgroundThread.getHandler().post(new Runnable() {
@Override
public void run() {
+ if (!mUserManager.isUserUnlockingOrUnlocked(userId)) return;
+
UserState userState;
synchronized (mLock) {
userState = getOrCreateUserStateLocked(userId, true);
diff --git a/services/print/java/com/android/server/print/UserState.java b/services/print/java/com/android/server/print/UserState.java
index 7182161..7a3ebf4 100644
--- a/services/print/java/com/android/server/print/UserState.java
+++ b/services/print/java/com/android/server/print/UserState.java
@@ -555,7 +555,11 @@
new PrintJobStateChangeListenerRecord(listener, appId) {
@Override
public void onBinderDied() {
- mPrintJobStateChangeListenerRecords.remove(this);
+ synchronized (mLock) {
+ if (mPrintJobStateChangeListenerRecords != null) {
+ mPrintJobStateChangeListenerRecords.remove(this);
+ }
+ }
}
});
}
@@ -639,7 +643,11 @@
new ListenerRecord<IRecommendationsChangeListener>(listener) {
@Override
public void onBinderDied() {
- mPrintServiceRecommendationsChangeListenerRecords.remove(this);
+ synchronized (mLock) {
+ if (mPrintServiceRecommendationsChangeListenerRecords != null) {
+ mPrintServiceRecommendationsChangeListenerRecords.remove(this);
+ }
+ }
}
});
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java
index 13518b5..ced7cf0 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java
@@ -56,11 +56,14 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.Manifest.permission;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.UserIdInt;
import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.IUidObserver;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -94,6 +97,7 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.test.InstrumentationTestCase;
+import android.test.MoreAsserts;
import android.test.mock.MockContext;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;
@@ -225,6 +229,7 @@
/** ShortcutService with injection override methods. */
private final class ShortcutServiceTestable extends ShortcutService {
final ServiceContext mContext;
+ IUidObserver mUidObserver;
public ShortcutServiceTestable(ServiceContext context, Looper looper) {
super(context, looper);
@@ -265,6 +270,13 @@
}
@Override
+ long injectElapsedRealtime() {
+ // TODO This should be kept separately from mInjectedCurrentTimeLillis, since
+ // this should increase even if we rewind mInjectedCurrentTimeLillis in some tests.
+ return mInjectedCurrentTimeLillis - START_TIME;
+ }
+
+ @Override
int injectBinderCallingUid() {
return mInjectedCallingUid;
}
@@ -295,6 +307,11 @@
}
@Override
+ void injectRegisterUidObserver(IUidObserver observer, int which) {
+ mUidObserver = observer;
+ }
+
+ @Override
PackageManagerInternal injectPackageManagerInternal() {
return mMockPackageManagerInternal;
}
@@ -324,6 +341,13 @@
}
@Override
+ void injectEnforceCallingPermission(String permission, String message) {
+ if (!mCallerPermissions.contains(permission)) {
+ throw new SecurityException("Missing permission: " + permission);
+ }
+ }
+
+ @Override
void wtf(String message, Exception e) {
// During tests, WTF is fatal.
fail(message + " exception: " + e);
@@ -493,6 +517,8 @@
private static final ShortcutQuery QUERY_ALL = new ShortcutQuery();
+ private final ArrayList<String> mCallerPermissions = new ArrayList<>();
+
static {
QUERY_ALL.setQueryFlags(
ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_PINNED);
@@ -561,6 +587,11 @@
initService();
setCaller(CALLING_PACKAGE_1);
+
+ // In order to complicate the situation, we set mLocaleChangeSequenceNumber to 1 by
+ // calling this. Running test with mLocaleChangeSequenceNumber == 0 might make us miss
+ // some edge cases.
+ mInternal.onSystemLocaleChangedNoLock();
}
private static UserInfo withProfileGroupId(UserInfo in, int groupId) {
@@ -761,7 +792,7 @@
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final PrintWriter pw = new PrintWriter(out);
- mService.dumpInner(pw);
+ mService.dumpInner(pw, null);
pw.close();
Log.e(TAG, "Dumping ShortcutService: " + message);
@@ -3546,17 +3577,17 @@
// Check the registered packages.
dumpsysOnLogcat();
assertEquals(set(CALLING_PACKAGE_1, CALLING_PACKAGE_2),
- hashSet(user0.getAllPackages().keySet()));
+ hashSet(user0.getAllPackagesForTest().keySet()));
assertEquals(set(CALLING_PACKAGE_1, CALLING_PACKAGE_2),
- hashSet(user10.getAllPackages().keySet()));
+ hashSet(user10.getAllPackagesForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_0, LAUNCHER_1),
PackageWithUser.of(USER_0, LAUNCHER_2)),
- hashSet(user0.getAllLaunchers().keySet()));
+ hashSet(user0.getAllLaunchersForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_10, LAUNCHER_1),
PackageWithUser.of(USER_10, LAUNCHER_2)),
- hashSet(user10.getAllLaunchers().keySet()));
+ hashSet(user10.getAllLaunchersForTest().keySet()));
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_1, USER_0),
"s0_1", "s0_2");
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_2, USER_0),
@@ -3578,17 +3609,17 @@
// No changes.
assertEquals(set(CALLING_PACKAGE_1, CALLING_PACKAGE_2),
- hashSet(user0.getAllPackages().keySet()));
+ hashSet(user0.getAllPackagesForTest().keySet()));
assertEquals(set(CALLING_PACKAGE_1, CALLING_PACKAGE_2),
- hashSet(user10.getAllPackages().keySet()));
+ hashSet(user10.getAllPackagesForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_0, LAUNCHER_1),
PackageWithUser.of(USER_0, LAUNCHER_2)),
- hashSet(user0.getAllLaunchers().keySet()));
+ hashSet(user0.getAllLaunchersForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_10, LAUNCHER_1),
PackageWithUser.of(USER_10, LAUNCHER_2)),
- hashSet(user10.getAllLaunchers().keySet()));
+ hashSet(user10.getAllLaunchersForTest().keySet()));
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_1, USER_0),
"s0_1", "s0_2");
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_2, USER_0),
@@ -3609,17 +3640,17 @@
mService.cleanUpPackageLocked(CALLING_PACKAGE_1, USER_0, USER_0);
assertEquals(set(CALLING_PACKAGE_2),
- hashSet(user0.getAllPackages().keySet()));
+ hashSet(user0.getAllPackagesForTest().keySet()));
assertEquals(set(CALLING_PACKAGE_1, CALLING_PACKAGE_2),
- hashSet(user10.getAllPackages().keySet()));
+ hashSet(user10.getAllPackagesForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_0, LAUNCHER_1),
PackageWithUser.of(USER_0, LAUNCHER_2)),
- hashSet(user0.getAllLaunchers().keySet()));
+ hashSet(user0.getAllLaunchersForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_10, LAUNCHER_1),
PackageWithUser.of(USER_10, LAUNCHER_2)),
- hashSet(user10.getAllLaunchers().keySet()));
+ hashSet(user10.getAllLaunchersForTest().keySet()));
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_1, USER_0),
"s0_2");
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_2, USER_0),
@@ -3640,16 +3671,16 @@
mService.cleanUpPackageLocked(LAUNCHER_1, USER_10, USER_10);
assertEquals(set(CALLING_PACKAGE_2),
- hashSet(user0.getAllPackages().keySet()));
+ hashSet(user0.getAllPackagesForTest().keySet()));
assertEquals(set(CALLING_PACKAGE_1, CALLING_PACKAGE_2),
- hashSet(user10.getAllPackages().keySet()));
+ hashSet(user10.getAllPackagesForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_0, LAUNCHER_1),
PackageWithUser.of(USER_0, LAUNCHER_2)),
- hashSet(user0.getAllLaunchers().keySet()));
+ hashSet(user0.getAllLaunchersForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_10, LAUNCHER_2)),
- hashSet(user10.getAllLaunchers().keySet()));
+ hashSet(user10.getAllLaunchersForTest().keySet()));
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_1, USER_0),
"s0_2");
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_2, USER_0),
@@ -3668,16 +3699,16 @@
mService.cleanUpPackageLocked(CALLING_PACKAGE_2, USER_10, USER_10);
assertEquals(set(CALLING_PACKAGE_2),
- hashSet(user0.getAllPackages().keySet()));
+ hashSet(user0.getAllPackagesForTest().keySet()));
assertEquals(set(CALLING_PACKAGE_1),
- hashSet(user10.getAllPackages().keySet()));
+ hashSet(user10.getAllPackagesForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_0, LAUNCHER_1),
PackageWithUser.of(USER_0, LAUNCHER_2)),
- hashSet(user0.getAllLaunchers().keySet()));
+ hashSet(user0.getAllLaunchersForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_10, LAUNCHER_2)),
- hashSet(user10.getAllLaunchers().keySet()));
+ hashSet(user10.getAllLaunchersForTest().keySet()));
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_1, USER_0),
"s0_2");
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_2, USER_0),
@@ -3696,16 +3727,16 @@
mService.cleanUpPackageLocked(LAUNCHER_2, USER_10, USER_10);
assertEquals(set(CALLING_PACKAGE_2),
- hashSet(user0.getAllPackages().keySet()));
+ hashSet(user0.getAllPackagesForTest().keySet()));
assertEquals(set(CALLING_PACKAGE_1),
- hashSet(user10.getAllPackages().keySet()));
+ hashSet(user10.getAllPackagesForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_0, LAUNCHER_1),
PackageWithUser.of(USER_0, LAUNCHER_2)),
- hashSet(user0.getAllLaunchers().keySet()));
+ hashSet(user0.getAllLaunchersForTest().keySet()));
assertEquals(
set(),
- hashSet(user10.getAllLaunchers().keySet()));
+ hashSet(user10.getAllLaunchersForTest().keySet()));
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_1, USER_0),
"s0_2");
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_2, USER_0),
@@ -3724,15 +3755,15 @@
mService.cleanUpPackageLocked(CALLING_PACKAGE_1, USER_10, USER_10);
assertEquals(set(CALLING_PACKAGE_2),
- hashSet(user0.getAllPackages().keySet()));
+ hashSet(user0.getAllPackagesForTest().keySet()));
assertEquals(set(),
- hashSet(user10.getAllPackages().keySet()));
+ hashSet(user10.getAllPackagesForTest().keySet()));
assertEquals(
set(PackageWithUser.of(USER_0, LAUNCHER_1),
PackageWithUser.of(USER_0, LAUNCHER_2)),
- hashSet(user0.getAllLaunchers().keySet()));
+ hashSet(user0.getAllLaunchersForTest().keySet()));
assertEquals(set(),
- hashSet(user10.getAllLaunchers().keySet()));
+ hashSet(user10.getAllLaunchersForTest().keySet()));
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_1, USER_0),
"s0_2");
assertShortcutIds(getLauncherPinnedShortcuts(LAUNCHER_2, USER_0),
@@ -4654,19 +4685,19 @@
private void checkBackupAndRestore_success() {
// Make sure non-system user is not restored.
final ShortcutUser userP0 = mService.getUserShortcutsLocked(USER_P0);
- assertEquals(0, userP0.getAllPackages().size());
- assertEquals(0, userP0.getAllLaunchers().size());
+ assertEquals(0, userP0.getAllPackagesForTest().size());
+ assertEquals(0, userP0.getAllLaunchersForTest().size());
// Make sure only "allowBackup" apps are restored, and are shadow.
final ShortcutUser user0 = mService.getUserShortcutsLocked(USER_0);
- assertExistsAndShadow(user0.getAllPackages().get(CALLING_PACKAGE_1));
- assertExistsAndShadow(user0.getAllPackages().get(CALLING_PACKAGE_2));
- assertExistsAndShadow(user0.getAllLaunchers().get(PackageWithUser.of(USER_0, LAUNCHER_1)));
- assertExistsAndShadow(user0.getAllLaunchers().get(PackageWithUser.of(USER_0, LAUNCHER_2)));
+ assertExistsAndShadow(user0.getAllPackagesForTest().get(CALLING_PACKAGE_1));
+ assertExistsAndShadow(user0.getAllPackagesForTest().get(CALLING_PACKAGE_2));
+ assertExistsAndShadow(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_0, LAUNCHER_1)));
+ assertExistsAndShadow(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_0, LAUNCHER_2)));
- assertNull(user0.getAllPackages().get(CALLING_PACKAGE_3));
- assertNull(user0.getAllLaunchers().get(PackageWithUser.of(USER_0, LAUNCHER_3)));
- assertNull(user0.getAllLaunchers().get(PackageWithUser.of(USER_P0, LAUNCHER_1)));
+ assertNull(user0.getAllPackagesForTest().get(CALLING_PACKAGE_3));
+ assertNull(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_0, LAUNCHER_3)));
+ assertNull(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_P0, LAUNCHER_1)));
installPackage(USER_0, CALLING_PACKAGE_1);
runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -5285,6 +5316,361 @@
});
}
+ public void testThrottling_localeChanges() {
+ prepareCrossProfileDataSet();
+
+ dumpsysOnLogcat("Before save & load");
+
+ mService.saveDirtyInfo();
+ initService();
+
+ final long origSequenceNumber = mService.getLocaleChangeSequenceNumber();
+
+ mInternal.onSystemLocaleChangedNoLock();
+
+ assertEquals(origSequenceNumber + 1, mService.getLocaleChangeSequenceNumber());
+
+ // Note at this point only user-0 is loaded, and the counters are reset for this user,
+ // but it will work for other users too, because we persist when
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+
+ mService.saveDirtyInfo();
+ initService();
+
+ // Make sure the counter is persisted.
+ assertEquals(origSequenceNumber + 1, mService.getLocaleChangeSequenceNumber());
+ }
+
+ public void testThrottling_foreground() throws Exception {
+ prepareCrossProfileDataSet();
+
+ dumpsysOnLogcat("Before save & load");
+
+ mService.saveDirtyInfo();
+ initService();
+
+ // We need to update the current time from time to time, since some of the internal checks
+ // rely on the time being correctly incremented.
+ mInjectedCurrentTimeLillis++;
+
+ // First, all packages have less than 3 (== initial value) remaining calls.
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ mInjectedCurrentTimeLillis++;
+
+ // State changed, but not foreground, so no resetting.
+ mService.mUidObserver.onUidStateChanged(
+ CALLING_UID_1, ActivityManager.PROCESS_STATE_TOP_SLEEPING);
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ mInjectedCurrentTimeLillis++;
+
+ // State changed, package1 foreground, reset.
+ mService.mUidObserver.onUidStateChanged(
+ CALLING_UID_1, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ mService.mUidObserver.onUidStateChanged(
+ CALLING_UID_1, ActivityManager.PROCESS_STATE_TOP_SLEEPING);
+
+ mInjectedCurrentTimeLillis++;
+
+ // Different app comes to foreground briefly, and goes back to background.
+ // Now, make sure package 2's counter is reset, even in this case.
+ mService.mUidObserver.onUidStateChanged(
+ CALLING_UID_2, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
+ mService.mUidObserver.onUidStateChanged(
+ CALLING_UID_2, ActivityManager.PROCESS_STATE_TOP_SLEEPING);
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ mInjectedCurrentTimeLillis++;
+
+ // Do the same thing one more time. This would catch the bug with mixuing up
+ // the current time and the elapsed time.
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ mManager.updateShortcuts(list(makeShortcut("s")));
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ mService.mUidObserver.onUidStateChanged(
+ CALLING_UID_2, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
+ mService.mUidObserver.onUidStateChanged(
+ CALLING_UID_2, ActivityManager.PROCESS_STATE_TOP_SLEEPING);
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ mInjectedCurrentTimeLillis++;
+
+ // Package 1 on user-10 comes to foreground.
+ // Now, also try calling some APIs and make sure foreground apps don't get throttled.
+ mService.mUidObserver.onUidStateChanged(
+ UserHandle.getUid(USER_10, CALLING_UID_1),
+ ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(0, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(0, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(0, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(0, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(0, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+ mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+ assertEquals(3, mManager.getRemainingCallCount()); // Still 3!
+ });
+ }
+
+
+ public void testThrottling_resetByInternalCall() throws Exception {
+ prepareCrossProfileDataSet();
+
+ dumpsysOnLogcat("Before save & load");
+
+ mService.saveDirtyInfo();
+ initService();
+
+ // First, all packages have less than 3 (== initial value) remaining calls.
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ // Simulate a call from sys UI.
+ mCallerPermissions.add(permission.RESET_SHORTCUT_MANAGER_THROTTLING);
+ mService.onApplicationActive(CALLING_PACKAGE_1, USER_0);
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ mService.onApplicationActive(CALLING_PACKAGE_3, USER_0);
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+
+ mService.onApplicationActive(CALLING_PACKAGE_1, USER_10);
+
+ runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
+ MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
+ });
+ runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+ assertEquals(3, mManager.getRemainingCallCount());
+ });
+ }
+
+ public void testOnApplicationActive_permission() {
+ assertExpectException(SecurityException.class, "Missing permission", () ->
+ mService.onApplicationActive(CALLING_PACKAGE_1, USER_0));
+
+ // Has permission, now it should pass.
+ mCallerPermissions.add(permission.RESET_SHORTCUT_MANAGER_THROTTLING);
+ mService.onApplicationActive(CALLING_PACKAGE_1, USER_0);
+ }
+
// ShortcutInfo tests
public void testShortcutInfoMissingMandatoryFields() {
@@ -5324,7 +5710,7 @@
si = new ShortcutInfo.Builder(getTestContext())
.setId("id")
.setActivityComponent(new ComponentName("a", "b"))
- .setIcon(Icon.createWithContentUri("content://a.b.c/"))
+ .setIcon(Icon.createWithResource(mClientContext, 123))
.setTitle("title")
.setText("text")
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
@@ -5341,7 +5727,7 @@
assertEquals(getTestContext().getPackageName(), si.getPackageName());
assertEquals("id", si.getId());
assertEquals(new ComponentName("a", "b"), si.getActivityComponent());
- assertEquals("content://a.b.c/", si.getIcon().getUriString());
+ assertEquals(123, si.getIcon().getResId());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
@@ -5363,7 +5749,7 @@
ShortcutInfo sorig = new ShortcutInfo.Builder(mClientContext)
.setId("id")
.setActivityComponent(new ComponentName("a", "b"))
- .setIcon(Icon.createWithContentUri("content://a.b.c/"))
+ .setIcon(Icon.createWithResource(mClientContext, 123))
.setTitle("title")
.setText("text")
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
@@ -5382,7 +5768,7 @@
assertEquals(mClientContext.getPackageName(), si.getPackageName());
assertEquals("id", si.getId());
assertEquals(new ComponentName("a", "b"), si.getActivityComponent());
- assertEquals("content://a.b.c/", si.getIcon().getUriString());
+ assertEquals(123, si.getIcon().getResId());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
@@ -5498,7 +5884,7 @@
ShortcutInfo sorig = new ShortcutInfo.Builder(getTestContext())
.setId("id")
.setActivityComponent(new ComponentName("a", "b"))
- .setIcon(Icon.createWithContentUri("content://a.b.c/"))
+ .setIcon(Icon.createWithResource(mClientContext, 123))
.setTitle("title")
.setText("text")
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
@@ -5520,9 +5906,9 @@
si = sorig.clone(/* flags=*/ 0);
si.copyNonNullFieldsFrom(new ShortcutInfo.Builder(getTestContext()).setId("id")
- .setIcon(Icon.createWithContentUri("content://x.y.z/")).build());
+ .setIcon(Icon.createWithResource(mClientContext, 456)).build());
assertEquals("text", si.getText());
- assertEquals("content://x.y.z/", si.getIcon().getUriString());
+ assertEquals(456, si.getIcon().getResId());
si = sorig.clone(/* flags=*/ 0);
si.copyNonNullFieldsFrom(new ShortcutInfo.Builder(getTestContext()).setId("id")
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
index 612e5e8..002b0e2 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
@@ -103,7 +103,6 @@
// Whether we have ANY recognition (keyphrase or generic) running.
private boolean mRecognitionRunning = false;
- private boolean mRecognitionAborted = false;
private PowerSaveModeListener mPowerSaveModeListener;
SoundTriggerHelper(Context context) {
@@ -415,10 +414,10 @@
}
IRecognitionStatusCallback currentCallback = modelData.getCallback();
- if (modelData == null || currentCallback == null || !modelData.isModelStarted()) {
+ if (modelData == null || currentCallback == null ||
+ (!modelData.isRequested() && !modelData.isModelStarted())) {
// startGenericRecognition hasn't been called or it failed.
- Slog.w(TAG, "Attempting stopGenericRecognition without a successful" +
- " startGenericRecognition");
+ Slog.w(TAG, "Attempting stopRecognition without a successful startRecognition");
return STATUS_ERROR;
}
@@ -499,9 +498,12 @@
int status = stopRecognitionLocked(model,
false /* do not notify for synchronous calls */);
if (status != STATUS_OK) {
- Slog.w(TAG, "Error stopping keyphrase model: " + model.getHandle());
+ Slog.w(TAG, "Error stopping model: " + model.getHandle());
}
- model.clearState();
+ model.setStopped();
+ model.setRequested(false);
+ model.clearCallback();
+ model.setRecognitionConfig(null);
}
}
internalClearGlobalStateLocked();
@@ -588,28 +590,26 @@
if (!(event instanceof KeyphraseRecognitionEvent) &&
!(event instanceof GenericRecognitionEvent)) {
- Slog.w(TAG, "Invalid recognition event type (not one of generic or keyphrase) !");
+ Slog.w(TAG, "Invalid recognition event type (not one of generic or keyphrase)!");
return;
}
if (DBG) Slog.d(TAG, "onRecognition: " + event);
synchronized (mLock) {
switch (event.status) {
- // Fire aborts/failures to all listeners since it's not tied to a keyphrase.
case SoundTrigger.RECOGNITION_STATUS_ABORT:
- onRecognitionAbortLocked();
+ onRecognitionAbortLocked(event);
break;
case SoundTrigger.RECOGNITION_STATUS_FAILURE:
+ // Fire failures to all listeners since it's not tied to a keyphrase.
onRecognitionFailureLocked();
break;
case SoundTrigger.RECOGNITION_STATUS_SUCCESS:
-
if (isKeyphraseRecognitionEvent(event)) {
onKeyphraseRecognitionSuccessLocked((KeyphraseRecognitionEvent) event);
} else {
onGenericRecognitionSuccessLocked((GenericRecognitionEvent) event);
}
-
break;
}
}
@@ -654,7 +654,7 @@
model.setRequested(config.allowMultipleTriggers);
// TODO: Remove this block if the lower layer supports multiple triggers.
- if (model.getRequested()) {
+ if (model.isRequested()) {
updateRecognitionLocked(model, isRecognitionAllowed() /* isAllowed */,
true /* notify */);
}
@@ -720,12 +720,13 @@
updateAllRecognitionsLocked(true /* notify */);
}
- private void onRecognitionAbortLocked() {
+ private void onRecognitionAbortLocked(RecognitionEvent event) {
Slog.w(TAG, "Recognition aborted");
MetricsLogger.count(mContext, "sth_recognition_aborted", 1);
- // If abort has been called, the hardware has already stopped recognition, so we shouldn't
- // call it again when we process the state change.
- mRecognitionAborted = true;
+ ModelData modelData = getModelDataForLocked(event.soundModelHandle);
+ if (modelData != null) {
+ modelData.setStopped();
+ }
}
private void onRecognitionFailureLocked() {
@@ -786,7 +787,7 @@
modelData.setRequested(config.allowMultipleTriggers);
}
// TODO: Remove this block if the lower layer supports multiple triggers.
- if (modelData.getRequested()) {
+ if (modelData.isRequested()) {
updateRecognitionLocked(modelData, isRecognitionAllowed(), true /* notify */);
}
}
@@ -800,7 +801,7 @@
private int updateRecognitionLocked(ModelData model, boolean isAllowed,
boolean notify) {
- boolean start = model.getRequested() && isAllowed;
+ boolean start = model.isRequested() && isAllowed;
if (start == model.isModelStarted()) {
// No-op.
return STATUS_OK;
@@ -1023,19 +1024,11 @@
private int stopRecognitionLocked(ModelData modelData, boolean notify) {
IRecognitionStatusCallback callback = modelData.getCallback();
- // Stop recognition (only if we haven't been aborted).
+ // Stop recognition.
int status = STATUS_OK;
- // This logic for "recognition aborted" now works for both generic and keyphrase models.
- // The idea here is to "skip" the stopRecognition() call if the lower layer has
- // aborted recognition. Also we "consume" the abort state as well, so if there is another
- // stopRecognition() request, it will go through -- this seems to have been the previously
- // intended design.
- if (!mRecognitionAborted) {
- status = mModule.stopRecognition(modelData.getHandle());
- } else {
- mRecognitionAborted = false;
- }
+ status = mModule.stopRecognition(modelData.getHandle());
+
if (status != SoundTrigger.STATUS_OK) {
Slog.w(TAG, "stopRecognition call failed with " + status);
MetricsLogger.count(mContext, "sth_stop_recognition_error", 1);
@@ -1218,7 +1211,7 @@
}
// Whether a start recognition was requested.
- synchronized boolean getRequested() {
+ synchronized boolean isRequested() {
return mRequested;
}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 343b110..5fed594 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -24,6 +24,7 @@
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.BatteryStats;
import android.os.ResultReceiver;
@@ -183,6 +184,7 @@
/**
* Returns the number of phones available.
+ * Returns 0 if none of voice, sms, data is not supported
* Returns 1 for Single standby mode (Single SIM functionality)
* Returns 2 for Dual standby mode.(Dual SIM functionality)
*/
@@ -190,7 +192,28 @@
int phoneCount = 1;
switch (getMultiSimConfiguration()) {
case UNKNOWN:
- phoneCount = 1;
+ // if voice or sms or data is supported, return 1 otherwise 0
+ if (isVoiceCapable() || isSmsCapable()) {
+ phoneCount = 1;
+ } else {
+ // todo: try to clean this up further by getting rid of the nested conditions
+ if (mContext == null) {
+ phoneCount = 1;
+ } else {
+ // check for data support
+ ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(
+ Context.CONNECTIVITY_SERVICE);
+ if (cm == null) {
+ phoneCount = 1;
+ } else {
+ if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
+ phoneCount = 1;
+ } else {
+ phoneCount = 0;
+ }
+ }
+ }
+ }
break;
case DSDS:
case DSDA: